概要
設定変更時、過去のコマンド履歴を確認するため
history | grep command
として過去の履歴を確認します。これをシェルスクリプトの力で解決します。(スクリプト作成にはGemini pro 2.5を利用)
スクリプト
- histgrep.sh
#!/bin/bash
# スクリプトに引数が渡されたかどうかで処理を分岐
if [ "$#" -gt 0 ]; then
# 引数が存在する場合、その値を検索文字列として使用
SEARCH_TERM="$1"
else
# 引数がない場合、対話式でユーザーに入力を促す
read -p "探したいコマンドを入力してください: " SEARCH_TERM
fi
# 検索文字列が空の場合はエラーメッセージを出して終了
if [ -z "${SEARCH_TERM}" ]; then
echo "検索文字列が入力されていません。"
exit 1
fi
# historyコマンドの代わりに、履歴ファイルを検索する
HISTFILE_PATH="${HISTFILE:-$HOME/.bash_history}"
echo "実行履歴から「${SEARCH_TERM}」を含むコマンドは以下の通りです。"
grep "${SEARCH_TERM}" "${HISTFILE_PATH}"
これを保存して、
chmod +x histgrep.sh
で実行権限をつけます。
コマンド実行例
引数無しの対話型
./histgrep.sh
探したいコマンドを入力してください: bundle
実行履歴から「bundle」を含むコマンドは以下の通りです。
sudo -u www-data bundle install --without development test --path vendor/bundle
sudo -u www-data bundle install
sudo -u www-data bundle install --without development test --path vendor/bundle
sudo -u www-data bundle exec gem install rake
sudo -u www-data bundle install --without development test --path vendor/bundle
sudo -u www-data bundle install --without development test --path vendor/bundle
sudo bundle install
と、探したい文字列を含む履歴をhistory(正確には履歴ファイル)から参照します。
引数型
./histgrep.sh configtest
実行履歴から「configtest」を含むコマンドは以下の通りです。
sudo apache2ctl configtest
このように、探したい文字列を引数とすることで、そのコマンドを探せます。
コマンド化
これをコマンド化します。
sudo ln -sf /path/to/script/directory/histgrep.sh /usr/local/bin/histgrep
/path/to/script/directory/histgrep.sh
はフルパスで、スクリプトがある場所を指定します。
which histgrep
で、/usr/local/bin/histgrep
を確認。
後は、作業中でも
histgrep tar
などとすれば、過去に実行したコマンドの履歴を容易に参照することができます。
コメントを残す