コマンド ライン インターフェイス (CLI) に慣れるには、多くの良い議論があります。ただし、完全な初心者の場合、開始するのが難しい場合があり、新しいシェル セッションは少し怖く感じる場合があります。
CLI の基本を見ていきましょう。
最初に必要なのは端末エミュレーターです。これは、マシンへのテキストのみのアクセスをエミュレートするプログラムです。どのオペレーティング システム (OS) にもエミュレーターの大きな選択肢があります。それらはすべて非常に似ており、主な違いは次のとおりです。
最初は、OS または統合開発環境 (IDE) で利用できるもので問題ないはずです。
シェルは、コマンドを解釈してプログラムを実行するプログラムです。上で説明した端末シミュレーターとは別物です。ある意味では、グラフィック インターフェイスで端末を開き、端末内でコマンドのテキストのみのインタープリターを使用します。
利用可能なオプションは多数ありますが、微妙な違いによってユーザー エクスペリエンスが大きく変わる可能性があります。
Z シェル (Zsh) は、最新の人気のあるコマンド インタープリターです。そのインターフェイスはユーザー フレンドリーで、シェル エクスペリエンスをカスタマイズできるコミュニティ パッケージが利用可能です: Oh My Zsh 。私はそれを数年間使用しており、私の CLI の習慣のほとんどはそれから適応されています。
Bash は Zsh の少し古い代替手段です。これは非常に一般的であるため、遭遇する多くのマシンで利用できることが期待できます。 Zsh からの多くのショートカットもそこで機能しますが、別の構成ファイルを使用しており、スクリプト言語も少し異なります。
スタンダードなシェル。これは標準の Unix コマンドの一部であり、Unix ライクなマシンであればほぼ確実に使用できます。したがって、スクリプトの作成に関しては安全な賭けです。
ユーザー インターフェイスには多くの最新の改善点が欠けているため、ワイヤリング スクリプト以外には使用しません。
私の場合、それはzsh
です
すべてのシェルはプログラムであり、別のシェルから直接実行できます。例えば:
このようにして、インストールしたシェルを確認し、すばやくテストできます。シェルを永続的に変更するには、Linux と macOS の両方でコマンドchsh
(シェルの変更) を使用できます。
使用するシェルがない場合は、最初にインストールする必要があります。正確なコマンドは、OS または Linux ディストリビューションによって異なります。
では、端末を起動して実行したら、それをどのように使用しますか?
CLI を使用すると、ターミナルに名前を入力して Enter キーを押すことでコマンドを実行できます。各コマンドは、広範なインターフェイスを提供する個別のプログラムであり、それぞれに独自のドキュメントが付属しています。
同様に、各 OS は独自のコマンド セットを提供しますが、特に Unix、macOS、および Linux に触発されたシステムとの類似点を共有しています。
Windows では、標準のコマンド ラインcmd
には非常に異なるコマンド セットがありますが、同様のインターフェイスを取得するために使用できる多くのオプションがあります。
Unix は 1973 年に公開された OS で、その後の多くのことに影響を与えました。現在の仕様では161 個のコマンドが定義されていますが、幸いなことに、CLI のメリットを得るために必要なコマンドはほんの一握りです。
コマンドの例:
pwd
は、コマンドを実行している現在のパスを示します。
cd
はディレクトリを変更します。デフォルトでは、ホーム ディレクトリに移動します ( https://asciinema.org/記録またはスクリーンショット)。
各コマンドは、追加の引数を取ることができます。引数は、コマンド名の後に続くスペース区切りの値です。引数の意味は、プログラムによって異なります。コマンドのドキュメントでさまざまな引数について読むことができます。
多くの標準コマンドには、プログラムの動作を変更できるさまざまなオプションが付属しています。たとえば、 ls
は次のオプションと一緒によく使用されます。
-a
— で始まるファイルを含むすべてのファイルを表示します.
— 隠しファイルに関する Unix の規則
-l
ファイルを長い形式で表示 — 詳細情報を提供
一般的な規則は、オプションを個別のパラメーターとして許可すること ( ls -a -l
)、または 1 つのパラメーターに結合すること ( ls -la
) です。
パラメーターは、コマンドまたはそのオプションの 1 つに値を提供する引数です。
たとえば、上記の例では、パスを指定してデフォルトの動作を変更できます。
ls workspace
— ワークスペース フォルダー内のファイルを一覧表示します。
cd workspace
— 現在のディレクトリをワークスペースに変更します。
cat file
:ファイルの内容を画面に表示します。
パラメーターの意味はプログラムによって異なります。最初は、ドキュメントをよく確認する必要があると予想できます。
標準出力は、プログラムの実行時にコマンド ラインに追加されるテキストです。そのテキストは、実行のハッピー パスによって示されます。これまで見てきた例は、さまざまなコマンドの標準出力を示しています。
C++ を学ぶとき、最初に学ぶことの 1 つはcout
(標準出力) です。
デフォルトでは、標準出力は画面に表示されるだけですが、 >
演算子を使用して簡単にファイルにリダイレクトできます。例:
エラー出力は、プログラムが実行中に発生した問題に関する情報を表示する場所です。ターミナルから直接コマンドを実行している間、エラー出力と標準出力は同じように扱われ、画面に表示されるだけです。たとえば、存在しないファイルをls
しようとすると、次のようになります。
出力をファイルにリダイレクトすると、違いが明らかになります。
通常のワークフローでは、標準入力はプログラムに入力するものです。これまで見てきたコマンドは、通常、対話モードでは使用されません。簡単な例としては、スクロールできるman
ページがあります。
C++ の経験がある人は、次のcin
という用語を聞いたことがあるでしょう。
cin >> variable;
多くの一般的なコマンドでは、パイプ演算子があるため、標準入力が特に重要になります。
パイプは、あるプログラムの標準出力を別のプログラムの標準入力に接続する方法です。これが、前回の記事で述べた相互運用性を CLI が実現する方法です。
パイプを使用すると、さまざまなコマンドをさまざまな方法で組み合わせることができます。このシリーズの後半でいくつかの例を紹介します。今のところ、簡単な例は次のとおりです。
どこ:
cat …
— ファイルを読み取り、その内容を標準出力に返します。
less
— 標準入力から値を取得し、画面に合わせます
同様に、検索ユーティリティgrep
を使用して:
どこ:
cat …
—上記のように
grep 1
— 標準入力から値を取得し、 1
を含む行のみにフィルター処理します。コマンドの標準出力をファイルに書き込むために使用される>
演算子については既に説明しました。この演算子は、提供する出力でファイルを上書きします。既存のファイルに追加したい場合は、代わりに>>
を使用できます。
コマンド ラインで実行されるすべての操作は、特定のディスクの場所 (作業ディレクトリ) のコンテキストで実行されます。読み取りまたは書き込み用に相対ファイル パスを指定すると、それらは作業ディレクトリから解決されます。
通常、作業ディレクトリは、作業中のプロジェクトの最上位フォルダーに設定します。新しいセッションを開始すると、通常、作業ディレクトリはホーム ディレクトリに設定されます。
シェル インタープリターは、作業を高速化するための多くのショートカットを提供します。時間が経つにつれて、それらについて考えることなく、直感的に使用できるようになります。
初心者と画面を共有していると、これらのショートカットは明らかであることに気づきます。以下に、コマンド ラインで作業するための生産性向上のためのヒントをいくつか紹介します。
私は自分で Zsh を使用していますが、これらのショートカットはそこで機能します。少なくともそれらのいくつかは Bash でも動作するはずですが、正確なバージョンと構成に依存する可能性があります。
CLI を高速に使用するための主な秘訣は、常にすべてを入力しないことです。最も基本的なケースは、数行前に実行したコマンドを取り戻すことです。これを行うには、上矢印キーを押します。
上矢印と下矢印を使用して、最近のコマンドをスクロールできます。実行したいコマンドに類似したコマンドが見つかったら、それを編集できます。これにより、プロセス全体が大幅に高速化されます。これは、引数がわずかに異なるだけで、よく似たコマンドを実行するためです。
手動スクロールは、最新のコマンドの 1 つまたは少数を取得するのに適しています。ただし、過去からさらに何かを取得したい場合は、検索機能を使用できます。デフォルトでは、コマンド履歴で検索を開始するために使用できるコマンドは CTRL + R です。
実行したいコマンド全体を入力する必要はありません。 Zsh と Bash はどちらも、自動入力を要求する方法としてタブ キーをサポートしています。コマンドまたはファイル名が一意の場合は入力し、入力内容が多くの可能性に一致する場合は、使用可能なすべてのオプションを表示します。
Zsh は、コマンド オプションの自動入力も提供します。
オートフィルは 2 つのレベルで優れた機能です。入力の時間を節約し、間違いを減らします。 CLI を学習するにつれて、できるだけオートコンプリートを使用する習慣を身につける必要があります。
ワイルドカードを使用して複数のファイルの名前を一致させることで、入力をさらに高速化できます。
多くの場合、プログラムの出力が多すぎて画面に収まらない場合、別のプログラムをページャー (出力をナビゲートして上下にスクロールできるツール) として使用します。ほとんどの場合、そのために使用されるプログラムはless
です。使用する際に注意すべき点がいくつかあります。
何よりもまず、端末エミュレータが提供するスクロールバーでスクロールしないでください。 less
は、出力の最後にテキストの画面全体を再描画します。
端末エミュレーター内を上にスクロールすると、読み取りたいファイルの内容ではなく、以前に他のプログラムによって返されたものが表示されます。スクロール バー (スクロール ホイール) でスクロールする代わりに、上下の矢印を使用してファイル内を移動します。
もう 1 つのよくある混乱のポイントは、どうすれば今すぐ退出できるかということです。 q
を押すと、「less」の全画面表示モードを終了できます。他のプログラム ( vim
など) は:
を使用してコマンドを開始するため、多くの場合:q
としてスタイル設定されます。
コマンド ラインでは、すべてがテキストであり、テキストは簡単に検索できます。 /<search term>
と入力して less で表示されるコンテンツ内を検索し、 n
とN
を入力して結果をナビゲートできます。
less
は、 vim
にあるものと同様の他のナビゲーション コマンドをサポートします。
j
— 1 行下にスクロールk
- 1 行上にスクロールgg
— ファイルの先頭までスクロールG
— ファイルの最後までスクロールd/u
: 半画面ダウン/アップ
これらのショートカットは、ファイル内をすばやく移動するのに役立ちます。
それは素晴らしいことです!コマンド ラインは、プログラミングの効率を高める優れたツールです。ここでサインアップして、私が他のコマンド ライン関連資料を公開しているので、私から最新情報を入手してください。
こちらにも掲載