はじめに
linuxコマンドで最初に覚えるコマンド cd (change directory)。
なにかと必要以上にcdを使ってカレントディレクトリを移動しちゃう人が多いかと思います。
ファイルやディレクトリ構成を参照するだけとか、適当なログをみるだけとかでわざわざcdしちゃうと戻りたくなったときに面倒。
コマンド履歴も「cd xxx」「cd ..」 とか多くなって汚れちゃいます。
Escapeキー + ドット(.)
”直前のコマンドの最後の引数を打つ”
上記のショートカットを使うと便利かなと感じています。
bashの話です。
ユースケース
一例ですが、apacheのアクセスログとエラーログを参照したい場合を説明。
ファイルの存在を確認
ls -l /usr/local/apache2/logs/
access_logファイルの中身を参照
less /usr/local/apache2/logs/access_log
→ここで、「less Escapeキー + ドット(.) 」と入力します。error_logファイルの中身を参照
less /usr/local/apache2/logs/error_log
→ここでも、「less Escapeキー + ドット(.) 」と入力して、
直前のaccess_logファイルの絶対パスが表示されるのでファイル名だけerror_logに書き換えます。
”access_log”の部分を Backspaceで一文字ずつ消すと面倒なので、
「Escape + Backspace」で単語ごと削除します。
直前コマンドの最後の引数が覚えておければ絶対パスの入力も一発です。
絶対パスの方が現在の位置に依存しないので、第三者からみてもわかりやすいと思います。
ということで「Escapeキー + ドット(.) 」の多用はおすすめな感じです。
※これが言いたかったことですが、知らないとそもそも検索されないと思ったので、cdをメインとしたタイトルにしました。
Escapeキー + ドット(.) のメリット
- 絶対パスの入力が一発
- むやみなcdがなくなりコマンド履歴が綺麗になる
- コマンド履歴を第三者がみてわかりやすい
こんな感じです。
関連してよく使うショートカット
Escapeキー + ドット(.) に関連して合わせてよく使うコマンドです。
Escapeキー + Backspace
単語の削除ができます。
Escapeキー + ドット(.) で直前コマンド最後引数が絶対パスで表示されたあと、最後の部分を消してディレクトリを変えたいとか、ファイル名を変えたいと行った場合に使えます。Controlキー + a
コマンドの先頭にカーソル移動できます。
例えば、lsコマンドでファイルの存在確認をやって、そのあとにそのファイルを開きたいといったケースで 「ls」を「less」とかに変更するときに現在カーソルを先頭にもってこれるので便利です。
ショートカットキーの覚え方のイメージは、アルファベットの「先頭はa」とか。Controlキー + e
コマンドの最後尾にカーソル移動できます。
先頭に移動したあとにまた最後にカーソル移動したいときとか、よく使います。
ショートカットキーの覚え方のイメージは、「最後はendのe」とか。Controlキー + k
現在のカーソル位置から後方の文字をすべて削除できます。
例えば先頭(Contorol+a)にカーソル移動して Control+k を入力すればコマンド全部消せます。
なにか入力ミスしたときとか使うかもです。
覚え方のイメージは、「カットのk」とか。Controlキー + r
履歴コマンド検索です。
コマンド履歴がhistoryで保存されていますが、その直前に入力したhistoryからさかのぼって文字列検索ができます。
文字列にヒットするコマンドをまるごと出力できるので便利です。
ただ、検索文字列を工夫しないと想定外のところでマッチしたりするので、ミスが多くなりがちなので注意です。
流れでうっちゃうと意図しないコマンドを実行してしまうことにも繋がります。
覚え方のイメージは、「Rirekiのr」とか。pushd, podを使う
cdの話をしていたので関連して pushd, popd コマンドについても触れます。
「cd 移動先」 の代わりに 「pushd 移動先」 とすると、
popd コマンドで直前にいた場所に戻るといったことができるようになります。
スタックに積んで戻すというそれなので、cdは使わずずっと pushd で移動して戻りたくなったらpopするってやり方もあります。
便利そうだけど使ってる人見たことないです。
cdするタイミング
趣味の問題かと思いますが
cdする、つまりカレントディレクトリを移動するケースとはどういったケースか・・・
個人的にはその場でファイルを作成/編集したりする場合、に作業用ディレクトリをきって移動します。
だからもうずっと /tmp 下でいいんじゃないかと思うくらい。
残したいファイルがあればユーザディレクトリ下にディレクトリきって作業するとか。
まとめ
- Escapeキー + ドット(.) 便利なので多用したい
- cdしてまた戻ってくるくらいならcdしなくていい
以上です。