履歴コマンドを実行せずにコマンドラインに配置します。

履歴コマンドを実行せずにコマンドラインに配置します。

私は!nを使います。ここで、(n) は履歴ファイルで 1 行を実行するために使用される行番号であり、コマンドプロンプトでその行を実行したいと思います。コマンドプロンプトはHistory | lessを介して検索されます。

しかし、手動で変更したいコマンドライン履歴イベントがあります。履歴イベントの内容を実際に実行せずにコマンドラインに挿入して変更し、Enterキーを押すことができるようにするにはどうすればよいですか?

最高、

答え1

履歴の交換後に実行するのではなく、印刷コマンドを要求するには、以下を追加します。:p 修飾子、例えば!42:p。生成されたコマンドも履歴に入力されるため、Upを押して編集できます。

お持ちの場合histverify オプションshopt -s histverify)を設定すると、いつでも過去の置換結果を編集できます。

これfc組み込み履歴拡張(単語の表示なし)への制限されたアクセスを提供し、外部エディタで以前のコマンドを編集できます。

!prefixusingで始まった最後のコマンドprefix!?substringで始まる最後のコマンドを参照できますsubstring。これにより、探しているものが何であるかを知るときに多くの時間を節約できますhistory | less

以前の履歴を検索する別の方法は、徐々に検索することです。Ctrl+を押して、R探しているコンテンツのサブストリングを入力し始めます。これまで検索文字列の前の項目に移動するにはCtrl+を押し、移動しすぎるには+を押します。 +、+、および一般文字を除くほとんどのキーは増分検索を終了し、一般的な操作を実行します(矢印キーはコマンドを実行するために到達した行にカーソルを移動します)。RCtrlSCtrlRCtrlSBackspaceEnter

答え2

もう一つの小さなもの:Alt+#

現在の行をコメントアウトし、履歴バッファに移動します。

したがって、コマンドラインを組み合わせてファイルを検索するために一時コマンドを実行する必要がある場合は、Alt+を押して#別のコマンドを実行して履歴で検索し、コメントアウトを解除して続行します。

答え3

Enterを押す前に魔法のスペースを使用して履歴を拡張できます。 .inputrc で空間をマジック空間にマップします。

$if Bash
     Space: magic-space
$endif

記録仕様の後にスペースを入力するたびに、スペースはすぐに拡張されます。これは編集したい場合にも便利です!

答え4

私は通常Ctrl+を使用rして検索し、Ctrl+を使用eして実行せずに行の末尾に移動します。

関連情報