Если я сделаю z='ls' а затем echo $z он напечатает каталог, который я перечислил, но без перевода строки или форматирования. Я предполагаю, что отсутствие цветного форматирования невозможно обойти, но возможно ли это сделать с помощью новых строк?
2 ответа
Цитировать переменную:
echo "$z"
Без кавычек каждое слово в $z становится отдельным аргументом для echo , с кавычками вся переменная является единственным аргументом - символом новой строки и всем.
Вы можете получить цвет, сказав
z=$(ls --color)
или, чтобы быть явным,
x=$(ls --color=always)
$(command) является ( по существу) эквивалентна `command` см. В чем преимущество использования $ () вместо обратных кавычек в сценариях оболочки?
По умолчанию для ls используется --color=auto , что означает использование цвета только при записи в терминал (т. е. когда стандартный вывод является терминалом).
$(command) и `command` выполнить command с выходом в трубу; --color=always говорит ls использовать цвет даже в этом случае.
Вы можете легко проверить это, сравнив
ls | cat
с
ls --color | cat
