上矢印と下矢印を使用して、コマンド履歴内を移動できます。
Matlabなどの一部のIDEでは、何かを入力してから矢印キーを押すと、入力した内容で始まる履歴コマンドのみをスクロールします。これは本当に便利ですが、Shellターミナルでは機能しません。
シェルターミナルで同様の機能を取得する方法はありますか?端末の使用効率を向上させるためのその他のヒントはありますか?
あなたが探しているのは CtrlR。
タイプ CtrlR 次に、必要なコマンドの一部を入力します。 Bashは最初に一致したコマンドを表示します。入力を続けます CtrlR bashは、以前に一致したコマンドを循環します。
履歴を逆方向に検索するには、次のように入力します。 CtrlS 代わりに。 (もし CtrlS がそのように機能しない場合、XON/XOFFフロー制御を無効にする必要があることを意味します。そのためには、stty -ixon
を実行します。)
これは、man bash
の「検索」の下に記載されています。
これらを~/.inputrc
:
"\e[5~": history-search-backward
"\e[6~": history-search-forward
これらは Page Up そして Page Down あなたが望むように動作します。 (一部のディストリビューションではすでに構成されています。)私はこれらの方法が Ctrl+R またはhistory
。
^ r/^ s履歴i-searchに加えて:
alt. 前のコマンドの最後の「ワード」をカーソル位置に挿入します。それを繰り返して、古いコマンドから最後のワードを取得します。 (ただし、末尾の_&
_はバックグラウンドコマンドの最後のWordとしてカウントされることに注意してください)。
これは、_mkdir foo
_、cd
alt-dotに非常に便利です。上矢印、^ a、alt-d(前方ワードの削除)、cd
よりも高速です。
最後から2番目のWordを取得するには、esc
_-
_ _2
_ _alt+.
_を使用します(つまり、_alt+.
_にemacsスタイルの数値引数を使用します。負の数最後から正の数が最初からカウントされます。)しかし、これは通常、その価値よりも問題が多くなります。ある時点で、マウスに到達してコピー/貼り付けするか、上向き矢印とその一部を^ w/^ yする方が速くなります(以下を参照)。
端末が適切に/適切に設定されている場合、ctrl-leftとctrl-rightは単語単位で前後に移動します。そうでなければ、うまくいけば、少なくともalt-bとalt-fが同じことをするでしょう。
ctrl- /は取り消しです。少しオーバーシュートしたときに元に戻すことができれば、オートリピートを使用して単語をより効率的に削除できます。
コマンドのより強力なミキシング/マッチングは、Emacsと同じように機能するkill-ringを使用することから得られます。最後のctrl-w/ctrl-u/ctrl-backspace/alt-dを貼り付けるにはctrl-y。古いキルされたテキストを循環するalt-y。
複数のctrl-wまたは続けて何でもkill-ringエントリを作成します。 2つを削除し、後で1つだけ貼り付ける場合は、左矢印または右矢印などを使用してエントリを分割します。
これらすべてを組み合わせると、
alt+r
_を使用して、一部を削除する前の状態に戻します。>
_を押すと、履歴の最後(つまり、下向き矢印)に移動して、途中のコマンドに戻ります。その他のインタラクティブな使い方のヒント:
_shopt -s globstar
_を有効にすると、_**/*.c
_(現在のディレクトリを含む再帰的)を実行できるようになります。インタラクティブな使用には便利な場合がありますが、通常は_find -name '*.c' -exec foo {} +
_の方が適しています。
Bashスクリプトを作成する場合、_shopt -s extglob
_をインタラクティブシェルでも有効にすると便利です。あなたは時々*.!(c|h)
のようなものの使用を見つけて、.cまたは.hで終わらないファイルに一致させます。
_ls -l
_、less
など、よく行うエイリアスを見つけます。 (_cp -i
_、_mv -i
_、および_rm -I
_は素晴らしいです。dependingの習慣に慣れないでくださいGNU rm's -Iはすべての引数を1回要求します。)
私は_alias m=less
_が好きです(mは "more")。 less
を設定しました , そして . 前/次のファイル(lesskey
)にバインドされています。デフォルトは、オートリピートで使用できない複数のキーを押すシーケンスです。
私はGNU screen内ですべてを実行するのが好きです。Konsole(または私が試した他の端末エミュレータ)でタブのボートロードよりも番号付きのスクリーンウィンドウを追跡する方が簡単だと思います。 screen
をまだ知らない場合は、tmuxを学習してください。これは、tmuxの方が新しく、扱いにくいためです。
別のシェルと同じcwdで新しいシェルを開く機能のようなものを得るために、私は cd/pushd/popdのカスタムフックを使用して_cds 8
_を実行し、シェルの任意のディレクトリにcdします画面ウィンドウ8が使用中です。 これは、画面セッションが1つしかない限り、画面セッション外のシェルでも機能します。
次の行を~/.inputrc
に追加します
"\e[A": history-search-backward
"\e[B": history-search-forward
これはエグモントの答えに似ていますが、Page UpとPage Downを使用する代わりに、上向き矢印と下向き矢印のエスケープシーケンスを使用します。この方法は、Macで使用する方がはるかに便利です。
私は常にマシンに大きな[〜#〜] histsize [〜#〜]値を設定して、より長い履歴リストと[〜#〜] histtimeformatを保持する傾向がある[〜#〜]タイムスタンプ値を使用して、コマンドがいつ実行されたかを確認できます。
export HISTSIZE=10000
export HISTTIMEFORMAT="%m/%d/%Y %T "
私が通常使用する方法は、history
コマンドをgrep
と組み合わせることです
IE:
history | grep <command im looking for>
これにより、そのコマンドを含む、入力したコマンドの番号付き履歴が表示されます。その後、次のコマンドを使用できます。
!<number listed in history command>
そのコマンドをやり直す。
IE:
history | grep history
142 history
143 history | grep lvresize
568 history | grep echo
570 history | grep echo
571 history | grep history
に続く: !571
繰り返しますhistory | grep history
zsh
の代わりにbash
を使用しても問題ない場合は、oh-mi-zshを使用できます。
上矢印と下矢印でコマンド履歴をナビゲートできます。 (Mathlabのように)すでにテキストを入力しているときも同じナビゲーションが可能です。
edit:Oh-my-zshは、開発者向けの大規模なソフトウェアパッケージで、他の多くの機能が含まれています。エイリアス、テーマ、プラグイン。これらの追加機能により、キーボードショートカットよりもディストリビューションの使用が複雑になります。
私はbashターミナルで毎日4つのヒント(および他のいくつか)を使用しました:
最後のコマンドを実行:!!
コマンドを実行[〜#〜] n [〜#〜]履歴から:!N
次で始まる最後のコマンドを出力prefixfrom history:!prefix:p
次で始まる最後のコマンドを実行prefixfrom history:!prefix
次のエイリアスを〜/ .bashrcに追加します
alias h='history | awk '"'"'{$1="";print}'"'"' |sed "s/^ *//" |grep -v "^h " | sort | uniq | grep'
使用法: h fire
はfireを含むコマンドのリストを取得します。またはh ^fire
はfireで始まるコマンドのリストを取得します。
これは、一連のコマンドを同時に表示したい場合に便利です。
ところで、 '"'"'
は醜いですが、一重引用符で一重引用符を回避する他の方法を見つけることができませんでした。