命令“/bin/sh -c ls -lh”不将输出显示为列表

命令“/bin/sh -c ls -lh”不将输出显示为列表

运行命令/bin/sh -c ls,我看到:

> /bin/sh -c ls
 20190816_212056.png                                                Opera_65.0.3467.78_Setup.exe
 20190816_212219.png                                                Opera_66.0.3515.27_Setup.exe
 20190816_212344.png                                                opera-stable_60.0.3255.95_amd64.rpm
 20191112_134658.jpg                                                opera-stable_62.0.3331.99_amd64.rpm
 20200201_175524.jpg                                                opera-stable_63.0.3368.107_amd64.rpm
 20200201_175602.jpg                                                opera-stable_65.0.3467.48_amd64.rpm

当我运行 时/bin/sh -c ls -lh,我看到的输出与 完全相同/bin/sh -c ls。该选项-lh根本没有被考虑。这是为什么?我遗漏了什么吗?

笔记

/bin/sh是一个符号链接bash

> ls -lh /bin/sh
lrwxrwxrwx 1 root root 4 Sep 20  2019 /bin/sh -> bash

答案1

如果你想运行一个包含空格的命令,你需要在它周围添加“”。否则它只会执行ls

尝试跑步 /bin/sh -c "ls -lh"

相关内容