配属されて一月たったので良く使うコマンドの話。
東京暑いですね。(東北比較)
ぼくは、さいきん浴衣の女の子の良さに目覚めました。
「今年のお祭りも楽しかったね!来年もまた一緒に来ようね?」の巻。 pic.twitter.com/ElLYyLJMuE
— 河村友歌(ゆかちぃ) (@xmas_yk) 2016年8月10日
(๑˃̵ᴗ˂̵)و
さて、4月に就職してから3ヶ月の研修期間を終えて、7月にようやく部署配属となりました。
配属されてこの1ヶ月は、AWSとかGCPをWebからポチポチしたり電話番とか電話番とか電話番を主にしています。
そして、さいきんは少しShellScriptでツールを作ったりしています。
そこで、良く使うShellコマンドとかをまとめておこうかなと思います。
1. find
ファイルを検索するコマンドです。
$ ls app bootstrap composer.lock database package.json public resources storage vendor artisan composer.json config gulpfile.js phpunit.xml readme.md server.php tests $ find ./app/ -name "*.php" ./app/Console/Commands/Inspire.php ./app/Console/Kernel.php ./app/Events/Event.php ./app/Exceptions/Handler.php ./app/Http/Controllers/Auth/AuthController.php ./app/Http/Controllers/Auth/PasswordController.php ./app/Http/Controllers/Controller.php ./app/Http/Controllers/TaskController.php $ find ./app/ -name "Auth*.php" ./app/Http/Controllers/Auth/AuthController.php ./app/Http/Middleware/Authenticate.php ./app/Providers/AuthServiceProvider.php $ find ./app/ -name "Auth*.php" | xargs echo "chmod 755" chmod 755 ./app/Http/Controllers/Auth/AuthController.php ./app/Http/Middleware/Authenticate.php ./app/Providers/AuthServiceProvider.php
みたいな感じ。
ワンライナーで実行するのは危険なので、echoで一回挟むと良いそうです。
2. xargs
しれっと使ってますが、findとかで検索して実行結果のファイル名を渡して、まとめて削除したり権限を変えたりとかに使えます。
$ find ./app/ -name "Auth*.php" ./app/Http/Controllers/Auth/AuthController.php ./app/Http/Middleware/Authenticate.php ./app/Providers/AuthServiceProvider.php # この3つを.... $ find ./app/ -name "Auth*.php" | xargs echo "chmod 755" chmod 755 ./app/Http/Controllers/Auth/AuthController.php ./app/Http/Middleware/Authenticate.php ./app/Providers/AuthServiceProvider.php # 引数に渡せる
3. grep
ファイルの中の文字列とかを検索できる。
$ grep -r "Task" ./app ./app/Http/Controllers/TaskController.php:class TaskController extends Controller{ ./app/Http/Controllers/TaskController.php: $query = Task::query()->select('*')->where('status', '=', Task::STATUS_INCOMPLETE)->orderBy('updated_at', 'desc'); ./app/Http/Controllers/TaskController.php: $completedTodos = Task::whereStatus(Task::STATUS_COMPLETED)->orderBy('completed_at', 'desc')->get(); ./app/Http/Controllers/TaskController.php: $trashedTodos = Task::onlyTrashed()->get(); ./app/Http/Controllers/TaskController.php: return View::make('pages.tasks.index', compact('incompleteTasks', 'completedTasks', 'trashedTasks')); ./app/Http/Controllers/TaskController.php: $task = Task::create([ ./app/Http/Controllers/TaskController.php: 'status' => Task::STATUS_INCOMPLETE, ./app/Http/Controllers/TaskController.php: $task = Task::find($id); ./app/Http/Controllers/TaskController.php: 'completed_at' => $input['status'] == Task::STATUS_COMPLETED ? new DateTime : null, ./app/Http/Controllers/TaskController.php: $task = Task::find($id); ./app/Http/Controllers/TaskController.php: $task = Task::find($id);
4. sed
いろいろな用途があるみたいですが、主に文字列の置換に使ってます。
$ cat server.php | sed -e 's/php/php_php/g' <?php_php
雑だけどこんな感じ。
5. cut
タブで区切られているtsvファイルから、指定の列を抜き出すコマンド。
区切り文字を指定できるので、タブ以外でも抜き出せる。
$ cat test.tsv A B C D E F G H I J K L $ cat test.tsv | cut -f1 A E I $ cat test.txt A B C D E F G H I J K L $ cat test.tsv | cut -d " " -f1 A E I
スペース区切りなら、awkとかもあるけどね。