Если я сделаю 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