tcshでこの効果をどのように取得できますか?

tcshでこの効果をどのように取得できますか?

bashでprecmd()関数を実装するときに、trap ??? DEBUGprecmd()呼び出しのコマンドがset -o functraceandを使用してゼロ以外の戻りコードを返すと、入力されたコマンドを実行できなくなりますshopt -s extdebug

postcmdtcshの別名を介してtcshで同様の機能を実装しようとしています。ただし、bashと同じ操作を実行する方法の詳細については、tcsh文書にはありません(コマンドがゼロ以外のpostcmdRCで失敗した場合は、プロンプトに入力されたコマンドを実行しないでください)。

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で実行する必要があります。

ベストアンサー1

おすすめ記事