今回はLinux上のコマンドライン(Bash)でこういう操作をするといろんな作業が捗るよ(と個人的に思う)な部分を紹介させていただきます。
目次
1. まえがき
自分は普段の作業をLinuxベースの環境で行っているため、Bashを頻繁に使っています。(普段使いはLinux Mint 19 Cinnamon)
Zshを入れてカスタマイズというのもすごく素敵なのですが、一時期50台くらいの仮想環境をバラバラに面倒見ていた時期があり、そのときはそれぞれの環境を汚すことができなかったので、「Bashを使いこなすのが一番自分を楽にしてくれる」という結論に至り、現在もその名残でBashを使っています。
Ubuntu系のBashは標準でもかなり優秀で、意外とコマンドのオプションもTabキーで補完してくれますね。(そのため余計にBashでいいやになってしまっています)
2. 前提
基本操作の前に、Tabキーを使った補完は使いこなしておくとより作業が捗ります。
例えば、/var/www/html
などを ls
したいときは、$ ls /va
でTabキーを押すと$ ls /var/
と補完されますね。その後$ ls /var/w
でTabキー、$ ls /var/www/
さらに$ ls /var/www/h
でTab、$ ls /var/www/html
みたいな感じで補完されていくかと思います。
複数候補がある場合は、Tabキーを2回押すと候補が表示されますので、1つの候補に絞られるまで入力するだけであとはTabキーがよろしくやってくれます。
このTabキーはコマンド操作を早くしていく上で必要不可欠、かつ打ち間違いを減らせるかなり協力な手段だと思いますので是非マスターしましょう。
3. 基本操作(コマンド)
基本操作(コマンド)は各所でまとめられてはいますが、自分がよく使うものを抜粋して列挙したいと思います。
組み合わせ | 動作 | 備考 |
---|---|---|
Ctrl+p | ↑ 方向キー上 | p rev |
Ctrl+n | ↓ 方向キー下 | n ext |
Ctrl+b | ← 方向キー左 | b ackward/ b ack |
Ctrl+f | → 方向キー右 | f orward/ f ront |
Ctrl+a | 先頭へ Homeキー | a tama |
Ctrl+e | 末尾へ Endキー | e nd |
Ctrl+d | 右1文字消す Deleteキー | d elete |
Ctrl+h | 左1文字消す BackSpaceキー | |
Alt+d | 右1文節消す(右側のスペースまで) | |
Ctrl+w | 左1文節消す(左側のスペースまで) | |
Ctrl+c | キャンセル(何かをやめたい時) | c ancel |
Ctrl+r | 履歴検索 | r everse search |
普段のコマンド操作をラクにするために一番使っているのは Ctrl+r
かもしれません。
altキーシリーズの組み合わせは概ね応用編かなと思ってますので、今回は省略しています。
4. オススメのコマンドの使い方
先ほどの Ctrl+r
を駆使することで、かなり作業が捗ります。
例えば、
- 過去に編集していた
httpd.conf
を履歴から検索してvimで開く
を行う場合。
Ctrl+r
を押すと(reverse-i-search)`':
と表示されるので検索したい文字を入力する(例: httpd)(reverse-i-search)`httpd': less /etc/httpd/conf/httpd.conf
のように表示されると思います。
lessで開く場合は、このままEnterで大丈夫ですが、vimに変更したいときはこのあと Ctrl + a
を入力すると$ less /etc/httpd/conf/httpd.conf
この状態で less
のl
にカーソルがいきます。ここでAlt+d
を入力すると less
が消えるので、あとは vim
と入力すると最小限の入力でやりたいことが実現できます。
※ WindowsのターミナルアプリだとAltキーを押したときに、メニューが開く場合があるので、その場合は Ctrl+d
で1文字ずつ消すイメージです。Esc → d
の順で押すといける可能性もありますが。
このような感じで、Ctrl+r
を使うとかなり手間が省けます。
- 以前と同じコマンドを実行したい
- 同じファイルに対してコマンドだけ変えたい(上記の手順)
- 同じディレクトリにある別のファイルを編集したい(
Ctrl+e
で末尾へカーソル移動し、ファイル名を消していく)
のような場合に活躍すると思います。
5. おまけのTIPS
検索の仕方のコツ
先ほどの Ctrl+r
で検索するときは、探したい履歴の中でしか現れないようなキーワードで検索すると検索をする回数が減らせます。
例えば、上記の場合だと(reverse-i-search)`d/co': less /etc/httpd/conf/httpd.conf
のような感じで、検索すると狙ったものが出やすいイメージです。etc
とかで検索してしまうと、/etc
だったり /usr/local/etc
だったりと様々なところで etc
が使われるので、なかなか狙った履歴にたどり着けないことがあるからです。
ファイルの絶対パスを調べられる readlink
コマンド
例えば、カレントディレクトリにあるファイルをscpでコピーしたい、となったときに使えるコマンドです。matatabi@localhost: ~/tmp $ readlink -f test.txt
と実行するとmatatabi@localhost: ~/tmp $ readlink -f test.txt
/home/matatabi/tmp/test.txt
といった感じで、フルパスが返ってきますので、この下の行をマウスでダブルクリックやトリプルクリックするとフルパスが選択されるので、そのままクリップボードにコピーし、scpコマンドのパスを指定するときにペーストするだけで良くなります。
さいごに、障害発生時など切羽詰まっている時ほど正確な操作が求められます。そういうときこそTabでの補完やこういうパスを調べてコピペすることでミスを減らし確実な作業ができるとみんなハッピーになれると思います!
他にもいろいろ使いますが、まずはこれを覚えとくと便利というものを載せておきました。
また別の機会に追加でよく使うものを書けたらと思います。