コマンド ラインをマスターしたり、ターミナル ウィンドウをいじったりしなくても、Linux を使用できます。しかし、そうすると、コマンド ラインの速度、パワー、および低レベルのきめ細かい制御を逃すことになります。
一体何が大騒ぎになっているのでしょうか?
それを誓う人もいれば、それを誓う人もいます。私たちが話しているのはコマンド ライン、つまり 50 年以上前から存在し、今でもすぐには活用されない由緒あるヒューマン コンピューター インターフェイスです。グラフィカル インターフェイスとタッチ スクリーンが便利な今日の世界でも、コマンド ラインの場所はあります。
Unix が開発された 1960 年代後半から 1970 年代初頭には、グラフィカル ユーザー インターフェイス (GUI) やデスクトップ環境 (DE) などは存在しませんでした。タイピングは町で唯一のゲームだった。コンピュータを操作したい場合は、何も考えずにキーボードを使用していました。
これには設計上の影響がありました。タイピングのみに制限されていたため、コンピュータの構成、操作、管理のあらゆる側面をキーボードから制御する必要がありました。これは半世紀以上前の Unix に当てはまり、今日の Linux にも当てはまります。コマンドラインからは何でもできます。手の届かないものは何もありません。
現在でも、Linux の核心は依然としてキーボード駆動のオペレーティング システムです。デスクトップ環境がなくても完全な Linux システムを実行することができ、多くのサーバーがそのように使用されています。もちろんデスクトップでは、ほとんどのユーザーが DE を持っています。
ただし、ターミナル ウィンドウを開くと、コマンド ラインに完全にアクセスできるようになります。これは、すべての Linux コマンドと、Linux インストールを管理するすべての設定にアクセスできることを意味します。
システム管理スキルを向上させる
友人、家族、同僚に対してカジュアルにでも Linux システムを管理しようとすると、さまざまなディストリビューションやさまざまな DE に遭遇することになります。
コマンド ラインを使用すると、GUI では実行できないことを実行できます。 DE およびグラフィカル アプリケーションは、ユーザーと Linux の間の抽象化レイヤーです。 Linux インストールの管理に役立つグラフィカル ツールがいくつかあるかもしれませんが、コマンド ラインほどの忠実度はありません。
Linux コマンドには多数のオプションを指定できます。コマンドが複雑になるほど、これらのオプションすべてが GUI ツールで複製される可能性は低くなります。さらに、各 DE には独自のアプリケーションと独自のやり方があります。すべての DE の GUI の方法を学ぶよりも、ターミナル ウィンドウを開いて、どこでも機能する汎用の Linux コマンドを入力する方が簡単です。必要なコマンド ライン ツールが特定のディストリビューションにバンドルされていない場合は、それをインストールするだけで済みます。
場合によっては、選択があなたのために行われることもあります。 DE がインストールされていないヘッドレス サーバー、または SSH アクセスしかできないリモート マシンを管理するには、コマンド ラインでの操作方法を知ることが唯一の方法です。
効率の向上
Linux コマンドには多くのオプションを指定できます。それが彼らを正確にするのです。必要なことを正確に実行するオプションを選択すると、それがまさに実行されます。また、Linux コマンドは連携して動作するように設計されています。他のコマンドによって入力として受け入れられる出力を生成できます。
このようにコマンドを連鎖させることをパイピングと呼びます。このコマンドは、現在のディレクトリ内のファイル拡張子のリストと、それぞれの異なるタイプの番号を返します。 Linux にはこのためのコマンドがありませんが、既存の Linux コマンドを使用して簡単に結合できます。
ls | rev | cut -d'.' -f1 | rev | sort | uniq -c | sort -r
ls はファイルをリストします。ファイル名は rev コマンドに入力され、各名前の文字が反転されます。 Cut コマンドは、最初に見つかったピリオドの後ろの各名前を切り捨てます (存在する場合)。 2 番目の rev では、文字列が元の順序に復元されます。これにより、拡張機能のリストが表示されます。リストはソートされ、uniq はそれぞれの一意のファイル拡張子の出現数をカウントします。その後、リストが再び降順に並べ替えられます。
それは素晴らしいことですが、特に多くのオプションがあるコマンドの場合、覚えなければならないことがたくさんあります。
ありがたいことに、エイリアスは私たちに少し忘れっぽくなる言い訳を与えてくれます。エイリアスを使用すると、複雑なコマンド ラインを呼び出すカスタム コマンドの覚えやすい名前を選択できます。エイリアスもパラメータを取ることができます。コマンド ラインが単一のコマンド ラインではなく、小さなルーチンに近い場合は、それをシェル関数に変えることができます。
出力の永続的な記録が必要な場合は、出力を端末ウィンドウではなくファイルにリダイレクトできます。コマンドの最後に「> file-count.txt」を追加すると、ターミナル ウィンドウに表示されるテキストを含む file-count.txt というファイルが作成されます。
ls | rev | cut -d'.' -f1 | rev | sort | uniq -c | sort -r > file-count.txt
コマンドをまとめてパイプし、コマンドのシーケンスを分割すると、覚えることや入力することが減り、効率が大幅に向上します。
タスクを自動化する
コマンド シーケンスがシェル関数を超える場合、コマンド シーケンスをスクリプトに変換し、シェル言語プログラム全体を作成できます。
スクリプトで達成できることには制限がありません。コマンドラインで使用できるコマンドはどれも、テストと比較、ループ、case ステートメントなどのシェル言語の構成要素とともにスクリプトで使用できます。
退屈で反復的なタスクは、代わりにスクリプトを実行することで実行できます。スクリプトを特定の時間または頻度で実行する必要がある場合は、systemd タイマーを使用してスクリプトが自動的に起動されるように設定できます。
問題のトラブルシューティングを行う
コンピューターに関する問題のトラブルシューティングは、Linux コマンド ラインで非常によくサポートされています。そうすることは、GUI の難読化を回避し、システムを直接扱うことを意味します。
Linux は、ブート プロセスを含む、あらゆる種類のイベントとプロセスをログに記録します。ログ イベントはすべて、systemdjournalctl を通じてアクセスできます。
lshw、lsblk、lscpu などのツールを使用してハードウェアの問題を詳しく調べたり、fsck でファイル システムの問題を調べたり、GRUB でブートの問題を調べたりできます。
sudo lshw
ネットワークと DNS の問題は、ip、dig、host、nslookup を使用して調査できます。
パフォーマンスの問題は、top または htop、iostat、vmstat、netstat を使用して特定できます。
リモートシステムにアクセスする
SSH 接続を使用してリモート Linux コンピュータにログインすると、自分のローカル マシン上のリモート マシン上にターミナル ウィンドウが表示されます。 SSH キーを使用すると、安全なパスワードなしの接続をセットアップできます。
ファイルを転送するだけであれば、rsync を使用して、コンピュータとリモート コンピュータの間でディレクトリまたはディレクトリ ツリー全体を同期できます。もちろん、これらの rsync コマンドをエイリアス、シェル関数、またはスクリプトでラップし、systemd タイマーを使用して自動的に実行することができます。
学習曲線はそれだけの価値があります。飛び込みますが、自分のペースで進めてください。一度にすべてを学ぶ必要はありませんが、拾ったすべての情報が Linux ツールキットの別の資産になります。
ボンネットを開けずに優れた整備士になった人はいません。