WindowsコマンドプロンプトからLinuxターミナルへの切り替え:知っておくべき7つのこと
Linuxシェルはコマンドプロンプトに似ているように見えるかもしれませんが、Windowsのコマンドラインから来た場合、彼らについて発見すべきことがたくさんあります。
1. Linuxには複数のシェルがあります
LinuxのWindowsコマンドプロンプトとの違いの一つは、複数のシェルから選択できることです。MS-DOS時代からWindowsでも可能でしたが、Linuxでシェルを切り替える能力ははるかに目立ちます。
BashはLinuxディストリビューションの最も人気のあるデフォルトシェルですが、tcsh、zsh、fishなど、他にも使用できるシェルがあります。それぞれ独自の機能を持っています。多くのシェルは、管理タスクに必要なシェルスクリプトとの互換性のためにBourneシェルをエミュレートできます。chshコマンドを使用して異なるシェルを選択できます。
2. パス区切り文字が異なる
WindowsとLinuxのパス名を見ると、区切り文字が異なることに気づきます。Windowsでは、パスは「\」(バックスラッシュ)文字で区切られ、Linuxや他のUnix系システムでは「/」(スラッシュ)文字で区切られています。これは主に歴史的な理由によるものです。
Windowsに慣れていると、これに戸惑うかもしれません。Linuxのコマンドは大文字と小文字を区別するため、小文字と大文字の文字は異なる意味を持ちます。
3. Linuxシェルは積極的に開発されています
マイクロソフトは主に古いコマンドプロンプトを廃止し、PowerShellを推奨していますが、Linuxシェルは依然として活発に開発されています。これが、今日のLinuxで多くのシェルから選択できる理由です。
コマンドラインは単なる歴史的遺物ではなく、パワーユーザー、管理者、開発者が日常的に使用する重要なソフトウェアです。バグは発見され修正されており、新機能が常に追加されています。
4. LinuxからPowerShellを実行し、Windows上でLinuxシェルを使用できます。
Windows上でPowerShellを実行するだけでなく、Linux上でLinuxシェルを実行する必要もありません。片方からもう片方を実行することができます。
マイクロソフトはLinux用のPowerShellのバージョンを維持しており、ほとんどの主要なLinuxディストリビューションでシェルとしてインストールできます。あなたのディストリビューションのためにマイクロソフトのパッケージリポジトリを使用してインストールできます。
Windows上でLinuxシェルを実行することもできます。最も簡単な方法は、Windows Subsystem for Linuxをインストールし、その後Linuxディストリビューションをインストールすることです。前述のように、ほとんどのディストリビューションはデフォルトでBashを使用していますが、シェルをお好みのものに変更することもできます。
さらに奇妙にしたい場合は、WindowsにLinux版のPowerShellをインストールすることもできます。つまり、Windows上のLinuxでLinux版のPowerShellを実行できるのです。
WSLを使用すると、WindowsからLinuxを探索し、両者を組み合わせることができます。
5. Linuxシェルにはジョブ制御があります
Linuxシェルとコマンドプロンプトを分ける一つの点は、シェルが最初からマルチタスク用に構築されていることです。その結果、現代のシェルには、他のコマンドを実行している間にタスクをバックグラウンドに置くことができるジョブコントロールという機能があります。
コマンドをバックグラウンドで開始するには、シェルの行の末尾に&(アンパサンド)文字を追加します。例えば、
some_long_operation &
シェルはそのコマンドをバックグラウンドで実行し、角括弧内にジョブ番号を返します。これを使用して、シェルにジョブに対して何をするかを指示できます。
バックグラウンドにあるジョブを前面に持ってくるには、fgコマンドを使用します。デフォルトでは、fgは直前にバックグラウンドにしたジョブを前面に持ってきますが、複数のジョブがある場合は、%(パーセント記号)を前に付けたジョブ番号を指定する必要があります。例えば、ジョブ1を前面に持ってくるには、次のように入力します:
fg %1
現在実行中のジョブをバックグラウンドに移すには、Ctrl+Zを押し、その後シェルで「bg」と入力します。
6. Linuxには組み込みコマンドと外部コマンドの両方があります
私が示したジョブ制御コマンドは、ほとんどの現代のシェルに組み込まれています。このため、彼らは「ビルトイン」と呼ばれています。Bashやzshで動作するはずです。
シェル開発者がビルトインコマンドを作成する理由は、シェルがすでにメモリに存在し、外部コマンドをロードする必要がないため、実行が速いことが多いからです。一部のビルトインコマンドは従来のLinuxプログラムに重複しており、両者を混同しやすいです。最良の選択肢は、シェルのドキュメントを読み、どのビルトインコマンドがあるかを学ぶことです。
また、どのようなコマンドであるかを教えてくれるwhichというコマンドを実行することもよくあります。例えば、bgの場合:
which bg
シェルは、それがビルトインコマンドであると報告します。zshでは、これもビルトインコマンドです。
which which
7. スクリプト言語には選択肢があります
コマンドプロンプトで何かを自動化する必要があった場合、バッチファイルや拡張子が.batのファイルを書いたことがあるかもしれません。
シェルスクリプトを使ってタスクを自動化することもできます。Linuxシェルは強力で、配列やハッシュ/連想配列などの多くの本格的なプログラミング機能を備えています。さらに能力が必要な場合は、PerlやPythonのようなスクリプト言語を学ぶことができます。どの言語を使用しても、Linuxコマンドラインを探求する際には多くのことがあなたを忙しくさせるでしょう。