シェルプロンプトで上矢印キーを押すと、同じプレフィックスを持つ以前のコマンドを検索します。

シェルプロンプトで上矢印キーを押すと、同じプレフィックスを持つ以前のコマンドを検索します。

FreeBSD の世界から来た私は、Linux ターミナルを FreeBSD のターミナル、特に 9.1 バージョンのように動作させたいと思っています。基本的に、cdターミナルに入力して「上」矢印を押すと、 で始まる履歴内のすべてのコマンドを参照できるため、cd多くの時間を節約できます。

Linux Debian または CentOS でこの機能を有効にする方法がわかりません。全体を入力する必要があります。どなたか助けていただけないでしょうか。

答え1

以下のものを に追加します~/.inputrc:

# Press up-arrow for previous matching command
"\e[A":history-search-backward
# Press down-arrow for next matching command
"\e[B":history-search-forward

説明

~/.inputrcの設定ファイルですGNU リードラインやを含む多くのシェルは、bashコマンドtcshライン編集に readline を使用します。上記の 2 行は、上矢印キー ( \e[A) と下矢印キー ( \e[B) のエスケープ シーケンスに遭遇したときに、readline に履歴検索機能を呼び出すように指示します。

答え2

FreeBSDとLinuxはデフォルトで異なるシェルを使用しています。FreeBSDのデフォルトはtcshは、以前はbashよりも優れた対話機能を持っていましたが(しかしbashも追いつきました)、スクリプト機能が著しく低下

使い慣れた環境に戻す最も簡単な方法は、Linux でシェルを tcsh に切り替えることです。tcsh がシステム全体にインストールされている場合 (インストールされていない場合は、システム管理者にインストールを依頼してください)、 を実行してchsh -s tcshデフォルトのシェルを変更します。

あるいは、bash を使い慣れたコマンドに設定することもできます。デフォルトでは、矢印Upと はDown、入力したプレフィックスで始まるコマンドだけでなく、履歴内のすべてのコマンド間を移動します。これを使い慣れた動作に変更するには、.bashrcホーム ディレクトリにある bash の初期化ファイルに次の行を追加します。. ~/.bashrc初期化ファイルを再読み込みするには、新しいシェルを実行するか起動します。

bind '"\eOA": history-search-backward'
bind '"\e[A": history-search-backward'
bind '"\eOB": history-search-forward'
bind '"\e[B": history-search-forward'

エスケープ シーケンスは、矢印キーを押したときに端末からシェルに送信されるものです。 は、端末に応じて(escape、、) または のいずれかUpになります。 の場合も同様です。\eOAOA\e[ADown

デフォルトでは、bash はコマンド履歴を検索するためのさまざまなキー バインディングを提供します。Ctrl+を押してから文字を入力すると、行の任意の場所でこの部分文字列を含むコマンドを検索できます。 +Rを押すと、後方ではなく前方に移動します。検索は増分検索 (つまり、入力時に検索) です。+と+ は非増分検索になります。CtrlSAltPAltN

bashとtcshの代わりにzshに切り替えることもできます。他のシェルには見られない優れた機能がいくつかあります. Zshには、bash と同様にデフォルトでCtrl+RCtrl+ があります。tcsh と同じようにとを取得するには、 に次の行を追加します。SUpDown~/.zshrc

bindkey '\eOA' history-beginning-search-backward
bindkey '\e[A' history-beginning-search-backward
bindkey '\eOB' history-beginning-search-forward
bindkey '\e[B' history-beginning-search-forward

どこでも同じシェルを使用したい場合は、ポートがインストールされていれば、FreeBSD でも bash または zsh を使用できます (この場合も、システム管理者に問い合わせてください)。

答え3

tcshほとんどの Linux ディストリビューションで利用可能です。tcshパッケージをインストールして実行し、chsh -s /bin/tcshデフォルトのシェルに設定してみてください。

関連情報