ls --color=auto, почему они предлагают такую ​​опцию, если по умолчанию --color=always?

shopt -s extglob является специфичным для bash -(shoptотдельно является специфичным для bash -, bashявляется единственной оболочкой, имеющей два набора параметров)

Параметр extglobв bashвключает поддержку расширенных подстановочных значений ksh. В ksh это не нужно, хотя обратите внимание, что в ksh эти глобусы не распознаются при использовании в переменных.

printf -vявляется расширением bash. Это не поддерживается и не нужно в ksh93, потому что там подстановка команд не создает подоболочку. Поэтому вместо:

printf -v var...

использовать

var=$(printf...)

или в кш93:

var=${ printf...;}

если аргументы printfдолжны вносить изменения в среду (, как в ${foo=bar}или$((n++))). (хотя обратите внимание, что он удаляет завершающие символы новой строки ).

Также обратите внимание, что ksh93 поддерживает арифметику с плавающей запятой, в отличие от bash, поэтому вам не нужно прибегать к такого рода хакам.

Кроме этого, я не вижу здесь ничего, что могло бы объяснить сообщение об ошибке, которое вы получаете.

0
20.12.2020, 16:56
1 ответ

Теперь я понял.

Значение color codesозначает, что ls --color=alwaysвыводит некоторый дополнительный текст, описывающий цвета, и обычно терминал поглощает эти тексты.

Однако при ls --color=always > test.txtдополнительный текст, описывающий цвета, будет сохранен и сохранен.

Попробуйте ls --color=always > file1.txtи ls --color=auto > file2.txtи откройте оба файла, например. с nano, и вы можете увидеть различия.

3
18.03.2021, 22:42

Теги

Похожие вопросы