Bash
Linux
UNIX
ワンライナー
小技

Linuxでの便利なワンライナーでの操作

普段、LinuxのCLI操作で便利な操作を一個一個紹介します。

その1. 適当な検証用ディレクトリを複数作成してディレクトリを移動したい

$ mkdir {01..10} // 1~10のディレクトリ
$ mkdir {01..10}; ls
1   10  2   3   4   5   6   7   8   9

単体で作成したいときは、連続で並べればいけます。

$ mkdir aa bb cc // aa bb ccの3つのディレクトリ作成
$ mkdir aa bb cc; ls
aa  bb  cc

その2. 作成したディレクトリへ移動したい

$ mkdir aa; cd $_

ちなみに複数ディレクトリを作成すると最後が適応され下記ですと「cc」のディレクトリへ移動します。

$  mkdir aa bb cc; cd $_

その3. 1日前に変更したディレクトリを可視化したい

$ find . -mtime -1 | head

その4. 引数を受け取って、順番に特定のコマンドを実行していきたい。

例としてこんなようなsampleファイルがあったとします。

$ cat sample.list 
aaa
bbb
ccc
ddd

このaaa,bbb,cccに「!」をつけたいといったときの方法です。

まず「!」をつけるシェルを用意します。

run.sh
#!/bin/sh

echo $1"!"

そして、ワンライナーで下記のようにxargsを駆使して実行できます。

$ cat sample.list | xargs -I{} ./run.sh {}
aaa!
bbb!
ccc!
ddd!

その5. MySQLから特定のデータを取得したい

mysqlのクライアント経由ではなくbashのCLI上で行う方法です。

$ mysql -u root -p -D memberprovision -e "mysql -u ${user} -p -D ${db_name} -B -N -e "select * from ${table_name}"|  head -n 10 test.list
Enter password: ****

aaaaa   2016-04-18 18:07:42.000000
bbbbb   2016-04-18 18:07:42.000000

以上です。

参考
https://qiita.com/i35_267/items/4c2572ee7b91a5dbc641
https://qiita.com/simeji/items/cae94349a2ae02d3204d