よく使うコマンドをすばやく保存してアクセスするには?

よく使うコマンドをすばやく保存してアクセスするには?

毎日実行する必要がある多くのコマンドがあり、通常はいくつかのバリエーションがあります。

今、私はすべてを保存し.bash_historyてアクセスするためにCTRL-を使用しますRが、より良い方法があるかどうか疑問に思います。私が探しているもの:

  • 新しいコマンドを簡単に追加
  • 目的のコマンドを簡単に検索して再実行
  • 提案に不要なコマンドを避ける

cd残念ながら、bash_historyは3番目の要件にはあまり強力ではありません。 and を実行すると、ls履歴ファイルが非常に迅速に入力されます。私は最近、重複や特定のコマンドを避けるためにレコードを整理できることを学びましたがHIST_SIZE、すべてを整理する前にこれが最善の方法であることを確認したいと思います。

答え1

もう一つのヒント:私は時々コマンドをブックマーク/表示するためにコメントを使用します。

my_command #bookmark

それから:

[ctrl-r]#bookmark

答え2

次のreadlineコマンドが非常に便利であることがわかりました。

history-search-backward,
history-search-forward

reverse-search-history(これは - 、 -forward-search-historyの一般的なバインディングとは異なります。)CtrlRCtrlS

このコマンドを次の行Ctrlと組み合わせUpCtrl入力しました。Down~/.inputrc

"\e[1;5A": history-search-backward
"\e[1;5B": history-search-forward

仕組み:コマンドの先頭にいくつかの文字を書き、Ctrl- を押すとUp、そのプレフィックスで始まる次の前のコマンドが表示されます。満足したら、コマンドを修正してEnter実行を押すことができます。

答え3

「エイリアス」を使用してください

alias素晴らしいツールです。

  • 現在のシェルセッション中に使用するコマンドラインを簡単に宣言できます。
  • 後で使用するには、シェル構成に追加するだけです。

エイリアスを使用すると、まるで直接入力したのと同じであるため、非常に柔軟です。たとえば、パイプで使用できます。

alias findfoo="grep 'foo'"
echo 'foo1 \n foo2 \n bar1 \n bar2 \n foo3' | findfoo # Does your custom grep

まだ指定されていないフラグを渡して「わずかなバリエーション」を作成できる必要があります。

echo 'foo1 \n foo2 \n bar1 \n bar2 \n foo3' | findfoo -v # finds non-matches

答え4

コピーを保管していますGitの.bash_history。これを簡単にするために、次のように設定しました。

# don't put duplicate lines in the history
# don't save commands which start with a space
HISTCONTROL=ignoredups:erasedups:ignorespace

# append to the history file, don't overwrite it
shopt -s histappend

存在する.bashrc、および次のコマンド(一般目的で修正)クリーンアップスクリプト

# Ensure a single space at the end of each line to easier add more parameters
sed -i -e 's/ *$/ /' "~/.bash_history"

sort --unique --output="~/.bash_history" "~/.bash_history"

行を追加する前に実行してくださいgit gui。各コマンドは履歴ファイルを変更するため、特定のリポジトリを更新する特別なコマンドもあります。

git stash && git pull && git stash pop

関連情報