Help us understand the problem. What is going on with this article?

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

More than 5 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派です。

lifull
日本最大級の不動産・住宅情報サイト「LIFULL HOME'S」を始め、人々の生活に寄り添う様々な情報サービス事業を展開しています。
https://lifull.com/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away