
上矢印キーを押すと、以前に入力したコマンドに移動できます。そのうちの1つを修正すると履歴が変わることがわかりました。たとえば、次のように入力すると:
echo a
echo b
echo c
[up][up][backspace]d[ctrl+c]
今の記録によると、2番目のコマンドではecho d
ありませんでしたecho b
。どうすればecho b
歴史上1位を維持できますか?
たとえば、多くのオプションを含む非常に長いコマンドを実行するとします。その後、やり直したいと少し変更したかったので、履歴を見直して変更しましたが、実際にやり直す必要はないことに気づき、代わりに別のオプションを考えました。その後、後で戻って私が実行したコマンドを覚えたいです。しかし、ちょっと待ってください。これで、履歴に誤った内容が表示されます。
このようなことはほとんど発生しませんが、発生すると迷惑になります。元の履歴を自動的に保存する方法はありますか?
答え1
あなたの~/.inputrc
set revert-all-at-newline on
場合によっては、デフォルト値(off)として見つけることができます。戻る前に実行すると、履歴行に対するすべての変更を
強制的にキャンセルする必要があります。 (詳細を参照してください)。readline
accept-line
man bash
編集する:
CTRL+c
それ以来、set revert-all-at-newline on
うまくいきますbash-4.3.30
。
# GNU bash, version 4.3.30(1)-release
# Emacs-mode
echo c
[up][backspace]d[Ctrl+c][up] # you should see echo c
しかし:
echo c
[up][backspace]d[down][Ctrl+r]echo[Ctrl+j][Ctrl+c][up] # you should see echo d
答え2
通常:
CTRL-a # ENTER
そうするでしょう。
変更されたコマンドを実行すると、元のコマンドが記憶されます。もちろん実際に実行したくないので#
。
あなたの例では、記録には、、、echo a
がecho b
含まecho c
れます# echo d
。