Archiv verlassen und diese Seite im Standarddesign anzeigen : Bedeutung von Kommata für bash
zeckensack
2006-01-16, 02:56:59
Gibt's eine? So wie man zB mehrere Kommandos, mit einem Slash getrennt, "gleichzeitig" eingeben kann?
Ich frage weil ich in einem Kommandozeilenprogramm an dem ich gerade baue gerne das Komma als Separator für gewisse Optionen nutzen möchte, was auf Windows auch zu funktionieren scheint, aber ich will dieses Programm auch für Linux anbieten und würde mir ungern jetzt etwas ans Bein schnallen was ich später wieder wegwerfen müsste.
Leider kenne ich keine Unix-Tools die das Komma so einsetzen.
Die Frage lautet nun: interpretiert bash ein Komma in irgendeiner Form speziell, oder ist das ein ganz normales Zeichen innerhalb der Kommandozeile das unverändert an Programme durchgereicht wird?
Andere Shells?
Wuzel
2006-01-16, 07:35:05
Gibt's eine? So wie man zB mehrere Kommandos, mit einem Slash getrennt, "gleichzeitig" eingeben kann?
Ich frage weil ich in einem Kommandozeilenprogramm an dem ich gerade baue gerne das Komma als Separator für gewisse Optionen nutzen möchte, was auf Windows auch zu funktionieren scheint, aber ich will dieses Programm auch für Linux anbieten und würde mir ungern jetzt etwas ans Bein schnallen was ich später wieder wegwerfen müsste.
Leider kenne ich keine Unix-Tools die das Komma so einsetzen.
Die Frage lautet nun: interpretiert bash ein Komma in irgendeiner Form speziell, oder ist das ein ganz normales Zeichen innerhalb der Kommandozeile das unverändert an Programme durchgereicht wird?
Andere Shells?
Normalerweise "&" , damit kann man Commands verknüpfen (UND verknüpfung).
Mit "\" kann man Folgen eingeben - praktisch für Scripts.
Ein einfaches " " (leerzeichen) dient als Seperator verschiendener 'Args'.
Harleckin
2006-01-16, 08:52:32
Eine Verkettung von Befehlen verknüpft man durch den "&&" Operator. Dies bietet sich bei direkten Abhängigkeiten ab.
Die sequenzielle Ausführung drückt man dagegen mit einen Semikolon ";" aus.
foo && echo "outch."
foo; echo "outch."
Außerdem sollte man entweder explizit im Shebang auf die Bash verweisen oder generell auf die Kompabilität zu bekannten Shells achten. (ksh, zsh, tcsh)
Die sequenzielle Ausführung drückt man dagegen mit einen Kommata ";" aus.
Und ich dachte bis jetzt, das Ding heißt Semikolon :biggrin:
Harleckin
2006-01-16, 11:17:04
Und ich dachte bis jetzt, das Ding heißt Semikolon :biggrin:
okay.
ravage
2006-01-16, 13:19:42
Juhu, es hat noch keiner die eigentliche Frage beantwortet. Was ich dazu gefunden habe, ist bisher folgendes:
Wildcards
Als Wildcards werden Zeichen bezeichnet, die als Platzhalter für andere Zeichen stehen können. Die Bash kennt viele Wildcards. Die beiden einfachsten und wichtigsten sind "?" und "*". Das ? steht dabei für genau ein beliebiges Zeichen, während der * für beliebig viele Zeichen steht. Wie lassen sich Wildcards anwenden? Nehmen wir an, Sie möchten sich in einem Verzeichnis in dem sehr viele Bilder in unterschiedlichen Formaten enthalten sind, nur die GIF-Bilder auflisten lassen. Der Befehl um ein Verzeichnisinhalt anzuzeigen ist ls. Da wir die Anzeige einschränken wollen, geben wir ein:
rene@thor:~> ls *.gif
und schon bekommen wir das gewünschte Ergebnis.
Was nun aber,wenn es in dem Verzeichnis sowohl Dateien mit der Endung .gif, als auch .GIF gibt? Achtung Stolperfalle! Unter Linux wird streng zwischen Groß- und Kleinschreibung unterschieden. Aber auch hierfür gibt es Möglichkeiten: Wird ein Ausdruck in geschweifte Klammern eingeschlossen, kann man auch noch Alternativen angeben:
rene@thor:~> ls *.{gif,GIF}
Nun werden beide Möglichkeiten berücksichtigt. Das Komma dient innerhalb der geschweiften Klammer als Trenner für die jeweiligen Alternativen.
Quelle: Google -> http://www.bin-bash.de/komfort.php
zeckensack
2006-01-16, 19:08:45
Juhu, es hat noch keiner die eigentliche Frage beantwortet.Allerdings :usweet:
Also nochmal die Frage: ist das Komma, und damit meine ich das:
,
... ein Sonderzeichen für die bash, so wie zB ">" oder "|"? Ja oder nein? :)
Was ich dazu gefunden habe, ist bisher folgendes:
<...>Ist leider auch nyx. Mal abgesehen davon dass es nicht um's Komma geht ... Wildcards löst AFAIK nicht die Shell auf. Programme bekommen Wildcards in Parametern direkt und unverändert durchgereicht.
Wildcards werden aufgelöst indem ein Programm eine Funktion aufruft die Dateien findet.
Harleckin
2006-01-16, 20:02:31
Das Komma "," wird als reguläres Schriftzeichen von der bash interpretiert.
simpler Test..
$ alias foo,bar='ls -l'
$ foo,bar
klutob
2006-01-16, 20:19:04
IMHO nein, habe ich bisher noch nie als Shell "Operator/Kommando" entdecken können. Die Bash-Reference "Index of Shell Reserved Words/Parameter and Variable Index (http://www.gnu.org/software/bash/manual/bashref.html#SEC134)" kennt es auch nicht.
/edit:
Sollte mal schneller reloaden. :frown:
zeckensack
2006-01-16, 21:35:45
Okay, alles klar.
Komma ist bash egal. Gut für mich.
Danke.
vBulletin®, Copyright ©2000-2025, Jelsoft Enterprises Ltd.