• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

[solved] Verständnisproblem mit Kommando

markuso86

Newbie
Hallo, hab folgende Kommando Anweisung gefunden:

Code:
find /dev \( -type c -o -type b \) -exec ls -l {} \;

Ich verstehe prinzipell was das tut, jedoch würde mich interessieren für was
Code:
\(
und
Code:
\)
stehen.

Danke schon im Vorraus
 
Ein "\" entwertet nicht das Sonderzeichen sondern schützt es vor der Interpretation durch die Shell, das ist ein kleiner Unterschied.
 
OP
M

markuso86

Newbie
Kannst du mir das Bitte etwas näher erklären.

Was bedeute schützt vor der Interpretation der Shell?
Und warum ist die runde Klammer immer nach dem Slash?
 

admine

Ultimate Guru
Lies hier:
http://www.uni-muenster.de/ZIV/Mitarbeiter/MathiasGrote/linux/Bash.html
Punkt "Quoting, Maskieren"
 

wiebkes

Member
Hei markuo86.
Ganz einfach: wenn du zum Beispiel einen Zeichenkette als Parameter eingeben wolltest, die sowohl Leerzeichen enthælt als auch Anführungszeichen dann müßtest Du deinem Rechner ja erstmal erklären, dass Du nicht x Parameter eingeben willst, sondern nur einen Parameter der aus x Worten und einem Anführungszeichen besteht. Für den ersten Schritt würdest Du Deine Zeichenkette in Anführungszeichen setzen.
Sagen wir mal Deine Zeichenkette wäre: Mein Monitor hat 19" toll
Jetzt würde, nachdem Du die Zeichenkette in Anführungszeichen gesetzt hast, das ganze so aussehen: "Mein Monitor hat 19" toll"
Dein Rechner würde bei dieser Form der Eingabe davon ausgehen wollen, dass das Anführungszeichen nach der 19 das abschließende Anführungszeichen für den ersten Zeichenkettenparameter wäre, dann einen weiteren Parameter mit dem Wert toll übernehmen wollen und dann auf ein Anführungszeichen stoßen, von dem er glauben würde es sei wieder der Beginn einer neuen Zeichenkette, deren Ende er aber nicht finden kann, da kein abschließendes Anführungszeichen existiert.
Also maskierst du das Anfürhungszeichen nach der 19 mit einem Backslash um Deinem Computer mitzuteilen, dass es sich hierbei um ein Zeichen innerhalb einer Zeichenkette handelt und nicht um den Befehl die Zeichenkette zu beenden.
Was du dann also übergeben würdest ist: "Mein Monitor hat 19\" toll"

Und genau das gildet in diesem Fall eben auch für Deinen Befehl - die Klammern hätten ohne den Backslash davor eine "besondere" Funktion, die mit dem Backslash ausgeschaltet wird.

Bis dann

Wiebke
 
Oben