ls -b
sollte die Dateinamen mit nicht druckbaren Zeichen drucken, z. B. ex ex.txt
sollte sie als angezeigt werden ex\ ex.txt
, aber das funktioniert unter macOS nicht, es ist immer noch ex ex.txt
. Kennt jemand den Grund?
Antwort1
Die -b
Option ist nichtstandardisiert, daher ist sein Verhalten implementierungsabhängig.
Viele Linux-Systeme verwenden standardmäßig GNU ls; es definiert die -b
Option als
Drucken Sie C-Stil-Escapes für nicht grafische Zeichen
und verwendet eineaufwendige Zitat-Implementierung. Das Leerzeichen ist ein nicht grafisches Zeichen und wird daher maskiert.
Unter macOSDefinition von-b
ist anders:
-B Erzwingen des Druckens nicht druckbarer Zeichen (wie definiert durch
ctype(3)
und aktuelle Gebietsschemaeinstellungen) in Dateinamen als\xxx
, wobeixxxist der numerische Wert des Zeichens im Oktalformat.-B Als-B, aber verwenden Sie nach Möglichkeit C-Escape-Codes.
Die ctype
Funktionen (oder Makros) gehen davon aus, dass das Leerzeichen druckbar ist und daher nicht maskiert wird.