2

Если я сделаю z='ls' а затем echo $z он напечатает каталог, который я перечислил, но без перевода строки или форматирования. Я предполагаю, что отсутствие цветного форматирования невозможно обойти, но возможно ли это сделать с помощью новых строк?

2 ответа2

4

Цитировать переменную:

echo "$z"

Без кавычек каждое слово в $z становится отдельным аргументом для echo , с кавычками вся переменная является единственным аргументом - символом новой строки и всем.

3

Вы можете получить цвет, сказав

z=$(ls --color)

или, чтобы быть явным,

x=$(ls --color=always)

$(command) является ( по существу) эквивалентна `command` см. В чем преимущество использования $ () вместо обратных кавычек в сценариях оболочки?  По умолчанию для ls используется --color=auto , что означает использование цвета только при записи в терминал (т. е. когда стандартный вывод является терминалом).  $(command) и `command` выполнить command с выходом в трубу; --color=always говорит ls использовать цвет даже в этом случае.

Вы можете легко проверить это, сравнив

ls | cat

с

ls --color | cat

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .