毎日実行する必要がある多くのコマンドがあり、通常はいくつかのバリエーションがあります。
今、私はすべてを保存し.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と組み合わせUpてCtrl入力しました。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