あまり知らされていないLinuxでのBash小技
仮置きです。
1、波かっこの小技
$ echo q{a,b,c}p qap qbp qcp 前後にスペースをいれると普通に出力されてしまうので、注意! $ echo q {a,b,c} p q a b c p $ echo q {a, b, c} p q {a, b, c} p 活用: $ cp test.c{,.bak} test.c.bakが生成される
2、コマンド結果置き換え
「$()」と「``」の実行結果は同じです。 $ test=$(date) $ echo $test Tue Sep 1 12:10:31 2009 $ test=`date` $ echo $test Tue Sep 1 12:10:45 2009 「$()」と「``」と比較した場合「$()」のメリット: (1)ネスティングの場合使いやすい (2)分かりやすく、ヒューマンエラーの回避
3、ショートキー
Ctrl + r コマンド履歴から入力文字を部分検索し表示する。(オススメ) 下記のようなプロンプトが表示される: (reverse-i-search)`’: Ctrl + a カーソルを入力行先頭へ移動する。 Ctrl + e カーソルを入力行末尾へ移動する。 Ctrl + w カーソルから左(前)の一つ単語を削除する。 ESC + d カーソルから右(後ろ)の一つ単語を削除する。 Ctrl + k カーソルから右(後ろ)の行を削除する。 Ctrl + u カーソルから左(前)の行を削除する。 (注意:削除された文字のリストアはできない)
4、前回のコマンドを一部置き換え
$ ls -a $ ^-a^-l $ ls -l
5、CDPATH環境変数の使用
# export CDPATH=/var/www/html: # cd fred /var/www/html/fred
6、前回コマンドのパラメータを流用する
$ ls -l test.c $ ls !$
7、コマンドラインパラメータ解析
# -d,-u,-s,-T,-t,-nのコマンドラインパラメータを処理する例 while getopts d:u:s:T:t:n: arg do case $arg in d) DATABASE=$OPTARG echo DATABASE: $DATABASE;; u) USERNAME=$OPTARG echo USERNAME: $USERNAME;; s) SCHEMA=$OPTARG echo SCHEMA: $SCHEMA;; T) TYPE=$OPTARG echo TYPE: $TYPE;; t) TABLE_NAME=$OPTARG;; #echo TABLE_NAME: $TABLE_NAME n) OWNER=$OPTARG echo OWNER: $OWNER;; *) echo "invalid argument specified"; exit 1; esac done