http://javarevisited.blogspot.jp/2011/03/unix-command-tutorial-working-fast-in.html#ixzz2K2JPFrL9 の記事から要点だけ抜粋&意訳&補足
!を使って最後のコマンドを実行
同じコマンドを繰り返し実行することは結構あります。カーソル上下キーで、履歴を遡り実行することもできますが、 !ls と入力すれば、最後に実行した、lsコマンドを同じパラメータで再実行することができます。
!vi
と入力すれば、最後にviで編集したファイルをまた開くことができます。
他にも、例えば、
と入力した後で、ls -l hoge.txt
vi !$
と入力すれば、vi でhoge.txtを開くことが出来ます。
!$ は最後に実行したコマンドの引数に置換されます。
!!を使って最後のコマンドを実行
1)の応用ですが、!!を入力すると、最後に実行したコマンドが再実行されます。
CTRL+Rで、マッチするコマンドを探して実行
過去に実行したコマンドをまた実行したい時、履歴の中から探すのが大変な時があります。
CTRL-R
を入力して、コマンドの一部を入力すれば、過去の実行履歴から、入力にマッチするコマンドを表示してくれます。
部分一致で探してくれるので、コマンドに渡した引数でも探せます。
見つかったら、Enterを押して実行するだけです。
historyコマンドを使う
過去に実行したコマンドは、履歴に残っている限りhistoryコマンドで表示することが出来ます。grepと併用すれば、
history | grep keyword
と入力して、履歴の中から見つけることが出来ます。
bashであれば、HISTSIZEという環境変数で履歴の最大数を設定することができます。
$ export HISTSIZE=10000 $ echo $HISTSIZE 10000
ぜひ、.bashrc等に記述して大きな値を設定しておきましょう。
grepとfindは、どちらもUNIXの最も便利なコマンドの1つ
これらのコマンドに正規表現を用いることでさらに便利に使うことが出来ます。
例えば、拡張子.xmlのファイル内にERRORかException という文字列が含まれているか調べたい時は、
egrep "ERROR|Exception" *.xml
と入力します。
ERRORとExceptionそれぞれにgrepを実行するより、1回の実行で探すことが出来ます。(egrepはgrepの正規表現対応版です。grep に-Eパラメータをつけて呼び出しても同じように使うことが出来ます。)
パイプを使う
複数のコマンドを実行するより、上でみたようにパイプ(|)を使って1回で済ませましょう。
(コマンドを連結する「|」と、正規表現のORを意味する「|」は、意味的に別物です。念のため)
ログインスクリプトにaliasを定義する
よく使うコマンドと引数の組み合わせは、aliasを定義してログインスクリプトに記述しておきましょう。
bashであれば、.bash_profileや.bashrcに登録します。
alias
と入力すると、定義済みのaliasが表示されます。
定義する時は、bashの場合
alias la="ls -la"
等と入力します。
ディレクトリの移動にpushd, popd, cd -, ~ を使う
ディレクトリの移動は頻繁に行う作業です。フルパスを入力して移動するより便利な方法があります。
cd の代わりに pushd でディレクトリを移動すると、popdで元の場所に戻ってこれます。
ホームディレクトリへ戻るには
と入力します。cd ~
* ~はホームディレクトリを指します
pushd ~ cd -
と入力すると、直前にいたディレクトリへ戻れます。
キーストロークを減らすか、タイピング速度を上げるか
キーストロークを減らすほど、作業量は減ります。同じコマンドは再度入力するより履歴から呼び出しましょう。コマンドラインではtabキーを押ってUnixに補完してもらいましょう。最後に実行したコマンドがとても長くて、その一部をちょっとだけ変えて再度実行したい場合は、3)で示したように、CTRL+Rを使いましょう。
コマンドやそのオプションを覚える
コマンドを覚えれば覚えるほど作業量を減らせます。CTRL+Zで処理を中断して、他のコマンドを実行後、fgで復帰したり、bgでバックグラウンドに回したり、jobsでジョブの一覧を確認できます。vimで複数のログを見るときなど、CTRL+Zで中断して、他のログをvimで見て、また中断して、fg 1とか、fg 2とかやって切り替えましょう。(今はターミナルを簡単に複数使えるのであまり使わないかな...)
以上、UNIXを使い込んでる人ならほとんど知っている内容かと思いますが、初心者の人は早めに覚えておくといろいろ楽できると思います。もちろんMacのターミナルでも使えます。