ls -b
印刷できない文字を含むファイル名は、たとえばex ex.txt
と表示されるはずですex\ ex.txt
が、これは macOS では機能せず、 のままですex ex.txt
。理由を知っている人はいますか?
答え1
選択肢-b
は標準化されたしたがって、その動作は実装に依存します。
多くのLinuxシステムはデフォルトでGNU lsを使用しており、-b
オプションは次のように定義されています。
非グラフィック文字のCスタイルのエスケープを印刷する
そして、精巧な引用の実装スペース文字は非グラフィック文字なので、エスケープされることになります。
macOSではの定義-b
異なります:
-B 印刷できない文字(
ctype(3)
ファイル名には、現在のロケール設定と現在のロケール設定が\xxx
次のように記述されます。xxx文字の 8 進数値です。-b として-Bただし、可能な場合は常に C エスケープ コードを使用してください。
関数ctype
(またはマクロ) はスペース文字が印刷可能であると見なすため、エスケープされません。