序章

Linux は、Linuxカーネルに基づく無料のオープンソースオペレーティングシステムのファミリーです。 Linuxベースのオペレーティングシステムは、Linuxディストリビューションまたはディストリビューションとして知られています。 例としては、Debian、Ubuntu、Fedora、CentOS、Gentoo、Arch Linux、その他多数があります。

Linuxカーネルは、1991年から活発に開発されており、非常に用途が広く、適応性があることが証明されています。 Webサーバーから携帯電話まで、世界中のさまざまなコンテキストでLinuxを実行しているコンピューターを見つけることができます。 現在、90% ofのすべてのクラウドインフラストラクチャと74% ofの世界のスマートフォンはLinuxを搭載しています。

ただし、LinuxのファイルシステムはWindowsやMacOSで見られるものとは構造が異なるため、Linuxの初心者はアプローチがやや難しいと感じるかもしれません。 さらに、Linuxベースのオペレーティングシステムはコマンドラインインターフェイスの操作に大きく依存していますが、ほとんどのパーソナルコンピューターはグラフィカルインターフェイスに依存しています。

このガイドは、重要なコマンドラインの概念とスキルの紹介として役立ち、初心者がLinuxについてさらに学ぶための準備をします。

前提条件

このガイドに従うには、Linuxベースのオペレーティングシステムを実行しているコンピューターにアクセスする必要があります。 これは、SSHで接続した仮想プライベートサーバーまたはローカルマシンのいずれかです。 このチュートリアルは、Ubuntu 20.04を実行しているLinuxサーバーを使用して検証されていますが、示されている例は、任意のバージョンのLinuxディストリビューションを実行しているコンピューターで機能するはずです。

このガイドに従うためにリモートサーバーを使用する場合は、最初に初期サーバーセットアップガイドを完了することをお勧めします。 そうすることで、sudo権限を持つroot 以外のユーザーや、UFWで構成されたファイアウォールなどの安全なサーバー環境がセットアップされます。これを使用してLinuxスキルを構築できます。

または、このページに埋め込まれているインタラクティブ端末を使用して、このチュートリアルのサンプルコマンドを試すこともできます。 次のインタラクティブターミナルを起動します!ボタンをクリックしてターミナルウィンドウを開き、Linux(Ubuntu)環境での作業を開始します。

ターミナル

「ターミナル」、「シェル」、および「コマンドラインインターフェイス」という用語は、しばしば同じ意味で使用されますが、それらの間には微妙な違いがあります。

  • ターミナルは、シェルを実行するテキストのみのウィンドウを表示する入出力環境です。
  • shell は、コンピューターのオペレーティングシステムをユーザーまたはプログラムに公開するプログラムです。 Linuxシステムでは、ターミナルに表示されるシェルはコマンドラインインタープリターです。
  • コマンドラインインターフェイスは、コマンドをコンピュータープログラムに処理し、結果を出力するユーザーインターフェイス(コマンドラインインタープリタープログラムによって管理される)です。

Linuxのコンテキストで誰かがこれらの3つの用語のいずれかを参照する場合、それらは通常、コマンドを実行して、次のように端末に出力された結果を確認できる端末環境を意味します。

Terminal window example

Linuxのエキスパートになるには、ターミナルの使用に慣れている必要があります。 ファイル操作、パッケージのインストール、ユーザー管理などの管理タスクは、ターミナルを介して実行できます。 ターミナルはインタラクティブです。実行するコマンドを指定すると、ターミナルはそれらのコマンドの結果を出力します。 コマンドを実行するには、プロンプトにコマンドを入力してENTERを押します。

クラウドサーバーにアクセスするときは、ほとんどの場合、ターミナルシェルを介してアクセスします。 Linuxを実行するパーソナルコンピュータには、ほとんどのコンピュータユーザーに馴染みのある種類のグラフィカルデスクトップ環境が付属していることがよくありますが、ターミナルに入力されたコマンドを使用して特定のタスクを実行する方が効率的または実用的です。

ファイルシステム階層標準

ほぼすべてのLinuxディストリビューションは、 Filesystem Hierarchy Standard(FHS)として知られるファイルシステムディレクトリ構造のユニバーサルスタンダードに準拠しています。 FHSは一連のディレクトリを定義し、各ディレクトリは独自の特別な機能を果たします。

スラッシュ(/)は、FHSによって定義されたファイルシステム階層のルートディレクトリを示すために使用されます。

ユーザーがシェルにログインすると、/home/内に保存されている独自のユーザーディレクトリに移動します。 これは、ユーザーのホームディレクトリと呼ばれます。 FHSは、/home/を通常のユーザーのホームディレクトリを含むものとして定義しています。

root ユーザーには、FHSによって指定された独自のホームディレクトリ/root/があります。 /は「ルートディレクトリ」と呼ばれ、/内に保存されているroot/とは異なることに注意してください。

