ウェブサイト検索

13の時間を節約するLinuxターミナルのトリックを使うべきです


13. 前のコマンドをsudoで実行する

私たち全員がその経験をしています。コマンドを入力して、Enterを押したら「許可が拒否されました」というメッセージが表示されます。sudoを前に付けるのを忘れたことに気づきます。すべてを再入力する代わりに、ちょっとした便利なトリックを使うことができます:

sudo !!

これはシェルに最後のコマンドを再実行させるもので、今回はsudoを使います。!!記号はBashの履歴展開の一部です。これは前のコマンド全体に展開されます。ですので、最後のコマンドがapt updateだった場合、!!と入力することで実際にapt updateが実行されます。そしてsudo !!は次のようになります:

sudo apt update

特にワークフローに没頭していて権限を昇格させるのを忘れてしまったときに、本当に時間を節約できます。

12. 痕跡を残さずにコマンドを実行する

履歴に記録されたくないコマンドを実行したことがありますか?おそらく、秘密のトークンを使用しているか、リスクのあるコマンドを試しているか、単に不確かなことに挑戦しているのでしょう。Bashでは、コマンドを履歴から外すための驚くほど簡単な方法があります。それは、コマンドの前にスペースを入れるだけです。

ここに私のコマンド履歴の一例があります。

今、スペースで始まるコマンドを実行した後、それは履歴に追加されなくなります。

ご覧のように、最後のエコーコマンドは見つかりません。このトリックは、HISTCONTROLというBashの機能に依存しています。デフォルトでは、多くのシステムのHISTCONTROLは、ignorespaceまたはignorebothに設定されています。これらの設定は、Bashに対して、履歴を書き込む際に空白で始まるコマンドを無視するよう指示します。

11. 前のコマンドからの論証を使用する

長いファイル名を入力した後、次のコマンドで再度その名前を使用する必要がありますか? コピー&ペースト(または再入力)の代わりに、Alt+ピリオド(.)を押すと、カーソルの位置に前のコマンドの最後の引数が挿入されます。 これはほとんどのBashシェルで機能し、同じファイルやディレクトリに対して何度も作業するコマンドに特に便利です。

例えば、次のコマンドを発行することがあります。

mkdir really_long_directory_name_with_underscores

その後、cdと入力してAlt+.を押すことで、先ほど作成したディレクトリに移動できます。

もう一つの一般的な状況は、アーカイブファイルを抽出した後にそれを削除したい場合です。このコマンドを実行した場合:

tar -xvf archive_name.tar.gz

単にrmと入力し、Alt+.を押してアーカイブを削除することができます。このショートカットを複数回押すことで、以前のコマンドからの引数を循環させることができます。

10. 前のコマンドの単語を別の単語に置き換えます

私たちは皆、速くタイプしますが、時々間違えます。おそらく、間違ったファイル名やサーバー名を使用しているか、フラグを誤って入力しているのでしょう。コマンド全体を再入力する代わりに、Bashは素早く修正するためのツール、キャレット(^)記号を提供します:

^wrong^right

これは、あなたの前のコマンドの最初の「wrong」を「right」に置き換え、更新されたコマンドをすぐに実行します。例えば、google.comをpingしようとしたが、誤ってping goggle.comとタイプしてしまったとしましょう。そうするには、次のようにしてください:

^goggle^google

Bashが実行します:

ping google.com

これは、迅速に修正する必要があるタイプミスが一度だけ発生した場合に便利です。

9. カーソルの前後の文字を入れ替える

もしあなたが速いタイピストなら、おそらく間違ったキーを押して、次のようなことを入力してしまったことでしょう:

sl

実際にタイプしたかった時は:

ls

はい、それは非常に一般的なタイプミスであり、実際に画面上を走る列車を表示するコマンドラインジョークツール「sl」と呼ばれるものがあります。

しかし、バックスペースを押したり、再入力したり、矢印キーに手を伸ばしたりする代わりに、もっと速い解決法があります。Ctrl+Tを押すだけで、カーソルの周りの2つの文字が入れ替わります。例えば、次のように入力したとしましょう:

grpe file.txt

あなたはgrepと言いたかったのです。カーソルをpの上に置いて、Ctrl+Tを押すと、次のようになります:

grep file.txt

それは小さなトリックで、1日に20回使っている自分に気づくまで些細なことのように感じます。

8. エイリアスの使用

現実を見てみましょう。一部のLinuxコマンドは本当に長いです。そして、頻繁にそれらを実行する場合、同じフラグやフルパスを入力するのはイライラします。間違えやすいことも言うまでもありません。そこで、エイリアスが登場します。エイリアスを使用すると、より複雑または頻繁に使用されるコマンドのためにシンプルな名前を使って、自分のコマンドのショートカットを作成できます。

エイリアスを作成するのは簡単です:

alias shortname='actual command here'

いつも走っているとしましょう:

ls -lah --color=auto

このようにして、簡単にエイリアスを作成できます:

alias ll='ls -lah --color=auto'

今や、端末で ll を実行するだけで全てを行うことができます。ただし、これは現在の端末セッションにのみ有効です。永続的なエイリアスを作成したい場合は、~/.bashrc ファイルに追加し、再読み込みする必要があります。

7. 出力を列形式で整形する

Linuxでは、コマンドラインでデータを扱う必要がよくあります。時々、出力がかなり混乱することがあります。幸いなことに、columnコマンドがあります。このコマンドは、その混沌を整った、読みやすいデータの表に変えることができます。columnコマンドは、テキストを整然とした列にフォーマットし、ホワイトスペースやカスタム区切り文字に基づいてうまく整列させます。リスト、CSV、コロン区切りのデータなどを扱う際にぴったりです。

