Linux は、コマンドライン シェルを使用して、システムを制御するための無数のツールやプログラムを提供します。しかし、これらの機能の多くは表面の下に隠されており、ユーザーが発見するのを待っています。
次の機能は Linux を最大限に活用するのに役立ち、それらはすべてローカルまたはリモート サーバーで使用できます。
タブ補完により入力を軽減
タブ補完は、私たち全員が当然のことと思っている機能の 1 つです。これは非常に明白で基本的な機能のように思えますが、これなしで端末を使用してみると、その省略を呪うことになるでしょう。 DOS やその他のコマンド ラインを完了せずに使用したことがある場合、その苦痛は本物です。
Unix は常に優れたタブ補完機能を備えていますが、ファイル名が長くなり、完全に入力するのが難しくなった今では、これは不可欠な機能です。 Tab キーを押すだけで、すでに入力したプレフィックスが明確であれば、シェルがコマンドまたはファイル名を完成させます。そうしないと、あいまいなコマンド/ファイル名のリストが表示されますが、それ自体は役に立ちます。
しかし、Linux のタブ補完は、誰もが初日に学ぶ初歩的なバージョンよりもはるかに強力です。たとえば、 git コマンドを考えてみましょう。
この場合、次のように入力するだけで、サポートされているサブコマンドの完全なリストが表示されます。 git そしてTabを押します。 Git にはさらに強力な補完機能があり、コンテキストを使用して、たとえばコミットに渡す必要があるファイル名を推測できます。
パワー ユーザーはターミナル内のファイルを頻繁に操作することになるため、タブ補完による効率の向上は非常に貴重です。
インタラクティブなコマンド履歴
もう 1 つの大きな効率の向上は、コマンド履歴の効果的な使用です。繰り返しになりますが、最も単純なケースが広く使用されていますが、より高度な機能が試されるのを待っています。
プレス 上 ターミナルで、前のコマンドを順に実行します。 下 反対方向に動いています。 Enter キーを押すと、現在表示されているコマンドが再実行されます。この機能だけでもかなりの時間を節約できます。
ただし、ここでの本当の主役は Ctrl + r です。このショートカットを押すと、強力な対話型検索が開始されます。
入力すると、履歴から最後に一致したコマンドが表示されます。入力を続けて一致を絞り込むか、 を押します。 Ctrl + R 前の一致に移動します。 Ctrl + s 反対方向に動きます。
頻繁に文字を入力している場合 歴史 | grep …の場合は、代わりにこの対話型検索の使用を検討してください。
入力および出力のリダイレクト
Linux の中心には「Unix 哲学」と呼ばれる概念があります。この一連の原則は、一部のコマンドを実行しても出力が生成されない理由と、Linux がプロセスやハードウェア デバイスなどをファイルとして公開する理由を説明するのに役立ちます。
Unix の哲学の最も中心となる機能の 1 つはリダイレクトです。つまり、プログラム間でデータをテキストのストリームとして受け渡します。コマンドを実行するときは、通常、キーボードから入力を行い、画面に表示される出力が生成されます。ただし、これらは両方とも、別のプログラムまたはファイルのデータに添付できます。
$ < database.py grep -E '^\s*def\s+' | wc -l > numlines
上記のコマンドは、 データベース.py ファイルを grep し、指定されたパターンを検索します。次に出力を wc にパイプし、行数 (つまり、一致の数) をカウントします。最後に、出力を numlines という名前のファイルにリダイレクトします。
プロセスを完全に制御
Windows、macOS、Linux のいずれを使用しているかに関係なく、コンピューター上で起こっていることは魔法のように思えることがよくあります。しかし、最終的にはプログラム コードを実行しているだけであり、そのようなコードの標準単位はプロセスです。
コマンド ラインでは、ps、top、/proc ファイルシステムなどのツールを使用して、プロセスを大幅に可視化できます。
たとえば、ps を使用すると、起動したプロセスを検出し、現在実行中のすべてのプロセスを表示できます。使用できます ps -e f プロセス階層を表示し、どのプロセスがどのサブプロセスを開始したかを説明できます。固有の識別子 (PID) を使用すると、プロセスを直接操作できます。たとえば、kill コマンドを使用してプロセスの実行を停止できます。
プロセスの概念と密接に関係しているのがジョブです。ジョブは、対話的に開始されたプロセスをシェルから見たものです。ジョブを使用すると、どのタスクを同時に実行するかを制御したり、長時間実行されているタスクを一時停止したり、対話する必要があるプロセスをフォアグラウンドに持ってきたりできます。
Windows を使ったマルチタスク
tmux が優れた選択肢ではありますが、その前身である screen の方が広く入手可能であるため、代替手段に移行する場合でも、これをマスターすることをお勧めします。
GNU 画面には、大きく異なる 2 つの、しかし強く関連した主な機能があります。
-
これにより、リモート マシンで作業し、切断して、後で同じセッションを再開し、以前と同じプログラムを実行することができます。
-
これにより、単一のターミナル ウィンドウで複数のシェル セッションを実行し、ウィンドウ レイアウトに近づけることができます。
最初の機能はすべてのユーザーにメリットをもたらしますが、パワー ユーザーは分割ペインを最大限に活用し、同様のタスクをグループに編成して簡単に操作できるようにします。
TUI でのマウスのサポート
この 1 つの簡単なトリックで、Windows ユーザーの当惑と軽蔑を避けてください。マウスを掴むだけで、最初から GUI であるかのように、テキストベースのインターフェイスの操作を開始できます。
投稿 TUI プログラムはその好例です。マウスを接続すると、ボタン、タブ、その他のインタラクティブなウィジェットをクリックできるため、キーボードに触れずに使用できるようになります。
ターミナルでマウスを使用するのは少し奇妙に感じるかもしれませんが、それができるという事実だけでもかなり印象的です。そして、指先でより多くのパワーを感じられることは間違いありません。 Lazygit などの一部のプログラムは、スクロール ホイールを認識してリストを上下に移動することもできます。
クリック可能なハイパーテキスト リンク
Linux を最初に学習した後に導入される更新、特にコマンドライン機能は、より安定していると期待されるため、見逃しがちです。ハイパーテキスト リンクは新しいものではありませんが、シェルが常にデフォルトでサポートしているわけではありません。
最近の Linux システムでは、端末で URL をクリックしてブラウザで開くことができるはずです。環境によっては、マウスを置いたときに子猫端末に表示される波線のような、URL がクリック可能であることを示す表示が表示される場合があります。
GNOME ターミナル、iTerm2、kitty などの最新のターミナルは、特定のエスケープ シーケンスを使用したより高度なハイパーリンクをサポートしています。独自のターミナルでテストするには、次のコマンドを実行します。
printf '\e)8;;http://example.com\e\\This is a link\e)8;;\e\\\n'
ターミナル内で「これはリンクです」というテキストがクリック可能なハイパーリンクとして表示されるはずです。
独自のスクリプトに派手なハイパーリンクのサポートを含めたい場合は、この要点で構文の詳細を見つけることができます。ただし、プログラムは出力にこの形式のサポートを追加し続けるため、独自のリンクを生成しなくてもパワー ユーザーになった気分を味わうことができます。
すべてをシャットダウンするコマンド
コンピューターをどのようにシャットダウンしますか?素人は電源ボタンを押しますが、知識のあるユーザーは GUI のメニューを使用して丁寧にシャットダウンします。しかし、実際のパワー ユーザーがコマンド ラインから逸脱することはほとんどありません。
はい、1 つのコマンドを実行するだけでシステムをシャットダウンできます。大きな力には大きな責任が伴いますが、次のように入力するだけでマシンをシャットダウンできることは確かに力になります。
shutdown now
コマンド ラインを使用してシャットダウンを選択することはあまりないかもしれませんが、シャットダウンを選択すると、おそらくこれまで以上にパワー ユーザーになったように感じるでしょう。
使用できます shutdown コマンドを使用して、再起動したり、将来のシャットダウンをスケジュールしたり、マシンをスリープ状態にしたりすることもできます。したがって、これは非常に柔軟であり、ログインしているすべてのユーザーにメッセージを送信して、作業内容を保存するように通知できるマルチユーザー システムに特に役立ちます。