0

使うと!前のコマンドを実行するには、コマンドも自動的に出力します。これを隠す方法はありますか?

例: 次
のようになります。

ralgrad:~$ echo test
test
ralgrad:~$ !!
echo test
test

これは私が望むものです:

ralgrad:~$ echo test
test
ralgrad:~$ !!
test
4

3 に答える 3

1

私は bash ソースを見てきましたが、展開されたコマンドのこの自動出力を無効にする方法はありません。独自のバージョンの bash をコンパイルする必要があります。

何らかの理由で特に重要な場合はbashhist.cpre_process_line関数を調べて、次の行をコメントアウト/削除してください。

printf (stderr, "%s\n", history_value);
于 2013-02-22T12:55:12.917 に答える
0

最後の出力ではなく最後のコマンド!!を繰り返すため、でそれを行うことはできません。私の知る限り、あなたが求めていることを達成することを可能にする単一のコマンドはありません。ただし、簡単なハックを試すことができます。

result=`echo test`
echo "$result"
于 2013-02-22T12:09:17.740 に答える
0

次のバッチ ファイルを使用して、必要なものをシミュレートできます。

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
于 2013-02-22T15:57:00.170 に答える