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

관련 정보