Linux

Bash: コマンド履歴のインクリメンタル検索でハイライトされないようにする

投稿日:

Bash 5.1 & Readline 8.1 から、ターミナル上で Ctrl+ R キーを押し、コマンド履歴からコマンドをインクリメンタル検索すると、表示された候補の中の一致する部分がハイライトされるようになりました。

例えば、以下のコマンドを予め実行しておきます。

ls -t | head

次に、Ctrl+ R キーを押して コマンド履歴に対するインクリメンタル検索 (reverse-i-search) を開始させてから、「ls -t」までを入力します。すると、コマンド履歴の中から先程実行したコマンドがヒットし、以下の状態になります。

ls -t」の部分がハイライトされています。この状態で Enter キーを押せば、「ls -t | head」が実行できます。

この動作を無効にしたい場合は、~/.inputrc ファイルに以下を記述して、ログインし直します。

set enable-bracketed-paste off

一時的にこの機能を無効にしたいだけの場合は、以下のコマンドを実行します。

bind 'set enable-bracketed-paste off'

メモ

  • 前提として「ターミナル上でペースト操作した際の文字列を、ひとつのまとまりとして、通常とは異なる扱いで貼り付ける」ための bracketed paste mode という機能があります。これは、「ターミナル上でテキストエディタなどが開いており、自動インデント機能が有効になっている際に複数行の文字列が貼り付けられると、改行コードが検知されて余計なインデントが挿入されてしまう」といった問題を避けるための機能のようです。参考:Bracketed-paste – Wikipedia
  • Bash 5.1 & Readline 8.1 では、この機能が有効なとき(デフォルトで有効です)にペーストされた文字列をハイライトする機能が追加されましたが、これに伴う形で、コマンド履歴のインクリメンタル検索で一致した部分がハイライトされる機能も追加されました。

参考

📂-Linux

執筆者:labo


comment

メールアドレスが公開されることはありません。

関連記事

Linux

シェルスクリプト (Bash) では組み込みコマンド set を活用しましょう

Linux や MacOS、Windows の WSL でシェルスクリプト(Bash)を書く場合は、組み込みコマンド set を活用しましょう。より完成度の高い処理を書くことができます。 スポンサード …

Let's Encrypt

Let’s Encrypt でワイルドカードを使う

手持ちの CentOS 7 に入れてある certbot パッケージが バージョン 0.22.0 になり、Let’s Encrypt のワイルドカードに対応しましたので試してみました。 目 …

Linux

sed コマンドの基本形式

sed コマンドの基本的な指定形式について説明します。

Linux

「よく使うコマンドランキングの表示」を1つのコマンドにする

目次1. はじめに2. 入力が面倒なコマンドを新たなコマンド(今回は関数)にする3. 作成した関数の実行4. コマンドの引数も合わせて調べたい5. 履歴のフォーマットが異なる場合6. まとめ 1. は …

Linux

Linux のコマンドラインで発生するビープ音を消す

Linux のコマンドでビープ音を消す方法を紹介します。