
Hallo Kameraden, Ich suchen nach einem Skript zum Suchen und löschen von Dateien Mit find /home/stefan/ -name *.txt~ finde ich die als Backup gesicherten Textdateien. Wie kann ich die gefunden Dateien an rm zum Löschen übergeben. Vielen Dank und schönen Sontag Stefan ---- -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org

Am Sonntag, 22. Februar 2009 18:22:29 schrieb David Haller:
Danke an alle. Was mir die Shell unter den verschiedenen Anführungszeichen ausgibt!!! ~> echo "find $HOME -name *.txt~" find /home/stefan -name *.txt~ ~> echo `find $HOME -name *.txt~` /home/stefan/Documents/OrdnerX /Hutgröße.txt~ /home/stefan/Documents/Linux/fdsk/ Festplatte01.txt~ /home/stefan/Documents/Linux/fdsk/ Bootloader-081120.txt~ /home/stefan/Documents/Linux/ Probleme/Einwahl-0812-07.txt~ /usw. ~> echo 'Die Variable HOME hat den Wert $HOME' Die Variable HOME hat den Wert $HOME ~> echo `Die Variable HOME hat den Wert $HOME` bash: Die: command not found ~> echo "Die Variable HOME hat den Wert $HOME" Die Variable HOME hat den Wert /home/stefan Unter den doppelten Anführungszeichen gibt er die Variable aus, aber führt er den Befehl nicht aus. Unter den einfachen führt er den Befehl aus Unten führen dagegen die einfachen zu einer Fehlemeldung. rm `find /home/stefan/ -name *.txt~` ist richtig. Gruß an alle Stefan -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org

Hallo, Am Son, 22 Feb 2009, Stefan Plenert schrieb:
NEIN. Und zwar gleich mehrfach. a) das *.txt~ wird von der shell expandiert, bevor find das zu sehen bekommt: $ set -x $ ls `find . -name *.txt~` ++ find . -name 'foo bar.txt~' foo.txt~ find: paths must precede expression Usage: find [path...] [expression] Wenn man a) korrigiert, dann b) versagt es bei Dateinamen mit Leer- und anderen Sonderzeichen: $ ls `find . -name '*.txt~'` ++ find . -name '*.txt~' + ls -N -T 0 ./foo.txt~ ./foo bar.txt~ ls: ./foo: No such file or directory ls: bar.txt~: No such file or directory ./foo.txt~ c) kann man wg. fehlendem Quoting fiese Dateinamen einschmuggeln. Korrekt sind (NUR): find /pfad -name '*.txt~' -exec rm '{}' \; find /pfad -name '*.txt~' -exec rm '{}' + find /pfad -name '*.txt~' -print0 | xargs -r -0 rm sowie die ersten beiden mit '-ok' statt '-exec'. Das mittlere geht nur mit BSD find (und sehr neuen GNU finds, IIRC), das letztere geht nur mit GNU find und GNU xargs. Das erste geht überall, ist aber gruselig langsam. Ein '-delete' hat mein GNU find nicht, neuere und BSD finds sollten das aber haben. Stefan, lese _DRINGEND_ den Abschnitt QUOTING in 'man bash'. Komplett. So oft bis du verstanden hast, was \, "", '', `` und $() machen. -dnh -- "The Universe says simply, but with every possible complication, 'Existence' and it neither pressures us nor draws us out, except as we allow. It all boils down to nothing, and where we have the means and will to fix our reference within that flux, then there we are. Let me be part of that outrageous chaos... and I am." -- Iain M. Banks -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org

Am Montag, 23. Februar 2009 00:33:50 schrieb David Haller:
$ set -x ?
Danke für den Tip, hat nur ein Fehler, ich habe Suse in deutsch, weil ich so gut wie kein Englisch kann.
-dnh
--
Hallo David, aus O'Reillys Taschenbibliothek LINUX KURZ & GUT Quoting Normalweise behandelt die Shell Leerstellen einfach als Trennsymbole der Wörter auf der Kommandozeile. Falls Sie wollen, dass ein Wort Leerstellen enthält (z.B. Dateiname mit einer Leerstelle), setzen Sie es in einfache oder doppelte Anführungszeichen, damit es die Shell als eine Einheit betrachtet. Einfache Anführungszeichen behandeln den Inhalt wörtlich, während bei doppelten Anführendzeichen Shell-Konstrukte wie Variablen ausgewertet werden: $ echo 'Die Variable HOME hat den Wert $HOME' Die Variable HOME hat den Wert $HOME $ echo "Die Variable HOME hat den Wert $HOME" Die Variable HOME hat den Wert /home/schmidt Bei Backquotes wird der Inhalt als ein Befehl betrachtet und durch die Standardausgabe des Befehls ersetzt. $ /usr/bin/whoami schmidt $ echo Mein Name ist `/usr/bin/whoami` Mein Name ist schmidt
b) versagt es bei Dateinamen mit Leer- und anderen Sonderzeichen
Hier probiere ich noch was in der Shell aus. Platzhalter * jede Art und Menge von Zeichen außer einem führenden Punkt Jede Art von Zeichen und damit nicht auch Leerzeichen? Ist *.txt~ im Quoting nicht doppeltgemoppelt? Ich nahm find mit der Option -delete Gruß Stefan -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org

