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

관련 정보