ターミナル 作業効率化 tips集

# はじめに
エンジニアであればターミナル操作はとても多いと思います。(iTermを使っていますが。)
いろいろな方のターミナル操作を横で見てきましたが、経験のあるエンジニアの方はターミナル操作が格段にはやいです。一方、駆け出しのエンジニアの方(学びたての人)は同じ操作をするにしても時間がとてもかかってしまっています。
にも関わらず、各プログラミング言語の習得にばかり目がいき、ターミナル操作をもっと効率よくしようとするにはなかなか至らないのが現実なのだろうと思います。
そこで、ターミナル操作の作業効率を上げる操作方法を僕なりにまとめてみようと思います。
ここで少しばかり時間を使って、ストレスのない、スピーディーな作業が出来るようになれるとハッピーですよね！

★は独断でつけた重要度です。

もっと効率のよい操作方法と知っているという方がいらっしゃいましたら、コメントにてご教示頂けますと幸いです。

# ショートカット編
## ★★★ ctl + a 
カーソルを文頭にします。
「happy terminal life」と打った後に「ctl + a」を押しています。

![terminal1.gif](https://qiita-image-store.s3.amazonaws.com/0/40796/92e4cf65-5e26-bc19-f79e-8d48735cacb1.gif)


## ★★★ ctl + e
カーソルを文末にします。
「happy terminal life」と打った後に「ctl + a」、「ctl + e」を押しています。

![terminal2.gif](https://qiita-image-store.s3.amazonaws.com/0/40796/9f2dd3e7-4494-0b06-74d3-c861a76636d1.gif)


## ★★★ ctl + k
カーソル位置以降の文字を削除します。
「happy terminal life」と打った後に少し移動して「ctl + k」を押しています。

![terminal3.gif](https://qiita-image-store.s3.amazonaws.com/0/40796/2414b414-8769-d567-3318-0bfdc4d4631b.gif)

[追記] @G-awa さんより
ctrl-kで切り取ったものはctrl-yで貼り付けができます。
カーソル位置の前を消すにはctrl-hが使えるのも基本的なところなので書いておくとGoodですね！

## ★★★ ctl + u
カーソル位置の行を削除します。
「happy terminal life」と打った後に「ctl + u」を押しています。

![terminal4.gif](https://qiita-image-store.s3.amazonaws.com/0/40796/be6a1372-ba73-60ef-245d-acbc01791039.gif)

## ★ ctl + d
カーソル位置の文字を削除します。
「happy terminal life」と打った後に少し移動して「ctl + d」を複数回押しています。

![terminal5.gif](https://qiita-image-store.s3.amazonaws.com/0/40796/07d51a2d-dcd6-03d5-b20c-a2b4e2ff10bb.gif)

[追記] @yuuAn さんより
環境によっては Ctrl-d は入力の終了を表し、シェル上で入力するとログアウトされることがあるので注意してください。

[追記] @sshnhr さんより
私が多用するのは ctrl+w (カーソル位置から単語の先頭まで削除)ですね。
履歴で戻って最後の方のパラメータを変えたりするときに連打してます。

## ★★★ option + → / option + ←
単語単位でカーソルを移動します。
「happy terminal life」と打った後に「option + →」、「option + ←」を押しています。

![terminal6.gif](https://qiita-image-store.s3.amazonaws.com/0/40796/7515cbdf-8d87-b08c-19b9-c5b4be0cb2ac.gif)


[追記] @chooyan_eng  さんより
カーソルの左右は `Ctrl + b (Back)` と `Ctrl + f (Forward)` で代替できます。
本文で紹介されている単語単位の移動と組み合わせるのが少し面倒ですが、これに慣れているだけでもだいぶ手がホームポジションに固定できるので重宝しています。

なお、iTermをお使いの方は
[iTerm 2 で単語単位でカーソル移動する設定](http://qiita.com/hokutoasari/items/e2442b87c7b381f9ff7c)
から設定が必要です。

## ★★ ctl + l
カーソルのある行をウィンドウの最上部にします。
ウィンドウが綺麗になって見やすくなります。
「happy terminal life」と打った後に「ctl + l」を押しています。

![terminal7.gif](https://qiita-image-store.s3.amazonaws.com/0/40796/4004243c-5fb6-0320-8907-98db24e4c632.gif)

## ★★★ ↑ / ↓
過去に打ったコマンドを出すことが出来ます。
↑を一度打つと前回のコマンドが出ます。

![terminal8.gif](https://qiita-image-store.s3.amazonaws.com/0/40796/8fae5c0f-c43d-1b4e-e998-eae0e3ce4c96.gif)

[追記] @harvath さんより

「↑」 の代わりに 「 Ctrl + p 」 で出来ます。また 「 Ctrl + n 」 で 「↓」 の代わりになります。
ホームポジションを崩さないでいけるので、僕もこちらを使おうと思います。
p (previous)、 n (next)

## ★★★ ctl + r
過去に打ったコマンドの検索が出来ます。

![terminal9.gif](https://qiita-image-store.s3.amazonaws.com/0/40796/ee9d62a3-3993-6936-6385-9eca96736be3.gif)

## ★★★ tabによる補完
tabを打つとコマンド名やファイル名を予測して表示してくれます。
以下の例はディレクトリの名前をtabを打って予測を出しています。
「cd ru」を打ってtab、「cd ruby/ma」でtabを打っています

![terminal10.gif](https://qiita-image-store.s3.amazonaws.com/0/40796/6754ace6-0a9c-bd5a-17f9-4b294d6afbb2.gif)

# コマンド編

## ★★★ cd -
ひとつ前にいたディレクトリに戻る。

## ★★★ cat (ファイル名)
ファイルの中身を表示。

## ★★ more (ファイル名) / less (ファイル名)
ファイルの中身を表示。catとの違いは1画面ずつ分割で表示。moreは最後まで表示し終わるとプログラムを終了するが、lessはqを打たない限りプログラムが終了しないという違いがある。

## ★ history
過去に打ったコマンドの一覧が表示される。

[追記] @ttsuzo さんより

```
個人的によく好きなのが、historyを打った後に
![履歴番号]
で指定した番号のコマンドを再度実行できることですね。
```

historyと合わせて ``` ![履歴番号] ``` を使うと便利ですね！

# iTermのススメ
iTermというアプリがありまして、僕はこちらを使っています。
https://www.iterm2.com/

ターミナルとほとんど同じ機能なのですが、

- tabの切り替えが簡単
- 画面分割が出来る

ということでこちらを使っています。

「command + d 」で画面が分割されて作業が捗ります。
「command + ← / comand + →」でtab移動。
「command + option + ← / comand + option + →」で分割した画面間移動。

# こちらも読みたい
[ターミナルの作業が捗るかもな小技５つ](http://qiita.com/simeji/items/cae94349a2ae02d3204d)

この記事に補足で

```
mkdir -p ruby/qiita/new_folder
```

のように オプションで p をつけてあげると階層構造も一気にフォルダを作れます。