使うと!前のコマンドを実行するには、コマンドも自動的に出力します。これを隠す方法はありますか?
例: 次
のようになります。
ralgrad:~$ echo test
test
ralgrad:~$ !!
echo test
test
これは私が望むものです:
ralgrad:~$ echo test
test
ralgrad:~$ !!
test
使うと!前のコマンドを実行するには、コマンドも自動的に出力します。これを隠す方法はありますか?
例: 次
のようになります。
ralgrad:~$ echo test
test
ralgrad:~$ !!
echo test
test
これは私が望むものです:
ralgrad:~$ echo test
test
ralgrad:~$ !!
test
私は bash ソースを見てきましたが、展開されたコマンドのこの自動出力を無効にする方法はありません。独自のバージョンの bash をコンパイルする必要があります。
何らかの理由で特に重要な場合はbashhist.c
、pre_process_line
関数を調べて、次の行をコメントアウト/削除してください。
printf (stderr, "%s\n", history_value);
最後の出力ではなく最後のコマンド!!
を繰り返すため、でそれを行うことはできません。私の知る限り、あなたが求めていることを達成することを可能にする単一のコマンドはありません。ただし、簡単なハックを試すことができます。
result=`echo test`
echo "$result"
次のバッチ ファイルを使用して、必要なものをシミュレートできます。
if [ -z $1 ]; then
exe=`fc -lrn | awk 'NR==2 {print;}'`
else
exe=`fc -lrn | cut -f2- | awk 'NR>=2 {print;}' | grep "^ $*" | head -n1 `
fi
eval $exe
ファイルの名前にしましょうh
(または、必要に応じて!
)。次に、次のことができます。
# echo Foo
Foo
# echo Bar
Bar
# h
Bar
# h echo F
Foo