Gibt ein Platzhalter in doppelten Anführungszeichen einen Glob aus?

3642
Matt

Führt ein Platzhalter in doppelten Anführungszeichen bei einer "Standard-BASH" aus? Zum Beispiel:

$ touch abc $ ls "*abc*" 

würde das, oder würde das nicht auf bash funktionieren?

Mir wurde gesagt, dass Ubuntu mit einer bash-Variante ausgeliefert wurde, die nicht POSIX oder BASH entspricht. Ist das wahr?

6
Welche Frage möchten Sie zuerst beantworten? Ignacio Vazquez-Abrams vor 12 Jahren 0
...................Beide Matt vor 12 Jahren 0
Für das Protokoll ist es besser, eine Frage nach der anderen zu stellen (vielleicht hat Ignacio das gemeint). slhck vor 12 Jahren 0

1 Antwort auf die Frage

6
hmontoliu

Kurze Antwort: Nein

Lange Antwort von Man Bash:

Durch das Einschließen von Zeichen in doppelte Anführungszeichen wird der Literalwert aller Zeichen in den Anführungszeichen mit Ausnahme von $, `, \ beibehalten.

So:

~$ touch sas ~$ ls *a* sas ~$ ls "*a*" ls: cannot access *a*: No such file or directory 

Bei Anführungszeichen und Sternchen gibt es natürlich eine weitere Ausnahme: Parametererweiterung (z. B. "$ *") ... aber das ist eine andere Geschichte

Für die zweite Frage: Fragen Sie nach Dash? Dash ist eine leichte Shell für Skripte. In debian und in Ubuntu per extension (wie auf debian basiert), wird auf sh ein Alias ​​gesetzt; Der größte Vorteil gegenüber Bash ist die Geschwindigkeit, daher wird sie standardmäßig für Systemskripts verwendet. Standardmäßig steht Bash jedoch weiterhin als interaktive Shell für Benutzer zur Verfügung

 ~$ ls -l /bin/sh  lrwxrwxrwx 1 root root 4 2011-04-21 11:54 /bin/sh -> dash 
Ah danke. Ja, ich wusste, / bin / sh wurde als "Bindestrich" bezeichnet. Aber trotzdem sagt mir jemand, mit dem ich spreche, dass dies auf seinem Red Hat-System funktioniert [* bei Doppeln zitiert - er sagt, der einzige Weg, um sicher zu gehen, dass sie nicht global sind, ist die Verwendung von einfachen Anführungszeichen]. Irgendeine Idee warum? Matt vor 12 Jahren 0
Nein, dein Freund ist völlig falsch - überprüfe das Zitat von Man Bash, das ich in meiner Antwort gepostet habe. hmontoliu vor 12 Jahren 0
Ich habe nicht gesagt, dass er mein Freund ist: P Wir hatten eine Meinungsverschiedenheit, und er ist seit 11 Jahren Programmierer und hat einen großen Job. Ich habe gerade von Google und so etwas gelernt, da ich mit ihm nicht einverstanden war eine andere Person [der Freund eines Freundes - dieser andere Typ war sein Freund ", begann darüber zu sprechen, wie ich sein Wissen nicht beiseite schieben sollte, weil er bei weitem der sachkundigste in der Diskussion war. Aber danke! :) Matt vor 12 Jahren 0