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リードライン。多くのシェルはコマンドライン編集にreadlineを含み、bash
使用します。上の2行は、readlineに上矢印キー()と下矢印キー()のエスケープシーケンスを見つけたときに履歴検索機能を呼び出すように指示tcsh
します。\e[A
\e[B
答え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からいくつかの文字を入力すると、その行の任意の場所からその部分文字列を含むコマンドを検索できます。戻る代わりに前に移動するにはCtrl+を押します。S検索は増分です(入力と同時に検索など)。Alt+PとAlt+ はN非増分検索を提供します。
bashとtcshの代わりにzshに切り替えることができます。他のシェルにはないいくつかのきれいな機能があります。。 Bashと同様に、ZshにはデフォルトでCtrl+Rと+があります。 tcshと同じように機能するには、次の行を入力してください。CtrlSUpDown~/.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
デフォルトのシェルにします。