2011/09/01

bashの履歴機能、直前のコマンドを参照して実行

直前のコマンドを参照して実行
履歴機能を使えば直前のコマンドを参照して実行することが出来ます

コマンドの履歴を見たいときはhistoryコマンドを使って下さい。

コマンドを実行していて、よく直前のコマンドを参照したいことがあります。
例えばviでファイルを編集し、そのあと内容を確認する場合、以下の作業になります。

例 ファイルを編集したあと、内容を確認
[user@localhost tmp]$ vi tmp.txt
[user@localhost tmp]$ cat tmp.txt
123

ここで、履歴機能をつかうと、このようになります。

[user@localhost tmp]$ vi tmp.txt
[user@localhost tmp]$ cat !!^
cat tmp.txt               # 最初にファイル名の置換機能が働いて展開されたものが表示されます
123

ここでは、ファイル名や、パスが短いので大した違いはありませんが、ファイル名やパス名が長かったり複雑な場合はタイプミスの原因になります。

履歴機能を使ったコマンドの解説
!! 直前のコマンド
^ 最初のパラメータ
!!:1 直前のコマンドの1番目のパラメータ(こちらの記述でもいい)

パラメータを引き継ぐもう一つの例(直前のコマンドの最後の引数を引き継ぐ)
[user@localhost tmp]$ ls -la tmp.txt
-rw-rw-r--   1 user user   10  8月 21 23:25 2011 tmp.txt
[user@localhost tmp]$ vi !$  
履歴機能を使ったコマンドの解説
!$ 直前のコマンドの最後の引数
!!:2 直前のコマンドの2番目のパラメータ(こちらの記述でもいい)


さらにもう一つの例として、viで編集したけど、終了してからもう一度編集をしたくなったとき,コマンドを打ち直してもいいのですが、履歴機能も使えます。
[user@localhost tmp]$ vi tmp.txt
[user@localhost tmp]$ vi tmp.txt

上記と同じ働き
[user@localhost tmp]$ vi tmp.txt
[user@localhost tmp]$ !!        # 直前のコマンドを実行
もちろん「↑」キーでコマンドを呼び出すこともできますが、「!」キーならキーボードのホームポジションから手を離すことなく打つことが出来ます。

0 件のコメント:

コメントを投稿