FHSはLinuxマシンのデフォルトのファイルシステムレイアウトであり、その中の各ディレクトリは特定の目的を果たすために含まれているため、機能ごとにファイルを整理するプロセスが簡素化されます。

Linuxファイルシステムはディレクトリツリーに基づいています。 これは、他のディレクトリ内にディレクトリ(他のオペレーティングシステムにあるフォルダと機能的に同じ)を作成でき、ファイルは任意のディレクトリに存在できることを意味します。

現在アクティブになっているディレクトリを確認するには、pwdコマンドを実行します。これは「printworkingdirectory」の略です。

  1. pwd

pwdは、現在のディレクトリへのパスを出力します。 出力は次のようになります。

Output
/home/sammy

この出力例は、現在のActiveDirectoryがsammyであり、ルートディレクトリ/にあるhome/ディレクトリ内にあることを示しています。 前述のように、sammy/ディレクトリはhome/ディレクトリ内に保存されるため、sammy/sammyユーザーのホームディレクトリを表します。

現在の作業ディレクトリに存在するファイルとディレクトリのリストを表示するには、lsコマンドを実行します。

  1. ls

これにより、現在の作業ディレクトリに保持されているファイルまたはディレクトリの名前のリストが返されます。 ただし、新しいマシンでこのガイドに従っている場合、このコマンドは出力を返さない場合があります。

mkdirコマンド(「ディレクトリの作成」を表す)を使用して、現在の作業ディレクトリ内に1つ以上の新しいディレクトリを作成できます。 たとえば、testdir1およびtestdir2という名前の2つの新しいディレクトリを作成するには、次のコマンドを実行します。

  1. mkdir testdir1 testdir2

lsコマンドを実行すると、次のディレクトリが出力に表示されます。

  1. ls
Output
testdir1 testdir2

これらの新しいディレクトリの1つに移動するには、cdコマンド(「ディレクトリの変更」の略)を実行し、ディレクトリの名前を指定します。

  1. cd testdir1

これにより、新しい現在の作業ディレクトリが指定したディレクトリに変更されます。 これはpwdで確認できます。

  1. pwd
Output
/home/sammy/testdir1

ただし、testdir1testdir2はどちらもsammy ユーザーのホームディレクトリに保持されているため、ディレクトリツリーの異なるブランチに存在します。 cdコマンドは、現在の作業ディレクトリ内のディレクトリを検索するため、testdir1が存在する間、以前に作成したtestdir2ディレクトリにcdを直接移動することはできません。作業ディレクトリ:

  1. cd testdir2
Output
bash: cd: testdir2: No such file or directory

ただし、移動先のディレクトリの絶対パスを指定すると、現在の作業ディレクトリに関係なく、既存のディレクトリに移動できます。

  1. cd /home/sammy/testdir2

注: Linuxでは、チルダ(~)は、ログインしているユーザーのホームディレクトリの省略形です。 これを知っていると、代わりに前のコマンドを次のように書くことができ、同じ結果が得られます。

  1. cd ~/testdir2

さらに、..を指定して、パスの1つ上のレベルのディレクトリに移動できます。 元のディレクトリに戻るには:

  1. cd ..

ナビゲーションツリーのどこにいるかについて混乱したことがある場合は、いつでもpwdコマンドを実行して現在のディレクトリを見つけることができることを忘れないでください。 このセクション全体のコマンド例に示されているように、多くの最新のシェル(多くのLinuxディストリビューションのデフォルトであるBashを含む)も現在のディレクトリを示します。

ファイル操作

cdを使用してファイルを操作することはできません。 cdは「ディレクトリの変更」の略で、ディレクトリをナビゲートすることのみを許可します。 ただし、ファイルの内容を作成、編集、および表示することはできます。

ファイルを作成する1つの方法は、touchコマンドを使用することです。 file.txtという名前の新しいファイルを作成するには:

  1. touch file.txt

これにより、現在の作業ディレクトリにfile.txtという名前の空のファイルが作成されます。 このファイルの内容は空です。

後でfile.txtの名前を変更する場合は、mvコマンドを使用して名前を変更できます。

  1. mv file.txt newfile.txt

mvは「移動」の略で、ファイルまたはディレクトリをある場所から別の場所に移動できます。 元のファイルfile.txtを指定することにより、現在の作業ディレクトリ内の新しい場所にファイルを「移動」して、名前を変更できます。

cpコマンドを使用して、ファイルを新しい場所にコピーすることもできます。 file.txtを戻したいが、newfile.txtを保持したい場合は、次のようにfile.txtという名前のnewfile.txtのコピーを作成できます。

  1. cp newfile.txt file.txt

ご想像のとおり、cpは「コピー」の略です。 newfile.txtfile.txtという新しいファイルにコピーすることで、元のファイルを別の名前の新しいファイルに複製したことになります。

