rm -i를 사용하여 '모두에게 예'말하기


10

올바른 파일을 먼저 제거하고 싶다고 말하면 다음과 같이했습니다.

rm -i *

내가 제거하는 파일에 문제가 없는지 확인하십시오. 그래서 이것은 각 파일을 요구합니다. 몇 개의 파일을 작성한 후, 내가 제거하고 싶었다는 것을 알고 있다고 가정하십시오. CTRL+C그냥 일 을 하는 대신에 모두에게 예rm * 라고 말할 수있는 방법이 있습니까?

이 질문은 기능보다는 호기심에서 비롯됩니다.


이상한 질문이지만 어쨌든 우리의 답변에서 창의력을 발휘합시다!
고인돌

답변:


8

아니.

디버거로 '대화식'비트를 뒤집는 방법을 찾지 못하면.


[citation needed] :-)
Daniel Beck

6
@Daniel : coreutils/src/remove.c:335coreutils/lib/yesno.c:46(생성됨) → rpmatch(3): "인식 된 부정적 응답에 대해 0을 반환 ("no "), 인식 된 긍정적 인 반응에 대해 1을 반환 ("yes "), 응답 값을 인식 할 수없는 경우 -1
user1686

아주 좋은 발견!
Daniel Beck

3
또한 많은 수의 y [줄 바꿈]을 터미널에 붙여 넣을 수 있습니다. "모두 예"는 아니지만 동일한 일이 발생합니다.
Olli

하하 'y [linebreak]'에 대한 진실, 나는 그것을 좋아한다! :)
Amit

9

글쎄, 이것은 실제로 당신의 질문에 대답하지 않습니다. 그러나을 사용하는 대신 다음에 대한 rm -i별칭 rm을 고려하십시오 rm -I.

매뉴얼 페이지는 다음과 같이 말합니다.

-I     prompt once before removing more than three files, or when removing 
       recursively. Less intrusive than -i, while still giving protection 
       against most mistakes

~/.bashrc넣어 :

 alias rm='rm -I'

이것은 실제로 유용합니다!


4

내가 모두에게 '예'라고 말할 수있는 방법이 있습니까?

이 코드를 사용하여 대답은 그렇습니다.

$ yes "yes" | rm -vRI directory

  • v : 제거 된 파일 목록 표시
  • R : 디렉토리와 그 내용을 재귀 적으로 제거
  • I : 위의 권장 사항에 따라.

3

먼저 확인한 ls *.bla다음 rm -f *.bla어쩌면?

주의하십시오!


하하 사실 이것은 가능성이다
Amit

3

화면에서 실행중인 경우 (일반적으로 좋은 아이디어) 다음을 수행 할 수 있습니다.

ctrl-a : exec .! yes y

그러면 화면이 y가 출력 인 'yes'명령이 실행되고 해당 출력이 실행중인 프로그램 (rm -i)으로 보내집니다.


2

애플리케이션 파일 디스크립터를 즉시 교체하여 수행 할 수 있습니다. 그래도 중간 파일이 필요합니다.

gdb와 이와 같은 명명 된 파이프를 사용할 수 있습니다 (더 많은 터미널을 사용하고 있다고 가정하면 화면이나 다른 것을 사용해야 함).

  • "mkfifo myYesYesPipe"로 명명 된 파이프 생성
  • rm -i로 대화 형 사본을 시작하고 PID를 찾으십시오.
  • gdb 열기

그런 다음 gdb에 다음 명령을 입력하여 PID를 대체하십시오.

attach rmPID
call open("/path/to/myYesYesPipe",66,0666)
call dup2(3,0)
call close(3)
detach
quit

이것은 키보드를 rm에 대한 명명 된 파이프로 대체합니다.

이제 명명 된 파이프를 채워야합니다

  • 예> / path / to / myYesYesPipe를 실행하십시오.

rm은 파이프를 읽고 모든 것을 덮어 씁니다.


@grawity. 디버거를 사용하도록 영감을 주셨습니다.
David Costa

1
  1. rm백그라운드 에서 프로세스를 넣습니다 Ctrl+Z.
  2. 마지막 명령을 기억하십시오 ( rm -i *명령)
  3. 제거 -i
  4. Enter 명령을 실행
  5. fg %1
  6. Ctrl+C

3
5s/fg/kill/; 6d
user1686 년

3
사용자가 명시 적으로 원하지 않는 것보다 이것이 더 낫습니까?
Daniel Beck
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.