特定の正規表現に一致するコマンドを履歴から実行できるかどうか疑問に思います。私はあなたが次のことをすることができることを知っています
fc 232 248
それはあなたのものに入ったhistory
次のリビジョン232-248に連続して進みます。
しかし、途中で私がしたくないコマンドがあればそれを指定する方法はありますか?今私のものを見つけてhistory
出力します。grep
history | grep checkout
これにより、支払いで行ったすべての最終作業が検索されます。
232 git checkout master files/file1.txt
234 git checkout master files/file2.txt
248 git checkout master files/file3.txt
いくつかの数字をフィルタリングするので、パイプで抽出された数字だけを実行したいと思います。その間のすべてではなく
答え1
特定の文字列(例"checkout"
:)または正規表現(例:)を含むbashですべてのコマンドを実行するには、次の手順を実行します。"checkout.+file\d"
history
grep -E "string_exp" $HOME/.bash_history | while read line; do eval "$line"; done
関数として保存できます~/.bashrc
。
#!/bin/bash
all_prev () {
grep -E "$1" $HOME/.bash_history | while read line; do eval "$line"; done
}
その後、次のように入力します。
all_prev checkout
編集する:
.bash_history
時間が経つにつれてファイルが蓄積されたために重複コマンドを多数実行したくない場合は、まだ設定されていない場合は、export HISTCONTROL=ignoredups
この項目が設定されていることを確認してください。~/.bashrc
毎回クエリを含む検索を再実行したくない場合は、
all_prev
正規表現を使用^
して$
行の先頭と末尾に文字を指定してください。