bash에서 precmd() 함수를 구현할 때 trap ??? DEBUG
precmd() 호출의 명령이 set -o functrace
and 를 사용하여 0이 아닌 반환 코드를 반환하면 입력된 명령을 실행 불가능하게 만들 수 있습니다 shopt -s extdebug
.
postcmd
tcsh의 별칭을 통해 tcsh에서 유사한 기능을 구현 하려고 합니다 . 그러나 bash와 동일한 작업을 수행하는 방법에 대한 자세한 내용은 tcsh 문서에서 찾을 수 없습니다( postcmd
명령이 0이 아닌 RC로 실패하는 경우 프롬프트에 입력된 명령을 실행하지 마십시오).
tcsh에서 이 효과를 어떻게 얻을 수 있나요?
원하는 결과:
# Set up postcmd alias to check of current user is "OK" (in OK file)
MYUSER:~> alias postcmd 'grep $USER /tmp/ok_users > /dev/null'
# Add myself to OK list (in another xterm)
MYUSER:~> echo "$USER" > ! /tmp/ok_users
MYUSER:~> cat /tmp/ok_users
MYUSER
MYUSER:~> grep $USER /tmp/ok_users | wc -l; echo $?
1
0
# Run command - expect it to succeed:
MYUSER:~> echo TEST2
TEST2 # <==== As expected
##########
# Now, let's make sure I'm NOT in OK users (in another xterm).
MYUSER:~> echo "junk" > ! /tmp/ok_users
MYUSER:~> cat /tmp/ok_users
junk
MYUSER:~> grep $USER /tmp/ok_users | wc -l ; echo $?
0
1
# Now, what I need is, for my typed command to NOT be executed
# due to "postcmd" hook command (grep) failing
MYUSER:~> echo TEST2
MYUSER:~> <==== Want to NOT echo anything. How do I do that?
대답이 이식 가능한 OS이기를 바라지만, 필요한 경우 최소한 RedHat Enterprise Linux 6에서 실행되어야 합니다.