ただし、ファイルに何も含まれていない場合、ファイルはあまり役に立ちません。 ファイルを編集するには、ファイルエディタが必要です。

ファイルエディタには多くのオプションがあり、すべて専門家が日常的に使用するために作成します。 このようなエディターには、 vim emacsnano、およびpicoが含まれます。

nanoは初心者に適したオプションです。比較的ユーザーフレンドリーで、不可解なオプションやコマンドで過負荷になることはありません。

nanoを使用してfile.txtにテキストを追加するには、次のコマンドを実行します。

  1. nano file.txt

これにより、すぐに入力を開始してfile.txtを編集できるスペースが開きます。 好きなテキストを追加するか、この例のテキストをコピーできます。

file.txt
Say it's only a paper moon
Sailing over a cardboard sea,
But it wouldn't be make believe
If you believed in me.

Yes it's only a canvas sky
Hanging over a muslin tree,
But it wouldn't be make believe
If you believed in me.

Without your love,
It's a honky-tonk parade.
Without your love,
It's a melody played in a penny arcade.

It's a Barnum and Bailey world,
Just as phony as it can be,
But it wouldn't be make believe
If you believed in me.

書いた文字を保存するには、CTRL + XYENTERの順に押します。 これにより、新しく保存されたfile.txtファイルを含むシェルに戻ります。

file.txtにテキストが含まれているので、catまたはlessを使用して表示できます。

catコマンドは、指定されたファイルの内容をシステムの出力に出力します。 catを実行して、編集したfile.txtファイルを引数として渡します。

  1. cat file.txt

これにより、file.txtの内容全体が端末に出力されます。 前の例のテキストを使用した場合、このコマンドは次のような出力を返します。

Output
Say it's only a paper moon Sailing over a cardboard sea, But it wouldn't be make believe If you believed in me. Yes it's only a canvas sky Hanging over a muslin tree, But it wouldn't be make believe If you believed in me. Without your love, It's a honky-tonk parade. Without your love, It's a melody played in a penny arcade. It's a Barnum and Bailey world, Just as phony as it can be, But it wouldn't be make believe If you believed in me.

catを使用してファイルの内容を表示すると、ファイルが特に長い場合、扱いにくく、読みにくくなる可能性があります。 別の方法として、lessコマンドを使用して、出力をページ分割することもできます。

lessを使用して、次のようにfile.txtファイルの内容を表示します。

  1. less file.txt

これにより、file.txtの内容も印刷されますが、ファイルの先頭から一度に1つのターミナルページが印刷されます。 スペースバーを使用してページを進めるか、矢印キーを使用して一度に1行ずつ上下に移動できます。

qを押して、lessを終了します。

最後に、file.txtファイルを削除するには、ファイルの名前を引数としてrmに渡します。

  1. rm file.txt

注:他のオプションがないと、rmコマンド(「削除」の略)を使用してディレクトリを削除することはできません。 ただし、空のディレクトリを削除できる-dフラグが含まれています。

  1. rm -d directory

rmdirコマンドを使用して、空のディレクトリを削除することもできます。

  1. rmdir directory

空でないディレクトリを削除したい場合は、rm-rフラグで実行できます。 これにより、指定したディレクトリとその内容(ファイルやサブディレクトリを含む)が削除されます。

  1. rm -r directory

ただし、コンテンツの削除は永続的なアクションであるため、指定したディレクトリを削除することが確実な場合は、-rオプションを指定してrmを実行する必要があります。

学習の文化

特にまったく新しい場合は、ターミナルウィンドウを介してLinuxシステムを快適にナビゲートするには、時間、献身、そして好奇心が必要です。

特定のタスクを実行する方法について質問がある場合は、いくつかの方法で指示を得ることができます。 のような検索エンジングーグル DuckDuckGo のような質疑応答サイトと同様に、貴重なリソースですスタック交換また DigitalOceanのコミュニティQ&A 。 質問がある場合、他の多くの人がすでに質問していて、質問に答えている可能性があります。

質問が特定のLinuxコマンドに関係している場合は、マニュアルページに、ほぼすべてのコマンドに関する詳細で洞察に満ちたドキュメントが記載されています。 コマンドのマニュアルページを表示するには、コマンドの名前を引数としてmanコマンドに渡します。

  1. man command

たとえば、man rmには、rmの目的、使用方法、使用可能なオプション、使用例、およびより役立つ情報が表示されます。

結論

このガイドは、Linux環境での作業の概要を示しています。 ただし、Linuxとそのすべてのコンポーネントを完全に理解することは、単一のチュートリアルの範囲をはるかに超えています。 たとえば、このチュートリアルでは、Linuxシステム管理の基本的な概念であるパーミッションについては触れていません。

LinuxBasicsタグページにあるLinuxの紹介コンテンツをすべてチェックすることをお勧めします。