
내가 본 명령을 실행하면 /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"