bash 기록에서 "위험한"명령을 기록하지 않도록 .bashrc
파일에 다음 줄을 추가했습니다 .
HISTIGNORE='rm *:mv *:cp *:cat*>*:pv*>*'
이것은 잘 작동하지만 부작용이 있습니다. 컴퓨터에서 실행 된 명령의 전체 기록을 볼 수 없습니다. 실험을위한 여러 머신이 있고 모든 명령이 실행되는 것을보고 싶습니다. bash internal history
을 사용하여 실행 된 명령을 표시하고 오늘 날짜를 grep 할 수 있습니다.
history | grep Sep-28
내가하고 싶은 것은 "위험한"명령도 기록하지만 #
줄의 시작 부분에를 넣어서 실수로 기록에서 명령을 실행하면 손상이 발생하지 않도록하는 것입니다.
이것이 가능한지 전혀 모른다.
업데이트 및 설명 :
이것이 나에게 문제가되는 주된 이유는 일반적으로 여러 터미널에서 내 컴퓨터에 연결되어 있고 한 터미널에서 실행 된 명령을 즉시 다른 터미널의 기록으로 읽기 때문입니다. 이것은 달성
PROMPT_COMMAND="history -a; history -c; history -r"
두 개의 터미널이 열려 있다고 상상해 봅시다. 하나에는 cat /dev/foo > file.out
프로세스가 실행 중입니다. 두 번째로로 진행 상황을 확인합니다 ls -lAhF
. 나는 반복 계속 ls
눌러 Up과 ENTER(역사이며, 마지막 명령). 곧 첫 번째 명령이 완료로, 역사에서 마지막 명령은 더 이상 없다 ls
,하지만 cat /dev/foo > file.out
. 주의하지 않으면 cat을 다시 시작하고 file.out을 덮어 씁니다.
내가 달성하고자하는 것은 cat 명령 앞에 #
실행되지 않도록 cat 명령 앞에 오는 것입니다. 그러나 나는 여전히 그것을 역사에서보고 주석 처리를 취소하여 (긴 명령 인 경우) 재사용 할 수 있습니다.
watch ls -lAhF
또는while sleep 1; do ls -lAhf; done
; 파일 크기를 보는 대신pv /dev/foo > file.out
( ivarch.com/programs/pv.shtml )을 사용할 수 있습니다 .