Hallo Freunde d. Liste, Das Script habe ich jetzt, bloß jetzt habe ich ein neues Problem Das Protokol $ find /home/stefan -name *.txt~ /home/stefan/Documents/Linux/forum/Shell/Bash-Script-Frage.txt~ $ find /home/stefan -name *.txt find: Der Pfad muß vor dem Suchkriterium stehen. Usage: find [-H] [-L] [-P] [path...] [expression] Das Script #!/bin/bash find /home/stefan -name *.txt~ -delete bei *.ods und *.odt gab es keine Probleme, nur bei *.txt gibt es eine Fehlermeldung. Danke uns schönen Tag Stefan -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org

Stefan Plenert wrote:
Du benutzt das immer noch falsch! (Hatte David dir doch IIRC auch geschrieben). Bei deinem Aufruf "sucht" find gar nicht richtig, da der Ausdruck *.txt (oder *.txt~) bereits in der shell expandiert wird. Du muss dem find den Ausdruck *.txt übergeben OHNE das die Shell den "*" expandiert! Also richtig wäre a) find /home/stefan -name \*.txt oder b) find /home/stefan -name "*.txt" Wenn es im aktuellen Verzeichnis keine *.txt Dateien gibt, wird bei deinem Aufruf find wie folgt aufgerufen: find /home/stefan -name (*.txt expandiert zu NULL) Andreas -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org

Hi Kyek,! On Tue, 24 Feb 2009, Kyek, Andreas, VF-DE wrote:
Nicht ganz korrekt und ist wohl shell spezifisch. Bei der Bash gilt das nur, wenn nullglob gesetzt ist und das ist es per default nicht. Wenn also glob(*.txt) das Pattern nicht auflösen kann, wird es normalerweise so an den Prozess weitergegeben. IIRC fordert SuSv auch genau dieses Verhalten. Mit freundlichen Grüßen Christian -- hundred-and-one symptoms of being an internet addict: 127. You bring your laptop and cellular phone to church. -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org

