"rm : 쓰기 방지 된 일반 파일 [x]를 제거 하시겠습니까?"에 대한 응답으로 사용할 솔루션을 찾고 있습니다.
Bashrc에서 문자를 여러 번 발행하고 캐리지 리턴을 시도하는 것을 생각하고있었습니다. 우리는 어떻게합니까?
업데이트 된 질문에 기초하여 편집 :
파일 제거에 대한 요청을 피하려면 -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
로 파이프하여 반환 된 실제 문자를 볼 수 있습니다.
내가 종종 겪은 다른 문제는 rm
이 rm -i
,/etc/bashrc에서 이와 같은 것 :
alias rm='rm -i'
이 경우 unalias rm
또는 몇 년 전에 찾은이 트릭을 사용하여 별칭으로 지정된 명령 앞에 백 슬래시를 넣어 한 번만 별칭을 무시할 수 있습니다. 예를 들면 다음과 같습니다.
\rm somefile
Nixcraft 의 기사를 통해 별칭에 대해 자세히 알아볼 수 있습니다.
rm
는 쓰기 보호 된 파일에 대해 "대화식"(사용자 입력 대기 프롬프트)을 표시하도록 하드 코딩됩니다. rm
가 묻지 못하게하는 두 가지 방법이 있습니다.
rm -rf somedir
과
rm -r --interactive=never somedir
(dirs 대신 파일을 삭제할 때 -r
없이도 작동)
설명:
-f
는 rm
를 "존재하지 않는 파일과 인수를 무시하고 프롬프트하지 않습니다"로 만듭니다.
--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
모든 명령에 예를주십시오!
yes | rm -r /path/
yes | <command>
어쨌든 항상 -f
:
rm -r -f /path