wake-up-neo.com

보호 된 파일을 제거 할 때 "y"를 여러 번 발행하지 않아도되는 방법

"rm : 쓰기 방지 된 일반 파일 [x]를 제거 하시겠습니까?"에 대한 응답으로 사용할 솔루션을 찾고 있습니다.

Bashrc에서 문자를 여러 번 발행하고 캐리지 리턴을 시도하는 것을 생각하고있었습니다. 우리는 어떻게합니까?

60
Iancovici

업데이트 된 질문에 기초하여 편집 :

파일 제거에 대한 요청을 피하려면 -f ( "force") 옵션 :

rm -f /path/to/file

주어진 경로 중 하나라도 존재하지 않으면 not 이 경로를보고하고 성공적으로 반환됩니다. :

$ rm -f /nonexistent/path
$ echo $?
0

원래 답변 :

간단한 해결책은 다음과 같습니다.

yes "$string" | head -n $number | tr $'\n' $'\r'

yes는 줄 바꿈으로 구분하여 문자열을 무한정 반복합니다. head 다음에 $number 번 및 tr는 개행을 캐리지 리턴으로 변환합니다. 캐리지 리턴으로 인해 출력이 표시되지 않을 수 있지만이 명령 (bash)으로 전달하면 다음과 같이 표시됩니다.

printf %q "$(yes "$string" | head -n $number | tr $'\n' $'\r')"

bash가없는 사용자는 결과를 od, hexdump 또는 xxd로 파이프하여 반환 된 실제 문자를 볼 수 있습니다.

85
l0b0

내가 종종 겪은 다른 문제는 rmrm -i,/etc/bashrc에서 이와 같은 것 :

alias rm='rm -i'

이 경우 unalias rm 또는 몇 년 전에 찾은이 트릭을 사용하여 별칭으로 지정된 명령 앞에 백 슬래시를 넣어 한 번만 별칭을 무시할 수 있습니다. 예를 들면 다음과 같습니다.

\rm somefile

Nixcraft 의 기사를 통해 별칭에 대해 자세히 알아볼 수 있습니다.

7
slm

rm는 쓰기 보호 된 파일에 대해 "대화식"(사용자 입력 대기 프롬프트)을 표시하도록 하드 코딩됩니다. rm가 묻지 못하게하는 두 가지 방법이 있습니다.

rm -rf somedir

rm -r --interactive=never somedir

(dirs 대신 파일을 삭제할 때 -r 없이도 작동)

설명:

-frm를 "존재하지 않는 파일과 인수를 무시하고 프롬프트하지 않습니다"로 만듭니다.

--interactive=never는 대화식으로 말하지 않습니다. 다시 말하면 : 절대 프롬프트하지 마십시오.

-f--interactive=never의 차이점은 "존재하지 않는 파일과 인수를 무시합니다"라는 부분입니다.

비교:

$ rm -rf nonexistingname
$ echo $?
0

$ rm -r --interactive=never nonexistingname
rm: cannot remove 'nonexistingname': No such file or directory
$ echo $?
1

차이점은 주로 rm를 대화 형으로 만들지 않지만 여전히 오류를 처리하려는 스크립트를 작성할 때 흥미 롭습니다.

요약 : 명령 행에서 rm -rf를 사용하십시오. 스크립트에서 rm -r --interactive=never를 사용하십시오.


명시된 질문에 대한 답변 ( "보호 된 파일을 제거 할 때"y "를 여러 번 발행하지 않아도되는 방법")은 https://askubuntu.com/questions/338857/automatically-enter-input-in을 참조하십시오. -command-line/338860 # 33886

5
lesmana

모든 명령에 예를주십시오!

yes | rm -r /path/
yes | <command>

어쨌든 항상 -f :

rm -r -f /path
1
Nakamoto