rm -i를 사용하여 ‘모두에게 예’말하기 이것은 각 파일을

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

rm -i *

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

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



답변

아니.

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


답변

글쎄, 이것은 실제로 당신의 질문에 대답하지 않습니다. 그러나을 사용하는 대신 다음에 대한 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'

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


답변

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

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

$ yes "yes" | rm -vRI directory

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

답변

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

주의하십시오!


답변

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

ctrl-a : exec .! yes y

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


답변

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

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은 파이프를 읽고 모든 것을 덮어 씁니다.


답변

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