Hallo Am Dienstag, 24. Februar 2009 09:10:03 schrieb Kyek, Andreas, VF-DE:
Hatte erst /*.txt und Fehlermeldung, und sah nachher, dass ich den Schrägstrich anders setzen muss. Zeigt jetzt auch versteckte Dateien an.
oder b) find /home/stefan -name "*.txt"
Geht und c) find ~ -name '*.txt' geht auch.
Ich muss gestehen, was David mir schreibt ist mir etwas zu kompliziert, dazu sind meine Kenntnisse in der Shell und in Englisch zu gering.
'man bash' wird in englisch ausgegeben. Danke Gruß Stefan --------- -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org

Hallo, Am Die, 24 Feb 2009, Stefan Plenert schrieb:
Ich muss gestehen, was David mir schreibt ist mir etwas zu kompliziert, dazu sind meine Kenntnisse in der Shell und in Englisch zu gering.
Dann frage, was genau du nicht verstehst -- aber lies auch die Antworten. Ich habe die Ursache und die Lösung(en) zu deinem Problem schon längst geschrieben. -dnh -- Perl. Die einzige interpretierte Sprache, wo alle Programme Closed Source sind, weil es keiner lesen kann. -- Till Potinius -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org

Am Mittwoch, 25. Februar 2009 01:17:12 schrieb David Haller:
Was ist BSD, GNU und IIRC?
Ein '-delete' hat mein GNU find nicht, neuere und BSD finds sollten das aber haben.
Unter man und help habe ich es auch nicht, aber es geht trotzdem. Das andere habe ich in Workshops und Bücher herausgefunden.
Am Son, 22 Feb 2009, Felix Lemke schrieb:
rm `find /home/stefan/ -name *.txt~`
rm 'find..' - erst löschen, dann finden ? ls 'find..' - ls, erst Eigenschaften der Datei angeben, dann finden? Die Reihenfolge muss andersherum sein. find..... && ls oder find.... ; ls Kombinationen von Befehlen anders bei echo echo 'find..' Während ls bei der Inhaltsangabe oder find keine Probleme mit Leer- und sonderzeichen haben, ist es bei rm anders. $ rm su&ls.01 [1] 5148 rm: Entfernen von „su“ nicht möglich: Datei oder Verzeichnis nicht gefunden bash: ls.01: command not found rm 'Datei' Daher ist die Übergabe der Datei an rm etwas komplizierter. mfg Stefan -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org

Hallo Stefan,
http://de.wikipedia.org/wiki/GNU-Projekt http://de.wikipedia.org/wiki/Berkeley_Software_Distribution http://de.wikipedia.org/wiki/IIRC#I Erstaunlich, was schon _eine_ Quelle so hergibt... Gruß, Michael -- ____ / / / / /__/ Michael Höhne / / / / / / mih-hoehne@web.de / ________________________________/ -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org

Hallo, Am Don, 26 Feb 2009, Stefan Plenert schrieb:
http://de.wikipedia.org/wiki/Berkeley_Software_Distribution http://de.wikipedia.org/wiki/GNU http://de.wikipedia.org/wiki/IIRC Zum Rest nur: *auhauerhauerha* *WEIA* Lies bitte http://www.selflinux.org/selflinux/html/shellprogrammierung.html und/oder http://de.wikibooks.org/wiki/Linux-Kompendium:_Shellprogrammierung Und versuche es Schritt für Schritt zu verstehen, was ich bisher in diesem Thread geschrieben habe -- und vergiss ganz schnell das von Felix. Und frage dann _spezifisch_. Und nicht so konfus wie in dieser letzte Mail. -dnh -- When in doubt, debug-on-entry the function you least suspect have anything to do with something. -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org

Am Freitag, 27. Februar 2009 03:54:35 schrieb David Haller:
Hallo,
Am Mittwoch, 25. Februar 2009 01:17:12 schrieb David Haller:
Recht interessante Seiten. Merke ich mir vor. Linux-Kompendium hat suchen, was noch besser ist.
Ich sagte ja, mein Englisch ist gering. Werde noch eins ausprobieren: Alles löschen Bei der Eingabe von rm -rf * werden vom aktuellen Verzeichnis ausgehend alle Dateien und Unterverzeichnisse ohne Rückfrage gelöscht. Auch diese Variante kann viel Ärger anrichten. aus Linux-Kompendium. Ich schrieb ja: ls und find akzeptieren Dateien mit Leer- u. Sonderzeichen, rem nicht. Hier muss ich zum löschen von Dateien mit Leerzeichen und Sonderzeichen in Anführungsstriche setzten. Gruß Stefan -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org

Am Fri, 27 Feb 2009 22:43:41 +0100 schriebst Du:
Ich schrieb ja: ls und find akzeptieren Dateien mit Leer- u. Sonderzeichen, rem nicht.
Du hast es offensichtlich immer noch nicht begriffen denn das ist falsch! Das Problem ist nicht der aufzurufende Befehl sondern die Shell! Auch ls wird Dateinamen mit ungeschützten Leerzeichen als mehrere Dateinamen interpretieren und nur deshalb nicht meckern, weil man ls mehrere Namen angeben kann. *Grundsätzlich* müssen Leerzeichen und bestimmten Sonderzeichen ihre besondere Bedeutung für die Shell genommen werden, damit sie einfach unverändert weitergereicht werden. Und man entschärft diese Leichen, indem man ihnen entweder ein \ voran stellt oder den ganzen Begriff in einfache (' ') oder doppelte (" ") Anführungszeichen setzt. Philipp -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org

Am Samstag, 28. Februar 2009 12:45:51 schrieb Philipp Thomas:
Was sagt der Workshop 1. ls :~/ws> ls su $ ls.01 su@ls.01 su&ls.01 su u ls.01 su-u-ls.01 ls Angabe des Inhalts ist Fehlerfrei 2. find stefan@linux-6ric:~> find $HOME -name *.01 /home/stefan/ws/su@ls.01 /home/stefan/ws/su $ ls.01 /home/stefan/ws/su-u-ls.01 /home/stefan/ws/su u ls.01 /home/stefan/ws/su&ls.01 In der Shell wird unter find Platzhalter behandelt und * als Platzhalter für jede Art und Menge von Zeichen, außer Punkt am Anfang angegeben. 3. ls `find...` Backquoting stefan@linux-6ric:~> ls `find $HOME -name '*.01'` ls: Zugriff auf /home/stefan/ws/su nicht möglich: Datei oder Verzeichnis nicht gefunden ls: Zugriff auf $ nicht möglich: Datei oder Verzeichnis nicht gefunden ls: Zugriff auf ls.01 nicht möglich: Datei oder Verzeichnis nicht gefunden ls: Zugriff auf /home/stefan/ws/su nicht möglich: Datei oder Verzeichnis nicht gefunden ls: Zugriff auf u nicht möglich: Datei oder Verzeichnis nicht gefunden ls: Zugriff auf ls.01 nicht möglich: Datei oder Verzeichnis nicht gefunden /home/stefan/ws/su@ls.01 /home/stefan/ws/su&ls.01 /home/stefan/ws/su-u-ls.01 ls und find als Backquoting führen zu Fehlerausgaben, auch mit Anführungszeichen. 4. find && ls Kombination von Befehlen :~> find -name *.01 && ls ./ws/su@ls.01 ./ws/su $ ls.01 ./ws/su-u-ls.01 ./ws/su u ls.01 ./ws/su&ls.01 01.sh 01.txt Bilder bin Desktop Documents Festplatte Find Fonts-L Music nautilus-debug-log.txt public_html Updater workshops ws Kombination von Befehlen. Die gefundenen Dateien werden ausgegeben und der Inhalt des Verzeichnisses 5. echo `find..` Bachquoting :~> echo `find $HOME -name *.01` /home/stefan/ws/su@ls.01 /home/stefan/ws/su $ ls.01 /home/stefan/ws/su-u-ls.01 /home/stefan/ws/su u ls.01 /home/stefan/ws/su&ls.01 echo und Backquoting wird sauber ausgeführt. 5. rm :~/ws> ls su $ ls.01 su@ls.01 su&ls.01 su u ls.01 su-u-ls.01 :~/ws> :~/ws> rm su $ ls.01 rm: Entfernen von „su“ nicht möglich: Datei oder Verzeichnis nicht gefunden rm: Entfernen von „$“ nicht möglich: Datei oder Verzeichnis nicht gefunden rm: Entfernen von „ls.01“ nicht möglich: Datei oder Verzeichnis nicht gefunden :~/ws> rm su@ls.01 :~/ws> rm su&ls.01 [1] 5297 rm: Entfernen von „su“ nicht möglich: Datei oder Verzeichnis nicht gefunden bash: ls.01: command not found [1]+ Exit 1 rm su :~/ws> rm su u ls.01 rm: Entfernen von „su“ nicht möglich: Datei oder Verzeichnis nicht gefunden rm: Entfernen von „u“ nicht möglich: Datei oder Verzeichnis nicht gefunden rm: Entfernen von „ls.01“ nicht möglich: Datei oder Verzeichnis nicht gefunden :~/ws> rm su-u-ls.01 :~/ws> ls su $ ls.01 su&ls.01 su u ls.01 Das einzelne löschen der Dateien mit rm zeigt mir, welche ohne Probleme gehen und welche nicht. Hier ist es besser statt rm Datei lieber rm 'Datei' einzugeben 6. Resümee Die Reaktion von rm auf die einzelnen Dateien zeigt mir, warum die Kombination von Befehlen wie bei ls nicht hier nicht geht. 2. Zeigt die Ausgabe von find. Auch wenn ich '*.01' angebe, die Ausgabe (su $ lö.01) bleibt die gleiche. Ich muss die Ausgabe su $ lö.01 in 'su $ lö.01' umwandeln und kann sie dann löschen. Ich begriff die Aufgabe von exec und xargs. Der Workshop zeigt wie die Befehle für sich mit den einzelnen Dateien fertig werden. Gruß Stefan -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org

Am Sat, 28 Feb 2009 23:04:10 +0100 schriebst Du:
Ich schrieb ja: ls und find akzeptieren Dateien mit Leer- u. Sonderzeichen, rem nicht.
rm akzeptiert sehr wohl Leer- und Sonderzeichen in Dateinamen. ein rm a\ b\ \$ bzw rm 'a b $' werden akteptiert, sofern es eine Datei dieses Namens gibt. Verwendest Du 'rm -f' meckert es nicht mal bei fehlen einer passenden Datei. Du musst nur dafür sorgen, dass die Shell die Parameter unverändert weiter reicht ohne sie selber zu expandieren. Umgekehrt kann ls Platzhalter (Wildcards) nicht expandieren, daher funktioniert zwar 'find \*.01' aber nicht 'ls \*.01'. Es sei denn, es existiert tatsächlich eine Datei mit Namen *.01. Ansonsten verstehe ich nicht ganz, was Du mit all den Beispielen aussagen willst. Philipp -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org

Hallo, Am Sam, 28 Feb 2009, Stefan Plenert schrieb:
Das gilt für den gesamten Rest des Textes. Das ist einfach nur gruselig. $ set -x $ touch foo.01 find $HOME -name *.01 > find.ausgabe Überlege dir, was die Ausgabe von 'set -x' bedeutet. Und warum was in 'find.ausgabe' steht. Komm wieder, wenn du die von mir schon oft geschriebenen Dinge nachgelesen und verstanden hast. BTW: von was für einem "Workshop" redest du überhaupt? BTW2: ich hab keine Geduld mehr. Du läßt jedes Anzeichen vermissen, daß du meine und die Mails der anderen liest und versuchst zu verstehen. Du hast dir auch offenbar nie die Frage 'warum?' gestellt, wenn du eine Fehlermeldung bekommst. Du schreibst hier nur (konfus) deine gruseligen Vorstellungen hin. Dies ist meine letzte Antwort, wenn du das oben angesprochene nicht _ENDLICH_ angehst/abstellst. -dnh -- BE MAD! IT HELPS! -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org

On Sun Mar 01 2009 02:33:12 GMT+0100 (CET), David Haller wrote:
Ich hab zwar nicht alles gelesen...bin auch kein Shellscript-Experte... Lese nur gelegentlich mit. "set -x" ist imho ein Negativbeispiel von schlechter Dokumentation. - "man set" liefert bezogen auf "-x" keine Antwort. - "man bashbuiltins" liefert nur, dass man statt "set -x" auch set -o xtrace" verwenden kann. Sehr informativ... - "man xtrace" liefert, zumindestens unter suse 11, auch nichts. (No manual entry for xtrace) Noch dazu das xtrace ausgeführt wird. Einzig und Allein liefert "xtrace --help" eine Ausgabe, oder wenn man sich das script /usr/bin/xtrace" anschaut. Generell bin ich auch abgeneigt (für mich noch) unbekannte Funktionen zu verwenden. Trifft aber (glaube ich) auf die Mehrheit der Menschen zu unbekannte Dinge einfach vorerst zu ignorieren. Was Stefan anscheinend macht. Grundsätzlich kann man ein Software Problem oder Aufgabe (dieses Seek and Destroy script), wie in jeder anderen Programmiersprache, auch auf mehreren Möglichkeiten lösen. Funktionieren solls.
lg -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org

Hallo, Am Son, 01 Mär 2009, Johannes Krottmayer schrieb:
.oO( *waaahhhhHHH???* Noch so einer??? Is da ein Nest? ) Johannes, du stehst ab sofort auf der gleichen Liste wie Stefan, denn du demonstrierst gerade, wie er, ein eklatantes Leseunverständnis. Achso, ja, guck mal: ==== help set ==== set: set [--abefhkmnptuvxBCHP] [-o option] [arg ...] [..] -x Print commands and their arguments as they are executed. ==== Und komme mir nicht mit dem Argument, daß 'help' nicht genug dokumentiert sei. 'man bashbuiltins' is auch nicht grad esoterisch. Das 'set -x' dient sowieso nur dazu, daß Stefan vielleicht endlich mal kapiert, was er macht, wenn er im Aufruf eines Befehls ein ungeschütztes '?' oder '*' verwendet. -dnh, *zunehmend kopfschüttelnd und genervt* PS: Frag mal hier in der Liste, wer die oder der "Shellscript-Experte" ist ... Oder guck einfach mal ins Listenarchiv. --

On Sun Mar 01 2009 05:52:03 GMT+0100 (CET) David Haller, wrote:
Also wenn du so fragst, ja.
Johannes, du stehst ab sofort auf der gleichen Liste wie Stefan,
Jawohl ! Ich steh auf einer Liste. :) Und auf welcher ?
denn du demonstrierst gerade, wie er, ein eklatantes Leseunverständnis.
Dein Leseverständis ist auch nicht gerade besser.
Ich kannte "help" nicht. Aber Danke für die Information.
-dnh, *zunehmend kopfschüttelnd und genervt*
Dazu schreib ich mal gar nichts. lg -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org

Hallo, Am Son, 01 Mär 2009, Johannes Krottmayer schrieb:
*ohne Worte*
denn du demonstrierst gerade, wie er, ein eklatantes Leseunverständnis.
Dein Leseverständis ist auch nicht gerade besser.
Du hast die Liste gerade gewechselt. *plonk* -dnh -- A: Weil es die Lesbarkeit des Textes verschlechtert. F: Warum ist TOFU so schlimm? A: TOFU F: Was ist eins der groesste Aergernisse im Usenet? -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org

Hallo liebe Liste, Auch wenn ich nicht alles durchgelesen habe. Also den kompletten Mail-Verkehr von diesem Thema. Solch ein Verhalten ist für mich inakzeptabel. Darum hab ich mein letztes Mail, zu diesem Thema, so kommentiert. Ich war am Thema vorbei, das weiß ich aber selber. Die beiden letzten Mails von David war, in meinen Augen, ein persönlicher Angriff. Egal, ob ich jetzt beim meinem vorletzten Mail einen Blödsinn geschrieben habe. Ansichtssache !!! On Sun Mar 01 2009 07:33:26 GMT+0100 (CET) David Haller, wrote:
denn du demonstrierst gerade, wie er, ein eklatantes Leseunverständnis. Dein Leseverständis ist auch nicht gerade besser.
Deswegen hab ich so gekontert. Nur meine Antwort war direkt. Seine Anspielung aber indirekt.
Du hast die Liste gerade gewechselt. *plonk*
Wenn das Ganze noch mehr ausartet, landet mein nächstes Mail auf "mailto:opensuse-de+unsubscribe@opensuse.org". Und Danke für die schöne Zeit. lg -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org

Am Sonntag, 1. März 2009 05:52:03 schrieb David Haller:
PS: Frag mal hier in der Liste, wer die oder der "Shellscript-Experte" ist ... Oder guck einfach mal ins Listenarchiv.
Nur fürs Archiv: David wußte schon vor 10 Jahren, von was er schreibt. Vor allem wenn es um Shellscripts ging. flo --

Hallo, Am Die, 24 Feb 2009, Stefan Plenert schrieb:
nur bei *.txt gibt es eine Fehlermeldung.
Lies meine Mails. -dnh -- What is a committee? A group of the unwilling, picked from the unfit, to do the unnecessary. -- Richard Harkness, _The New York Times_, 1960 -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org

Am Di d. 24 Feb 2009 09:02:48 +0100 schriebst Du:
bei *.ods und *.odt gab es keine Probleme, nur bei *.txt gibt es eine Fehlermeldung.
Wie David schon schrieb, Du *musst* solche Platzhalter/Suchmuster ensprechend entschärfen, da sie sonst von der Shell expandiert werden. Also entweder ein einzelnes Zeichen mit \ entschärfen (also z.B. \*.txt) oder den ganzen Ausdruck in einfache Anführungszeichen packen ( z.B. '*.txt'). *.ods und *.odt funktionieren, weil es im aktuellen Verzeichnis keine Dateien gibt, die auf das Muster passen. In dem Fall wird das Suchmuster einfach durchgereicht. Bei *.txt gibt es Dateien, auf die das Muster passt, also ersetzt die Shell Dein Suchmuster durch die gefundenen Dateien. Somit sieht find an der Stelle, an der es genau *ein* Suchmuster erwartet, nun mehrere Zeichenketten, worüber es sich natürlich beschwert. Jetzt verstanden? Philipp -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org

Hi David! On Mon, 23 Feb 2009, David Haller wrote:
find -exec + ist Standard und selbst GNU hat das nun mittlerweile seit
4 Jahren implementiert. Diese Einschränkung sollte also nicht mehr gelten.
Ein '-delete' hat mein GNU find nicht, neuere und BSD finds sollten das aber haben.
Ähm, was für eine historisches GNU find nutzt du? Laut changelog ist auch -delete seit fast 4.5 Jahren in GNU find. Okay, es ist auch nicht im Standard vorhanden, da wäre also aus Gründen der Portabilität eine der -exec bzw. -print0 Varianten zu bevorzugen. Mit freundlichen Grüßen Christian -- hundred-and-one symptoms of being an internet addict: 126. You brag to all of your friends about your date Saturday night...but you don't tell them it was only in a chat room. -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org

Hi Stefan! On Sun, 22 Feb 2009, Stefan Plenert wrote:
nicht nötig, find kennt -delete find /home/stefan/ -name *.txt~ -delete Mit freundlichen Grüßen Christian -- hundred-and-one symptoms of being an internet addict: 123. You ask the car dealer to install an extra cigarette lighter on your new car to power your notebook. -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org

Am Sonntag, 22. Februar 2009 18:22:29 schrieb David Haller:
Danke an alle. Was mir die Shell unter den verschiedenen Anführungszeichen ausgibt!!! ~> echo "find $HOME -name *.txt~" find /home/stefan -name *.txt~ ~> echo `find $HOME -name *.txt~` /home/stefan/Documents/OrdnerX /Hutgröße.txt~ /home/stefan/Documents/Linux/fdsk/ Festplatte01.txt~ /home/stefan/Documents/Linux/fdsk/ Bootloader-081120.txt~ /home/stefan/Documents/Linux/ Probleme/Einwahl-0812-07.txt~ /usw. ~> echo 'Die Variable HOME hat den Wert $HOME' Die Variable HOME hat den Wert $HOME ~> echo `Die Variable HOME hat den Wert $HOME` bash: Die: command not found ~> echo "Die Variable HOME hat den Wert $HOME" Die Variable HOME hat den Wert /home/stefan Unter den doppelten Anführungszeichen gibt er die Variable aus, aber führt er den Befehl nicht aus. Unter den einfachen führt er den Befehl aus Unten führen dagegen die einfachen zu einer Fehlemeldung. rm `find /home/stefan/ -name *.txt~` ist richtig. Gruß an alle Stefan -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org

Hallo, Am Son, 22 Feb 2009, Stefan Plenert schrieb:
NEIN. Und zwar gleich mehrfach. a) das *.txt~ wird von der shell expandiert, bevor find das zu sehen bekommt: $ set -x $ ls `find . -name *.txt~` ++ find . -name 'foo bar.txt~' foo.txt~ find: paths must precede expression Usage: find [path...] [expression] Wenn man a) korrigiert, dann b) versagt es bei Dateinamen mit Leer- und anderen Sonderzeichen: $ ls `find . -name '*.txt~'` ++ find . -name '*.txt~' + ls -N -T 0 ./foo.txt~ ./foo bar.txt~ ls: ./foo: No such file or directory ls: bar.txt~: No such file or directory ./foo.txt~ c) kann man wg. fehlendem Quoting fiese Dateinamen einschmuggeln. Korrekt sind (NUR): find /pfad -name '*.txt~' -exec rm '{}' \; find /pfad -name '*.txt~' -exec rm '{}' + find /pfad -name '*.txt~' -print0 | xargs -r -0 rm sowie die ersten beiden mit '-ok' statt '-exec'. Das mittlere geht nur mit BSD find (und sehr neuen GNU finds, IIRC), das letztere geht nur mit GNU find und GNU xargs. Das erste geht überall, ist aber gruselig langsam. Ein '-delete' hat mein GNU find nicht, neuere und BSD finds sollten das aber haben. Stefan, lese _DRINGEND_ den Abschnitt QUOTING in 'man bash'. Komplett. So oft bis du verstanden hast, was \, "", '', `` und $() machen. -dnh -- "The Universe says simply, but with every possible complication, 'Existence' and it neither pressures us nor draws us out, except as we allow. It all boils down to nothing, and where we have the means and will to fix our reference within that flux, then there we are. Let me be part of that outrageous chaos... and I am." -- Iain M. Banks -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org

Am Montag, 23. Februar 2009 00:33:50 schrieb David Haller:
$ set -x ?
Danke für den Tip, hat nur ein Fehler, ich habe Suse in deutsch, weil ich so gut wie kein Englisch kann.
-dnh
--
Hallo David, aus O'Reillys Taschenbibliothek LINUX KURZ & GUT Quoting Normalweise behandelt die Shell Leerstellen einfach als Trennsymbole der Wörter auf der Kommandozeile. Falls Sie wollen, dass ein Wort Leerstellen enthält (z.B. Dateiname mit einer Leerstelle), setzen Sie es in einfache oder doppelte Anführungszeichen, damit es die Shell als eine Einheit betrachtet. Einfache Anführungszeichen behandeln den Inhalt wörtlich, während bei doppelten Anführendzeichen Shell-Konstrukte wie Variablen ausgewertet werden: $ echo 'Die Variable HOME hat den Wert $HOME' Die Variable HOME hat den Wert $HOME $ echo "Die Variable HOME hat den Wert $HOME" Die Variable HOME hat den Wert /home/schmidt Bei Backquotes wird der Inhalt als ein Befehl betrachtet und durch die Standardausgabe des Befehls ersetzt. $ /usr/bin/whoami schmidt $ echo Mein Name ist `/usr/bin/whoami` Mein Name ist schmidt
b) versagt es bei Dateinamen mit Leer- und anderen Sonderzeichen
Hier probiere ich noch was in der Shell aus. Platzhalter * jede Art und Menge von Zeichen außer einem führenden Punkt Jede Art von Zeichen und damit nicht auch Leerzeichen? Ist *.txt~ im Quoting nicht doppeltgemoppelt? Ich nahm find mit der Option -delete Gruß Stefan -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org

Hallo Freunde d. Liste, Das Script habe ich jetzt, bloß jetzt habe ich ein neues Problem Das Protokol $ find /home/stefan -name *.txt~ /home/stefan/Documents/Linux/forum/Shell/Bash-Script-Frage.txt~ $ find /home/stefan -name *.txt find: Der Pfad muß vor dem Suchkriterium stehen. Usage: find [-H] [-L] [-P] [path...] [expression] Das Script #!/bin/bash find /home/stefan -name *.txt~ -delete bei *.ods und *.odt gab es keine Probleme, nur bei *.txt gibt es eine Fehlermeldung. Danke uns schönen Tag Stefan -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org

Stefan Plenert wrote:
Du benutzt das immer noch falsch! (Hatte David dir doch IIRC auch geschrieben). Bei deinem Aufruf "sucht" find gar nicht richtig, da der Ausdruck *.txt (oder *.txt~) bereits in der shell expandiert wird. Du muss dem find den Ausdruck *.txt übergeben OHNE das die Shell den "*" expandiert! Also richtig wäre a) find /home/stefan -name \*.txt oder b) find /home/stefan -name "*.txt" Wenn es im aktuellen Verzeichnis keine *.txt Dateien gibt, wird bei deinem Aufruf find wie folgt aufgerufen: find /home/stefan -name (*.txt expandiert zu NULL) Andreas -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org

Hi Kyek,! On Tue, 24 Feb 2009, Kyek, Andreas, VF-DE wrote:
Nicht ganz korrekt und ist wohl shell spezifisch. Bei der Bash gilt das nur, wenn nullglob gesetzt ist und das ist es per default nicht. Wenn also glob(*.txt) das Pattern nicht auflösen kann, wird es normalerweise so an den Prozess weitergegeben. IIRC fordert SuSv auch genau dieses Verhalten. Mit freundlichen Grüßen Christian -- hundred-and-one symptoms of being an internet addict: 127. You bring your laptop and cellular phone to church. -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org

Hallo Am Dienstag, 24. Februar 2009 09:10:03 schrieb Kyek, Andreas, VF-DE:
Hatte erst /*.txt und Fehlermeldung, und sah nachher, dass ich den Schrägstrich anders setzen muss. Zeigt jetzt auch versteckte Dateien an.
oder b) find /home/stefan -name "*.txt"
Geht und c) find ~ -name '*.txt' geht auch.
Ich muss gestehen, was David mir schreibt ist mir etwas zu kompliziert, dazu sind meine Kenntnisse in der Shell und in Englisch zu gering.
'man bash' wird in englisch ausgegeben. Danke Gruß Stefan --------- -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org

Hallo, Am Die, 24 Feb 2009, Stefan Plenert schrieb:
Ich muss gestehen, was David mir schreibt ist mir etwas zu kompliziert, dazu sind meine Kenntnisse in der Shell und in Englisch zu gering.
Dann frage, was genau du nicht verstehst -- aber lies auch die Antworten. Ich habe die Ursache und die Lösung(en) zu deinem Problem schon längst geschrieben. -dnh -- Perl. Die einzige interpretierte Sprache, wo alle Programme Closed Source sind, weil es keiner lesen kann. -- Till Potinius -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org

Am Mittwoch, 25. Februar 2009 01:17:12 schrieb David Haller:
Was ist BSD, GNU und IIRC?
Ein '-delete' hat mein GNU find nicht, neuere und BSD finds sollten das aber haben.
Unter man und help habe ich es auch nicht, aber es geht trotzdem. Das andere habe ich in Workshops und Bücher herausgefunden.
Am Son, 22 Feb 2009, Felix Lemke schrieb:
rm `find /home/stefan/ -name *.txt~`
rm 'find..' - erst löschen, dann finden ? ls 'find..' - ls, erst Eigenschaften der Datei angeben, dann finden? Die Reihenfolge muss andersherum sein. find..... && ls oder find.... ; ls Kombinationen von Befehlen anders bei echo echo 'find..' Während ls bei der Inhaltsangabe oder find keine Probleme mit Leer- und sonderzeichen haben, ist es bei rm anders. $ rm su&ls.01 [1] 5148 rm: Entfernen von „su“ nicht möglich: Datei oder Verzeichnis nicht gefunden bash: ls.01: command not found rm 'Datei' Daher ist die Übergabe der Datei an rm etwas komplizierter. mfg Stefan -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org

Hallo Stefan,
http://de.wikipedia.org/wiki/GNU-Projekt http://de.wikipedia.org/wiki/Berkeley_Software_Distribution http://de.wikipedia.org/wiki/IIRC#I Erstaunlich, was schon _eine_ Quelle so hergibt... Gruß, Michael -- ____ / / / / /__/ Michael Höhne / / / / / / mih-hoehne@web.de / ________________________________/ -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
participants (9)
-
Christian Brabandt
-
David Haller
-
Felix Lemke
-
Florian Gross
-
Johannes Krottmayer
-
Kyek, Andreas, VF-DE
-
Michael Höhne
-
Philipp Thomas
-
Stefan Plenert