将命令输出存储在变量中

将命令输出存储在变量中

如果我这样做z='ls'echo $z它将打印我列出的目录,但没有换行符或格式。我认为缺少彩色格式是无法解决的,但是是否可以在其中添加换行符?

答案1

引用变量:

echo "$z"

如果不使用引号,则中的每个单词$z将成为单独的参数echo,如果使用引号,则整个变量将成为单个参数 - 换行符和所有内容。

答案2

你可以通过说来获得颜色

z=$(ls --color)

或者更明确地说,

x=$(ls --color=always)

$(command)(本质上)等同于;参见`command`在 shell 脚本中使用 $() 代替反引号有什么好处?  ls的默认值是--color=auto,这意味着仅在写入终端时使用颜色(即当标准输出是终端时)。  并运行$(command)`command`command输出到管道;即使在这种情况下--color=always也要ls使用颜色。

您可以通过比较轻松测试

ls | cat

ls --color | cat

相关内容