원격 컴퓨터에서 파일 삭제

원격 컴퓨터에서 파일 삭제

와일드카드가 있는 파일을 삭제합니다.

rm /home/files/*.csv

하지만 SSH를 통해 원격 컴퓨터에서 명령을 실행하려고 하면

ssh user@ip 'rm /home/files/*.csv'

*.csv파일을 삭제하려고 하는데 오류가 발생합니다.

rm: cannot remove '/home/files/*.csv': No such file or directory

rm와일드카드를 보내는 올바른 구문은 무엇입니까 ssh?

두 머신 모두 Ubuntu 20.04와 표준 프로그램(bash, ssh 등)이 있습니다.

답변1

올바른 구문을 사용했습니다. 패턴과 일치하는 파일 이름이 없을 가능성이 높습니다(사실 이댓글로 확인됨). 이 경우 쉘은 패턴을 확장하지 않고 rm이를 인수로 호출하려고 시도합니다.

로컬을 사용하지 않으면 ssh동일한 문제가 발생합니다.

$ rm /tmp/wont*match
rm: cannot remove '/tmp/wont*match': No such file or directory

접선 토론:

일부 쉘(예: zsh기본 쉘)은 일치하지 않는 와일드카드 패턴을 오류로 처리합니다. 즉, 패턴이 아무것도 일치하지 않으면 명령을 실행하지도 않습니다.

$ rm /tmp/wont*match
zsh: no matches found: /tmp/wont*match

쉘 옵션을 사용하여 쉘이 bash동일한 방식으로 작동하도록 만들 수 있습니다 failglob. 다음 예에서는 rm호출되지 않습니다.

$ shopt -s failglob
$ rm /tmp/wont*match
bash: no match: /tmp/wont*match

다음과 같은 호출에서 사용할 수 있습니다 ssh.

ssh user@ip 'bash -O failglob -c "rm /home/files/*.csv"'

분명히 삭제하려는 파일 이름을 찾을 수 없다는 진단 메시지를 묵음으로 사용할 수 있지만 rm -f(실제로 요청하는 경우) 종료 상태도 가려집니다.rm 명령이 실제로 무언가를 삭제했는지 확인하려는 경우.

답변2

찾을 수 없는 파일을 삭제하는 것에 대해 걱정하지 말라고 알려주는 플래그를 rm사용하여 음소거 할 수 있습니다 .-f

ssh user@ip 'rm -f home/files/*.csv'

관련 정보