올바른 파일을 먼저 제거하고 싶다고 말하면 다음과 같이했습니다.
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은 파이프를 읽고 모든 것을 덮어 씁니다.
답변
- 로
rm
백그라운드 에서 프로세스를 넣습니다Ctrl+Z
. - 마지막 명령을 기억하십시오 (
rm -i *
명령) - 제거
-i
Enter
명령을 실행fg %1
Ctrl+C