Linux를 사용하여 $ 기호가 있는 파일을 삭제할 수 없습니까? [복사]

Linux를 사용하여 $ 기호가 있는 파일을 삭제할 수 없습니까? [복사]

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"라는 단어가 포함된 모든 파일 이름에 대해 파일을 삭제할지 묻는 메시지가 표시됩니다. 그런 다음 삭제하기 전에 확인할 수 있습니다.

관련 정보