ls
다음은 현재 디렉터리의 파일 목록을 표시하는 명령 입니다 .
rper: ls -l
$commandoutput[0]
file.txt
$commandoutput[0]
행 삭제를 사용해 보았지만 rm -rf $commandoutput[0]
다음 오류가 표시됩니다. 어떻게 삭제할 수 있나요?
rper: rm -rd $commandoutput[0]
commandoutput: Undefined variable.
답변1
@RomanPerekhrest의 답변 외에도 다음과 같이 작동합니다.
rm '$commandoutput[0]'
작은따옴표는 변수 확장을 방지하기 때문입니다.
또 다른 방법은 입력을 시작한 rm $
다음 를 누르는 것 입니다 Tab. 쉘은 필요에 따라 자동으로 파일 이름과 이스케이프 문자를 완성합니다.
답변2
파일 이름을 이스케이프하려면 $
(바람직하게는 [
, ]
) 백슬래시를 사용하십시오 \
.
rm -rf \$commandoutput\[0\]
답변3
다른 사람들이 이 질문에 대답했지만 또 다른 접근 방식은 파일의 inode를 찾고 find 및 exec delete를 사용하여 파일을 삭제하는 것입니다.
ls -il
예제 출력:
781956 drwx------ 3 viv viv 4096 2017-07-7 15:05 $commandoutput[0]
첫 번째 열은 inode여야 합니다. 위 예에서는 다음을 실행합니다.
find . -inum 781956 -exec rm -i {} \;
답변4
또 다른 쉬운 방법은 와일드카드와 rm -i를 사용하는 것입니다.
rm -i *command*
"command"라는 단어가 포함된 모든 파일 이름에 대해 파일을 삭제할지 묻는 메시지가 표시됩니다. 그런 다음 삭제하기 전에 확인할 수 있습니다.