あまり知らされていない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