tcsh에서 이 효과를 어떻게 얻을 수 있나요?

tcsh에서 이 효과를 어떻게 얻을 수 있나요?

bash에서 precmd() 함수를 구현할 때 trap ??? DEBUGprecmd() 호출의 명령이 set -o functraceand 를 사용하여 0이 아닌 반환 코드를 반환하면 입력된 명령을 실행 불가능하게 만들 수 있습니다 shopt -s extdebug.

postcmdtcsh의 별칭을 통해 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에서 실행되어야 합니다.

관련 정보