GNU/Linux >> Linux の 問題 >  >> Linux

bash で履歴の編集を無効にする方法

<ブロック引用>

どういうわけか、元のコマンドに影響を与えることができました。つまり、編集によって元のコマンドが履歴に戻されます。

右。履歴をさかのぼって行を編集すると なし Return キーを押してコマンドを実行しますが、代わりに別の履歴エントリに移動すると、編集したことになります 履歴エントリ。次に履歴を一覧表示すると、 * が表示されます 編集したことを示す行に。この「機能」は非常にイライラします。他の人はこれを再現する方法の良い例を提供しています.

<ブロック引用>

私の目標はこれを回避することです。そのため、以前のコマンドに対する編集は常に履歴に追加され、元のコマンドが置き換えられることはありません。

私もそれを無効にしたかった。 unix.stackexchange でこの回答を介して解決策を見つけました。

要約すると、revert-all-at-newline を有効にする必要があります。 デフォルトでオフになっている readline 設定。設定がオンの場合、bash は次のコマンドを実行したときに履歴に加えた変更を元に戻します。

シェルでこの設定を有効にするには、次を ~/.inputrc に追加する必要があります ファイルを開き、シェルを再起動します:

$include /etc/inputrc
set revert-all-at-newline on

独自の .inputrc を指定すると、最初の行が必要になると思います デフォルトの /etc/inputrc をファイルします ファイルが含まれていません。これはおそらく必要なものではありません。


以前のコマンドに戻って編集しても、それを実行しない場合 (履歴コマンドを使用して別のコマンドに移動して実行する代わりに)、編集は履歴リストに残ります。

Ctrl + C を押す 、編集後、この動作に対抗します。元のコマンドはそのまま残ります。つまり、元のコマンドへの編集の記憶をキャンセルします。


これが私自身の答えです。可能であれば、修正するか、詳細を提供してください。

「vi」オプションが bash で設定されている場合 (「set -o vi」 -- 「vi スタイルのコマンドライン編集インターフェースを使用する」)、履歴からコマンドを編集する 2 つのモードがあります。

最初のモード (「基本」と呼びましょう) は、Backspace、Del、および文字キーを使用してすぐに編集を開始する場合です。

もう 1 つのモードは「vi モード」で、Esc を押すと入ります。

履歴をそのまま保持したい場合は、同じ編集で両方のモードを使用しないでください。 bash が正確にどのように機能するかはわかりませんが、次のように考えることができます:

<オール>
  • 「vi モード」に入ると、「基本モード」で行った変更が元のコマンドに適用され、vi スタイルのコマンドを使用してさらに編集できるコマンドのコピーが作成されます。
  • Enter (実行)、上、下、または j、k (履歴内の別のコマンドに移動) を押すと、変更が適用されます。
  • Ctrl-C を押しても変更は適用されません。
  • 基本または vi スタイルの編集を単独で使用しても、履歴内の元のコマンドには影響しません。

  • Linux
    1. Bash履歴コマンドの使用方法

    2. LinuxでBashの履歴をクリアする方法

    3. LinuxでBashの履歴から特定のコマンドをクリアする方法

    1. Linuxのコマンド履歴を管理する方法

    2. タイプアヘッドをBash履歴検索(ctrl-r)に適用するにはどうすればよいですか?

    3. CentOS / RHEL :BASH シェルの履歴を無効にする方法

    1. Linuxでhistoryコマンドを使用する方法

    2. LinuxでBASHコマンドライン履歴をクリアする方法

    3. bashで編集するときにファイルを保存して閉じる方法は?