hallo,
habe irgendwo diesen befehl herauskopiert
tut alle dateien rekursiv das ausführungsbit entziehen (in jedem ordner)
find ordner -type f -exec chmod a-x "{ }" ";"
was bedeuten die klammer und der strichpunkt?
gruss günter
Linux 15.070 Themen, 107.540 Beiträge
Ich habe mal schnell in der manpage von find gelesen und das hier gefunden:
"man find"
....
Aktionen
-exec Kommando;
führt das Kommando aus; die Aktion ist wahr, wenn das Kommando einen Status
von Null liefert; alle auf den Kommandonamen folgenden Argumente bis zu einem
Semikolon ; werden als Kommandozeilenargumente für das Kommando interpretiert;
das Semikolon kann nicht weggelassen werden, und es muss durch mindestens ein
Whitespace von der letzten Option getrennt werden; die Konstruktion {} wird
durch den Pfadnamen der Datei ersetzt; die Klammern und das Semikolon müssen
in der Kommandozeile für find quotiert werden, damit sie nicht von der Shell
bearbeitet werden.
.....
Quotierung kann man mit einem Backslash oder mit Hochkommas machen.
Quotierung ist notwendig um die Bedeutung von Sonderzeichen in der Shell (bash) auszuschalten.
-exec command ;
Execute command; true if 0 status is returned. All following
arguments to find are taken to be arguments to the command until
an argument consisting of `;' is encountered. The string `{}'
is replaced by the current file name being processed everywhere
it occurs in the arguments to the command, not just in arguments
where it is alone, as in some versions of find. Both of these
constructions might need to be escaped (with a `\') or quoted to
protect them from expansion by the shell. See the EXAMPLES sec-
tion for examples of the use of the `-exec' option. The speci-
fied command is run once for each matched file. The command is
executed in the starting directory. There are unavoidable
security problems surrounding use of the -exec option; you
should use the -execdir option instead.
Quelle: man find oder http://unixhelp.ed.ac.uk/CGI/man-cgi?find
d-oli
okay is ma a bissl zu viel jetzt..werds mir am abend nochmal zu gemüte ziehen
danke einmal
gruss günter
Die Klammern werden bei der Ausführung des exec Kommandos (chmod in diesem Fall ) durch den eigentlichen Dateinamen ersetzt.
Das Semikolon und die Klammern haben in der Shell eine spezielle Bedeutung und diese Bedeutung muß durch Hochkommas oder durch Voranstellen eines Backslashs ausgeschaltet werden.
Solche Klammern werden bei regulären Ausdrücken verwendet und das Semikolon dient zum Trennen von Befehlen.
Beispiel:
if [ $? == 0 ] ; then
echo
echo " Letzer Rückgabewert war 0"
echo
fi
Reguläre Ausdrücke dienen bei Unix und Linux zum Ersetzen von Zeichen und / oder Strings bei einem Kommando oder Befehl:
http://de.wikipedia.org/wiki/Regul%C3%A4rer_Ausdruck
PS: In dem Buch Unix-Shellprogrammierung von Rainer Krienke wird sehr schön erklärt was alles der Reihe nach passiert, nach dem man einen Befehl in der Shell BASH eingegeben hat und die ENTER Taste gedrückt wurde. Kann ich empfehlen. Man kommt früher oder später nicht um Shellprogrammierung herum:
http://www.amazon.de/Shell-Programmierung-Grundlagen-Werkzeuge-praktische-Skripte/dp/3446407375/ref=sr_1_2/028-6113415-2839752?ie=UTF8&s=books&qid=1187631975&sr=8-2
okay,danke
glaube werde um literatur dazu nicht wegkommen
gruss günter
Die Optionen für die Unixdienstprogramme wie find, sed, grep, touch wc us.w kann man immer in den Manpages (Manualpages) nachlesen.
Einfach nur den Befehl "man Unixdienstprogramm...." eingeben.
Sehr viele Manpages sind schon ins Deutsche übersetzt, aber leider nicht immer ganz aktuell.
Vielleicht hilft dieses Online Buch um sich einen Überblick über alle Unixdienstprogramm zu verschaffen:
http://www.linux-ag.de/linux/LHB/LHB.html
PS: Linux ist nicht als Unix von The Open Group zertifiziert, soll sehr Unix-Ähnlich sein da sehr viele Dinge vom POSIX Standard übernommen wurden.
