"/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"

おすすめ記事