これらの簡単なトリックで Linux シェルをターボチャージしましょう!

これらの簡単なトリックで Linux シェルをターボチャージしましょう!

最近、何人かの人が私の共有画面を見ているのですが、彼らは「ああ、すごいですね。シェルでそんなことができるなんて知りませんでした」と言い続けていました。

シェル(ここではbashについてお話します)を何年も毎日使っている人なら、これらのうちいくつかはご存知かもしれません。しかし、多くの人はたまにシェルを使う、あるいはシェルに接する程度のユーザーです。彼らはベテランのUnix使いではなく、開発者、DBA、あるいはユーザーとしてシェルを使うものの、シェルに関する書籍を読んだことがない人たちです。

対話型シェルをより快適に使うための、ちょっとしたコツをご紹介します。シェルプログラミング(シェルスクリプトの作成)ではなく、プロンプトでの作業についてお話します。

作成したディレクトリに移動します

mkdir /some/long/path/that/is/a/past/to/type
cd $_

これは「cd /some/long/path…」と入力するよりも高速です。$_変数は、前のコマンドの最後の項目を取得します。

ラインを飛び越える

Ctrl + A でカーソルが行頭に移動します

Ctrl + E でカーソルを行末へ移動します

それで、入力し始めると…

 kdir /入力するのが面倒な長いパス

そして「mkdir」の「m」を忘れたことに気づいたら、Ctrl+Aを押して追加し、Enterキーを押してコマンドを実行するか、Ctrl+Eキーを押して行末に戻って入力を続けます。もし既にEnterキーを押してエラーが出ていた場合は、上矢印キーで履歴を遡ることができます。そういえば…

歴史

その

歴史

コマンドを実行すると履歴が表示されます。例えば、次のようになります。

 551  ssh ユーザー@サーバー
552  vi /tmp/ファイル
553  grep Prod /some/other/file

そのviコマンドを再実行したい場合は、次のように入力します。

 !552

あなたもそうすることができます

!vi

この最後の形式には注意してください。コマンド番号を指定して再実行すると、常に正確なコマンドが返されますが、

 !r

rで始まる最後のコマンドを再実行します。例えば「rm /some/file」や「rm -rf *」などです。

履歴を検索するには、Ctrl + R を入力します。

長いコマンドを入力したが実行したくないとき

次のようなものを入力したとします。

 cp /some/long/path/to/files/*.csv /some/other/long/directory/that/is/a/pain/to/type

そして、最後の行までたどり着いたところで、入力するのが面倒な「何か別の長いディレクトリ」をまだ作成していないことに気づきます。コマンドをキャンセルしてディレクトリを作成し、コマンドを再入力する代わりに、Ctrl+Aを押し、行頭にコメント文字を挿入するために#を入力し、Returnキーを押します。

これで、この長いコマンドが履歴に保存されました。ディレクトリを作成し、このコマンドまでスクロールバック(上矢印)して、Ctrl + Aを押し、#を削除してEnterを押してください。

条件付き実行

セミコロンで区切ることで、1 行で複数のコマンドを実行できます。

コマンド1; コマンド2

しかし、command1 が成功しない限り command2 を実行したくない場合はどうすればよいでしょうか? たとえば、次のようになります。

 mkdir /tmp/blah ; cd /tmp/blah ; cp /somewhere/*.csv 。

mkdirとcdが失敗した場合、cpは実行されません。セミコロンの代わりに、論理演算子「and」を使用してください。

 mkdir /tmp/blah && cd /tmp/blah && cp /somewhere/*.csv 。

いずれかのコマンドが失敗すると実行が停止します。

コマンドを見る

長時間のコピーやrsyncなどのプロセスが動いているとしましょう。その進捗状況を監視したいとします。そのためには、du -sh(「ディスク使用量、概要、人間が読める形式の出力」)を60秒ごとに実行します。昔は、次のようにしていました。

 while [ 1 ] ; do echo ; date ; du -sh /dest/dir ; sleep 60; 完了

この方法もまだ使えますが、こちらの方が簡単です:

 watch -n 60 /dest/dir

あなたのお気に入りの Linux シェルのトリックは何ですか?下のコメント欄にぜひ投稿してください!

おすすめの記事