• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Die Bildungsoffensive hier im Forum geht weiter! Jetzt sollen Kreativität und technische Möglichkeiten einen neue Dimension erreichen. Das Thema in diesem Monat lautet - Verkehrte Welt - Hier geht es lang --> Klick

komisches Programm namens "[" in /bin

  • Ersteller Ersteller Dunerkahl
  • Erstellt am Erstellt am

Dunerkahl

Gast
Hallo,
ich hab gerade ein merkwürdiges Programm in /bin entdeckt, es heißt einfach nur "[".
Habt ihr sowas auch in eurem /bin-ordner ? Mir erscheint das nämlich unwohl.
Hier noch n Screen:

MfG Zoddl
p.s. ich hab 10.4.6
 
Dunerkahl schrieb:
Hallo,
ich hab gerade ein merkwürdiges Programm in /bin entdeckt, es heißt einfach nur "[".
Habt ihr sowas auch in eurem /bin-ordner ? Mir erscheint das nämlich unwohl.
Moin, ja das ist bei mir auch unter /bin vorhanden. Weiß aber auch nicht, wofür das gut sein soll. :-!

P.S.: Unter Linux (Debian) liegt unter /bin jedenfalls keine eckige Klammer rum, das muss was Darwin-spezifisches sein. s.u. ...
 
Zuletzt bearbeitet:
quarx schrieb:
P.S.: Unter Linux (Debian) liegt unter /bin jedenfalls keine eckige Klammer rum, das muss was Darwin-spezifisches sein.
Debian Linux Server, auf dem ich Zugang habe:
Code:
gna$ which [
/usr/bin/[

Das Ding ist dasselbe wie der Command test.

Code:
gna$ if test -f moo.txt; then echo foo; else echo bar; fi
foo
gna$ if [ -f moo.txt ]; then echo foo; else echo bar; fi
foo

Gruss
Jonathan
 
Ah, merci. An "which" zu denken war gestern zu spät... :-)
 
Hehe ;)
fuer mich erschliesst sich aber die Bedeutung der zweiten Klammer nicht ganz. Okay, eine Klammer darf bei der Shell-Syntax nicht nur geoeffnet und nicht geschlossen werden, aber wieso ist denn das Zeichen ] an dieser Stelle erlaubt..? Wird das von Test einfach ignoriert?
 
Von test nicht, aber anscheinend von [. In der info-Page von test steht Folgendes:
`test' has an alternate form that uses opening and closing square
brackets instead a leading `test'. For example, instead of `test -d
/', you can write `[ -d / ]'. The square brackets must be separate
arguments; for example, `[-d /]' does not have the desired effect.
Since `test EXPR' and `[ EXPR ]' have the same meaning, only the former
form is discussed below.
'[EXPR]' sieht - finde ich - schöner aus als 'test EXPR'. ;-)
 
Aber wer kommt auf die Idee, ein Programm "[" zu nennen? Naja ^^
 
Auf die Idee kommt man, wenn man "if [ wasimmer ]" statt "if test wasimmer" benutzen möchte?

"test" ist nichts eingebautes, "test" ist ein Programm. /bin/test. "if 'programm liefert "wahr" zurück', dann mach wasimmer" hat den großen vorteil, daß die Testbedingung beliebig komplex sein kann. if Programm-"transferiere daten und schicke mail" war errfolgreich, dann...
 
Nogger schrieb:
Auf die Idee kommt man, wenn man "if [ wasimmer ]" statt "if test wasimmer" benutzen möchte?

"test" ist nichts eingebautes, "test" ist ein Programm. /bin/test. "if 'programm liefert "wahr" zurück', dann mach wasimmer" hat den großen vorteil, daß die Testbedingung beliebig komplex sein kann. if Programm-"transferiere daten und schicke mail" war errfolgreich, dann...

Hinzu kommt, das UNIX Systeme ihre Wurzeln im Mainframe Bereich haben. Und die waren seinerzeit oft via Fernschreiber angebunden. Da war die Schreibweise mit der eckigen Klammer durchaus eine Erleichterung bei der Tipparbeit. So seltsam das kingt, aber viele UNIX Befehle haben daher recht kurze namen: cp statt copy, ls statt list usw. usf.

Etwas Off-Topic, aber sehr nett zu lesen ist übrigens die wahre Geschichte des vi Editors ;)