2006/07/17
History command in practice
ヒストリコマンドをマスターして心も体もDRYになろう。
一つ前のコマンドを実行
% echo a b c a b c % !! echo a b c a b c
n個前のコマンドを実行
% echo a b c % touch me % !-2 echo a b c a b c
n番目のコマンドを実行
% history 1 echo a b c 2 touch me % !1 echo a b c a b c
コマンド履歴からコマンドを検索して実行
% echo a b c a b c % touch me % !ech echo a b c a b c
コマンド履歴からインクリメンタルにコマンドを検索して補完
% echo a b c % touch me % [C-r] ech % echo a b c a b c
一つ前のコマンドの最初の引数を取り出す
% echo a b c a b c % echo !^ echo a
n個前のコマンドの最初の引数を取り出す
% echo a b c a b c % touch me % echo !-2:^ echo a a
一つ前のコマンドの最後の引数を取り出す
% echo a b c a b c % echo !$ echo c c
n個前のコマンドの最後の引数を取り出す
% echo a b c a b c % touch me % echo !-2:$ echo c
一つ前のコマンドの全ての引数を取り出す
% echo a b c a b c % echo !* echo a b c a b c
一つ前のコマンドのnから最後までの引数を取り出す
% echo a b c a b c % echo !:2* echo b c b c
x個前のコマンドのnから最後までの引数を取り出す
% echo a b c a b c % touch me % echo !-2:2* echo b c b c
一つ前のコマンドのnからmまでの引数を取り出す
% echo a b c d e f g a b c d e f g % echo !:2-4 echo b c d
x個前のコマンドのnからmまでの引数と取り出す
% echo a b c d e f g a b c d e f g % touch me % echo !-2:2-4 echo b c d b c d % echo !-3:2-4 echo b c d
一つ前のコマンドのコマンド部を取り出す
% echo a b c a b c % echo !:0 echo echo echo
n個前のコマンドのコマンド部を取り出す
% echo a b c % touch me % echo !-2:0 echo echo echo
ちょっとtypoしたときにすばやく修正する
実際は普通に修正したほうが速いってのは秘密。
% echo xy xy % !:s/xy/yx echo yx yx
あるいはこちら。当方HHKB Proを使っておりハットが非常にうちづらいので滅多に使いません。
% echo xy xy % ^xy^yx echo yx yx
いちいちC-rするのは面倒だけど!xxxのxxxの部分がわからない
そんなときは!?xxx?を使います。
% echo very long command is here very long command is here % !?long? echo very long command is here very long command is here % !?long #省略可能 echo very long command is here very long command is here
履歴からrm -rf *とか実行されたら恐いです
素直に打ちなおすか、以下の方法を取るべきです。
% ls * aaa bbb ccc % rm -rf !$ rm -rf aaa bbb ccc
どうしても履歴から実行したい場合は以下のようにしましょう。
% !rm:p rm -rf * % #実際には実行されません
個人的にヒストリコマンドの文法が非常に覚えにくかったので、in practice形式で冗長に列挙してみました。これだけ読めばどのような文法か理解できるでしょう。ヒストリコマンドは非常に便利なので是非活用してみてください。
- Category(s)
- linux
- The URL to Trackback this entry is:
- http://dev.ariel-networks.com/Members/matsuyama/history-command-in-practice/tbping