シェルの便利機能いろいろ
Unix系OSのターミナルでは、コマンドライン上でいろいろな便利機能がある。
@isloop さんのブログを読んで、意外と知られてないもんだなーと思ったので、知ってる範囲で書いておく。
≫ 【ちょー楽】ターミナルで前に実行したコマンドを再入力できるショートカットキー
- history : 過去に入力したコマンドの履歴を表示する。
- ↑: コマンド履歴をひとつづつ過去に遡る。
- ↓:コマンド履歴をひとつづつ新しい方に進む。
- !n:history で表示された n 番目のコマンドを実行する。
- !!:直前に実行したコマンドを再実行する。
- !word:hisotry の中から word で始まるコマンド行の最も新しいコマンドを実行する。
- !word:p:':p'をつけるとコマンドを表示するだけで実行しない。
- ^word1^word2:直前のコマンド内の文字列 word1 を word2 に置換して実行する。
$ find . -name '*html' -print (結果を表示) $ !! find . -name '*html' -print (結果を表示) $ !!:p find . -name '*html' -print (結果は表示しない=実行しない) $ ^html^css find . -name '*css' -print (結果を表示)
コマンドラインの中ではカーソル移動して編集できる。
- C-a :行頭にカーソル移動
- C-e :行末にカーソル移動
- C-b :1文字左にカーソル移動
- C-f :1文字右にカーソル移動
- C-d :カーソル位置の文字を1文字削除
- C-w :カーソル直前のフレーズを削除
- TAB:ファイル名の補完
直前のコマンドの最後の引数を !$ で次のコマンドに渡したり。
$ ls -l /va/www/html (結果を表示) $ cd !$ cd /var/www/html $
パイプを使って履歴を検索したり。
$ history | grep vi
findでファイル検索した結果をgrepに渡したり。
$ grep margin `find . -name '*css' -print`
vi などでファイル編集中に C-z で vi をサスペンドして別のコマンドを実行して、fgコマンドで vi に戻って編集を続けるとか。
pushd /etc/httpd/conf.d とかしてディレクトリ移動して、作業が終わったら popd して元のディレクトリに戻るとか。
あと何があったっけ?