history 명령 을 사용하는 방법이 있지만 성공적으로 실행 된 명령 만 나열 하는지 궁금합니다 . 마찬가지로 오류를 일으킨 항목을 나열하는 방법이 있습니까?
각 명령의 종료 상태는 다음과 같습니다.
0
-명령 실행 성공
1
-확장 또는 리디렉션 중에 오류로 인해 명령이 실패하고 종료 상태가 0보다 큽니다.
2
-명령 사용법이 잘못
12
되었습니다-명령을 찾았지만 실행할 수 없습니다
127
-명령을 찾을 수 없습니다
http://www.linuxnix.com/2011/03/find-exit-status-script-command-linux.html echo $?
에서 명령을 진행하여 확인할 수 있습니다 .
예:
이 4 가지 명령을 실행 한 후 :
ls
help
lss
ls nonexistentfile
성공적인 명령 (종료 상태 0) 만 인쇄하도록 테스트를 시도했는데 'ls'와 'help'만 있어야합니다.
for j in `history | tail -5 | head -4 | cut -d ' ' -f5-`; do $j > cmd_out; if [[ `echo $?` != 0 ]]; then :; else echo $j | grep -v 'bash'; fi; done; rm cmd_out
이 결과는 다음과 같습니다.
ls
help
bash: lss: command not found
ls
bash: nonexistentfile.txt: command not found
이것은 다소 효과가 있지만 두 가지 문제가 있습니다.
- 어떤 이유로
grep -v 'bash'
'bash'가 포함 된 줄을 제외하지는 않지만 'bash'grep 'bash'
가있는 줄만 포함하면 왜 하나가 작동하고 다른 것이 작동하는지 잘 모르겠습니다. - 각 줄 / 명령을 문자열로 구분합니다. 마지막
ls
명령은해야
ls nonexistentfile
하지만, 실행의ls
와nonexistentfile
별도의 명령으로.
내가 명령에서 무엇을 조정해야하는지 또는 어떻게해야하는지에 대한 아이디어가 있습니까?
ls #$CODE, ll #$CODE
하고 역사 결과를 얻었 습니다. 그것이 당신에게 효과가 있는지 확실하지 않지만로 변경sed -i '\$s/\$/ \#\$CODE/' $HISTFILE'
해야했습니다sed -i '\$s/\$/ \#$CODE/' $HISTFILE
. 나는