Edited at

ターミナルの作業が捗るかもな小技5つ

More than 3 years have passed since last update.

ターミナルで作業する事が多いんですが、そのときによく使っているちょっとしたときに便利なコマンドなどを紹介します。

bashで説明します。

(zsh でもつかえるし、もっと便利になる物も多いですが)


1. 並列な階層に複数ディレクトリを一度に作成

{} を利用します。

aa,bb,cc というディレクトリを作るとき。

mkdir {dir1,dir2,dir3}

例:

スクリーンショット 2015-03-22 19.27.06.png

複数ディレクトリ以下に複数ファイルを touch するみたいなのもできます

touch {dir1,dir2}/{file1,file2}

例:

スクリーンショット 2015-03-22 19.56.36.png

また、名前の一部が違うようなディレクトリやファイルを同時に作成できます。

touch foo{1,2,3}bar



スクリーンショット 2015-03-23 23.13.03.png

バックアップをとるときなども使えます。

(@tukiyo3 さんにコメントでいただいた例を追記しました。ありがとうございます!)

cp foobar{,.bak}

例:

スクリーンショット 2015-03-23 23.16.26.png


2. ディレクトリを作って移動

mkdir /the/directory/path; cd $_

よくありますよね。何度も打つとめんどくさいですね。

$_ で直前のコマンドの引数を取得できます。

(行分けても書けます)

例:

スクリーンショット 2015-03-22 20.13.53.png

cd で移動ではなく touch でそのディレクトリにファイル作成などもできます。

また、ESC-. でも $_ と同じものを挿入できます。

(@tukiyo3 さんありがとうございます!)

例:

bash2.gif


3. 1つ前にディレクトリに戻る

cd - 

これは結構使います。



スクリーンショット 2015-03-22 20.16.48.png


4. コマンドを複数プロセスで並列実行

xargs の -P(maxprocs) オプション使えば、複数プロセスで並列に実行できます。

たとえば、以下のようなurlリスト url.list があったときに、ここに記載されたURL各行に並列に curl したいとします。


url.list

http://example.com

http://example.co.jp
http://example.jp
http://example.net
http://example.asia

下記コマンドでできます。(5プロセスで実行)

cat url.list | xargs -L1 -P5 curl

xargs は他にも色々できますね。


5. カーソルを単語ごとに移動

カーソル移動は、

Ctrl-A で先頭、 Ctrl-E で末尾には飛べますが、

ESC-f で1単語進める、 ESC-b で1単語戻る事ができます。

さらにこの ESCCTRL-[ でもokです。 Vim もそうですね。


まとめ

色々あるとは思いますが、操作できれば良いんだと思います。

もっと詳しくは man bash に色々書いてあります。

エディタはVim派です。