ls -b
следует печатать имена файлов с непечатаемыми символами, например, ex ex.txt
должно отображаться как ex\ ex.txt
, но это не работает на macOS, это все еще ex ex.txt
. Кто-нибудь знает причину?
решение1
Вариант -b
нестандартизированный, поэтому его поведение зависит от реализации.
Многие системы Linux используют GNU ls по умолчанию; он определяет эту -b
опцию как
распечатать экранированные последовательности в стиле C для неграфических символов
и используетсложная реализация цитирования. Символ пробела не является графическим символом, поэтому он экранируется.
На macOSзначение-b
отличается:
-Б Принудительная печать непечатаемых символов (как определено
ctype(3)
и текущие настройки локали) в именах файлов как\xxx
, гдехххчисловое значение символа в восьмеричной системе.-б Как-Б, но по возможности используйте управляющие коды C.
Функции ctype
(или макросы) считают, что символ пробела является печатным, поэтому он не экранируется.