
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になります。 の場合も同様です。\eOA
O
A
\e[A
Down
デフォルトでは、bash はコマンド履歴を検索するためのさまざまなキー バインディングを提供します。Ctrl+を押してから文字を入力すると、行の任意の場所でこの部分文字列を含むコマンドを検索できます。 +Rを押すと、後方ではなく前方に移動します。検索は増分検索 (つまり、入力時に検索) です。+と+ は非増分検索になります。CtrlSAltPAltN
bashとtcshの代わりにzshに切り替えることもできます。他のシェルには見られない優れた機能がいくつかあります. Zshには、bash と同様にデフォルトでCtrl+Rと
Ctrl+ があります。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
デフォルトのシェルに設定してみてください。