一般的な例を見てみましょう。通常、Linux上でプロセスをリストするためには次のようにします。

ps aux

列コマンドを使用してさらにフォーマットすることができます:

ps aux | head -10 | column -t

これは列に対して、整列した列を持つテーブルを作成するよう指示します。このコマンドを使用する際は、予測可能な入力があると最適です。データが非常に不一致な場合、出力はまだ少し荒く見えるかもしれません。さらに、もし区切り文字が値の中に含まれている場合、フォーマットが狂ってしまう可能性があります。

6. 複数のコマンドを連続して実行する

時々、いくつかのコマンドを連続して実行したい場合があります。一度に1つずつ入力して待つ代わりに、単一の行でそれらを連結することができます。その後、それらが無条件に実行されるか、前のコマンドが成功した場合のみ実行されるかを制御します。

セミコロン(;)は、コマンドを連結して、成功や失敗に関係なく、一つずつ実行させることができる。

echo "Updating..." ; sudo apt update ; echo "Done!"

この例では、たとえapt updateが失敗しても、最後にecho "Done!"はまだ実行されます。

一方で、&& 演算子は、前のコマンドが成功した場合にのみ各コマンドが実行されることを保証します。これは、コマンドを連鎖させる賢い方法です。

sudo apt update && sudo apt upgrade

&& の後のコマンドは、それ以前のコマンドが成功した場合のみ実行されます。&& の反対は || (二つの縦棒)演算子です。この記号を使用して二つのコマンドを組み合わせると、左側のコマンドが失敗した場合にのみ右側のコマンドが実行されます。&& と || を使用することで、Bash スクリプトの問題をデバッグするのに役立ちます。

5. パスワードの代わりに指紋を使用する

sudoを実行したり画面のロックを解除するたびにパスワードを入力していますか?それは安全ですが、何度も繰り返すうちに面倒に感じ始めます。もしあなたのノートパソコンに指紋リーダーがあるなら、パスワードを入力する代わりにそれを使って認証できます。

これらの手順はUbuntuおよびその派生版に向けられています。他のディストリビューションでは手順が異なる場合があります。

まず、必要なパッケージをインストールします:

sudo apt install fprintd libpam-fprintd

その後、このコマンドを実行して指紋をスキャンしてください:

fprintd-enroll

次に、sudoのPAM設定ファイルを開きます:

sudo nano /etc/pam.d/sudo

この行を上に追加してください:

auth sufficient pam_fprintd.so

sudoコマンドを実行して指紋をテストします。システムはパスワードを要求する代わりに、指紋をスキャンするように促します。

4. 前のディレクトリに戻る

私はしばしば二つのディレクトリ間を行き来することがあります。フルパスを繰り返し入力するのは煩わしいです。だから、このすごく便利なトリックは私にとって救いの手でした。

cd -

このコマンドは、Linuxファイルシステムの戻るボタンのように、前の作業ディレクトリに移動します。例えば、あなたが次のような場所から始めたとします:

/home/user/projects/website

それから「~/ダウンロード」に移動します。今、cd - コマンドを実行すると、瞬時に「/home/user/projects/website」に戻ります。そして、再度cd -を実行すると、「~/ダウンロード」に戻ります。

3. ターミナルをフリーズおよびアンフリーズする

もしあなたが習慣でターミナルでCtrl+Sを押して何かを保存しようとした場合、ターミナルがフリーズしてしまったことに気づいたかもしれません。しかし、心配しないでください。あなたのシステムはクラッシュしていませんし、キーボードも壊れていません。Linuxのターミナルでは、Ctrl+SはXOFFと呼ばれるソフトウェアフロー制御信号を送信します。これによってターミナルは出力を一時停止し、実質的にフリーズするのです。

端末を解除するには、Ctrl+Qを押すだけです。これにより、出力を再開させる信号であるXONが送信され、端末が瞬時に解除されます。

しかし、これはなぜ存在するのでしょうか?これは、端末が遅いシリアルラインを介して通信していた時代のレガシー機能です。スクリーンをオーバーフローする前にスクロールテキストを一時停止できました。しかし、現在では、何かを保存しようとしたり、早く入力しようとしたりする人々にとって、ほとんど罠となっています。

2. ターミナル画面をクリアする

あなたはターミナルセッションの奥深くにいて、画面はコマンド、ログ、エラーメッセージ、あるいはあなたが作成した混乱で埋め尽くされています。スクロールすることもできますし、「clear」と手動で入力することもできます。でも、もっと早い方法があります。Ctrl+Lを押すだけです。これでターミナルの画面が瞬時にクリアされます。

clearコマンドを使用することとこのショートカットを使用することの違いは、clearコマンドを使用すると、過去のコマンドを見るために上にスクロールできなくなることです。Ctrl+Lを使用すると、過去に発行したコマンドを上にスクロールして見ることができ、これは便利です。

1. ネストされたディレクトリを作成する

プロジェクトを始めるとき、入れ子になった複数のディレクトリを作成する必要があるとしましょう。親ディレクトリを作成してからサブディレクトリを作成するのは非常に面倒です。代わりに、mkdirコマンドで-pフラグを使用することを考えてみてください。これにより、一つのコマンドで親ディレクトリ内にサブディレクトリを作成することができます。

mkdir -p rootfolder/client/components

さて、1つのディレクトリの下に複数のサブディレクトリを作成したいとしましょう。それはサブディレクトリを波かっこで囲むことによって実現できます。

mkdir -p rootfolder/{client/components,server}

私はこれらのターミナルトリックが非常に役立つことを見つけました。これらの小さな宝石のそれぞれが、あなたのLinux体験をより速く、よりクリーンに、そしてより楽しめるものにします。Linuxターミナルを学ぶ価値を高めるトリックは他にもたくさんあります。

関連記事: