Linuxの基本の紹介
序章
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つの用語のいずれかを参照する場合、それらは通常、コマンドを実行して、次のように端末に出力された結果を確認できる端末環境を意味します。
Linuxのエキスパートになるには、ターミナルの使用に慣れている必要があります。 ファイル操作、パッケージのインストール、ユーザー管理などの管理タスクは、ターミナルを介して実行できます。 ターミナルはインタラクティブです。実行するコマンドを指定すると、ターミナルはそれらのコマンドの結果を出力します。 コマンドを実行するには、プロンプトにコマンドを入力してENTER
を押します。
クラウドサーバーにアクセスするときは、ほとんどの場合、ターミナルシェルを介してアクセスします。 Linuxを実行するパーソナルコンピュータには、ほとんどのコンピュータユーザーに馴染みのある種類のグラフィカルデスクトップ環境が付属していることがよくありますが、ターミナルに入力されたコマンドを使用して特定のタスクを実行する方が効率的または実用的です。
ファイルシステム階層標準
ほぼすべてのLinuxディストリビューションは、 Filesystem Hierarchy Standard(FHS)として知られるファイルシステムディレクトリ構造のユニバーサルスタンダードに準拠しています。 FHSは一連のディレクトリを定義し、各ディレクトリは独自の特別な機能を果たします。
スラッシュ(/
)は、FHSによって定義されたファイルシステム階層のルートディレクトリを示すために使用されます。
ユーザーがシェルにログインすると、/home/
内に保存されている独自のユーザーディレクトリに移動します。 これは、ユーザーのホームディレクトリと呼ばれます。 FHSは、/home/
を通常のユーザーのホームディレクトリを含むものとして定義しています。
root ユーザーには、FHSによって指定された独自のホームディレクトリ/root/
があります。 /
は「ルートディレクトリ」と呼ばれ、/
内に保存されているroot/
とは異なることに注意してください。
FHSはLinuxマシンのデフォルトのファイルシステムレイアウトであり、その中の各ディレクトリは特定の目的を果たすために含まれているため、機能ごとにファイルを整理するプロセスが簡素化されます。
ナビゲーション
Linuxファイルシステムはディレクトリツリーに基づいています。 これは、他のディレクトリ内にディレクトリ(他のオペレーティングシステムにあるフォルダと機能的に同じ)を作成でき、ファイルは任意のディレクトリに存在できることを意味します。
現在アクティブになっているディレクトリを確認するには、pwd
コマンドを実行します。これは「printworkingdirectory」の略です。
- pwd
pwd
は、現在のディレクトリへのパスを出力します。 出力は次のようになります。
Output/home/sammy
この出力例は、現在のActiveDirectoryがsammy
であり、ルートディレクトリ/
にあるhome/
ディレクトリ内にあることを示しています。 前述のように、sammy/
ディレクトリはhome/
ディレクトリ内に保存されるため、sammy/
はsammyユーザーのホームディレクトリを表します。
現在の作業ディレクトリに存在するファイルとディレクトリのリストを表示するには、ls
コマンドを実行します。
- ls
これにより、現在の作業ディレクトリに保持されているファイルまたはディレクトリの名前のリストが返されます。 ただし、新しいマシンでこのガイドに従っている場合、このコマンドは出力を返さない場合があります。
mkdir
コマンド(「ディレクトリの作成」を表す)を使用して、現在の作業ディレクトリ内に1つ以上の新しいディレクトリを作成できます。 たとえば、testdir1
およびtestdir2
という名前の2つの新しいディレクトリを作成するには、次のコマンドを実行します。
- mkdir testdir1 testdir2
ls
コマンドを実行すると、次のディレクトリが出力に表示されます。
- ls
Outputtestdir1
testdir2
これらの新しいディレクトリの1つに移動するには、cd
コマンド(「ディレクトリの変更」の略)を実行し、ディレクトリの名前を指定します。
- cd testdir1
これにより、新しい現在の作業ディレクトリが指定したディレクトリに変更されます。 これはpwd
で確認できます。
- pwd
Output/home/sammy/testdir1
ただし、testdir1
とtestdir2
はどちらもsammy ユーザーのホームディレクトリに保持されているため、ディレクトリツリーの異なるブランチに存在します。 cd
コマンドは、現在の作業ディレクトリ内のディレクトリを検索するため、testdir1
が存在する間、以前に作成したtestdir2
ディレクトリにcd
を直接移動することはできません。作業ディレクトリ:
- cd testdir2
Outputbash: cd: testdir2: No such file or directory
ただし、移動先のディレクトリの絶対パスを指定すると、現在の作業ディレクトリに関係なく、既存のディレクトリに移動できます。
- cd /home/sammy/testdir2
注: Linuxでは、チルダ(~
)は、ログインしているユーザーのホームディレクトリの省略形です。 これを知っていると、代わりに前のコマンドを次のように書くことができ、同じ結果が得られます。
- cd ~/testdir2
さらに、..
を指定して、パスの1つ上のレベルのディレクトリに移動できます。 元のディレクトリに戻るには:
- cd ..
ナビゲーションツリーのどこにいるかについて混乱したことがある場合は、いつでもpwd
コマンドを実行して現在のディレクトリを見つけることができることを忘れないでください。 このセクション全体のコマンド例に示されているように、多くの最新のシェル(多くのLinuxディストリビューションのデフォルトであるBashを含む)も現在のディレクトリを示します。
ファイル操作
cd
を使用してファイルを操作することはできません。 cd
は「ディレクトリの変更」の略で、ディレクトリをナビゲートすることのみを許可します。 ただし、ファイルの内容を作成、編集、および表示することはできます。
ファイルを作成する1つの方法は、touch
コマンドを使用することです。 file.txt
という名前の新しいファイルを作成するには:
- touch file.txt
これにより、現在の作業ディレクトリにfile.txt
という名前の空のファイルが作成されます。 このファイルの内容は空です。
後でfile.txt
の名前を変更する場合は、mv
コマンドを使用して名前を変更できます。
- mv file.txt newfile.txt
mv
は「移動」の略で、ファイルまたはディレクトリをある場所から別の場所に移動できます。 元のファイルfile.txt
を指定することにより、現在の作業ディレクトリ内の新しい場所にファイルを「移動」して、名前を変更できます。
cp
コマンドを使用して、ファイルを新しい場所にコピーすることもできます。 file.txt
を戻したいが、newfile.txt
を保持したい場合は、次のようにfile.txt
という名前のnewfile.txt
のコピーを作成できます。
- cp newfile.txt file.txt
ご想像のとおり、cp
は「コピー」の略です。 newfile.txt
をfile.txt
という新しいファイルにコピーすることで、元のファイルを別の名前の新しいファイルに複製したことになります。
ただし、ファイルに何も含まれていない場合、ファイルはあまり役に立ちません。 ファイルを編集するには、ファイルエディタが必要です。
ファイルエディタには多くのオプションがあり、すべて専門家が日常的に使用するために作成します。 このようなエディターには、 vim 、emacs
、nano
、およびpico
が含まれます。
nano
は初心者に適したオプションです。比較的ユーザーフレンドリーで、不可解なオプションやコマンドで過負荷になることはありません。
nano
を使用してfile.txt
にテキストを追加するには、次のコマンドを実行します。
- nano 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 + X
、Y
、ENTER
の順に押します。 これにより、新しく保存されたfile.txt
ファイルを含むシェルに戻ります。
file.txt
にテキストが含まれているので、cat
またはless
を使用して表示できます。
cat
コマンドは、指定されたファイルの内容をシステムの出力に出力します。 cat
を実行して、編集したfile.txt
ファイルを引数として渡します。
- cat file.txt
これにより、file.txt
の内容全体が端末に出力されます。 前の例のテキストを使用した場合、このコマンドは次のような出力を返します。
OutputSay 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
ファイルの内容を表示します。
- less file.txt
これにより、file.txt
の内容も印刷されますが、ファイルの先頭から一度に1つのターミナルページが印刷されます。 スペースバーを使用してページを進めるか、矢印キーを使用して一度に1行ずつ上下に移動できます。
q
を押して、less
を終了します。
最後に、file.txt
ファイルを削除するには、ファイルの名前を引数としてrm
に渡します。
- rm file.txt
注:他のオプションがないと、rm
コマンド(「削除」の略)を使用してディレクトリを削除することはできません。 ただし、空のディレクトリを削除できる-d
フラグが含まれています。
- rm -d directory
rmdir
コマンドを使用して、空のディレクトリを削除することもできます。
- rmdir directory
空でないディレクトリを削除したい場合は、rm
を-r
フラグで実行できます。 これにより、指定したディレクトリとその内容(ファイルやサブディレクトリを含む)が削除されます。
- rm -r directory
ただし、コンテンツの削除は永続的なアクションであるため、指定したディレクトリを削除することが確実な場合は、-rオプションを指定してrmを実行する必要があります。
学習の文化
特にまったく新しい場合は、ターミナルウィンドウを介してLinuxシステムを快適にナビゲートするには、時間、献身、そして好奇心が必要です。
特定のタスクを実行する方法について質問がある場合は、いくつかの方法で指示を得ることができます。 のような検索エンジングーグルと DuckDuckGo のような質疑応答サイトと同様に、貴重なリソースですスタック交換また DigitalOceanのコミュニティQ&A 。 質問がある場合、他の多くの人がすでに質問していて、質問に答えている可能性があります。
質問が特定のLinuxコマンドに関係している場合は、マニュアルページに、ほぼすべてのコマンドに関する詳細で洞察に満ちたドキュメントが記載されています。 コマンドのマニュアルページを表示するには、コマンドの名前を引数としてman
コマンドに渡します。
- man command
たとえば、man rm
には、rm
の目的、使用方法、使用可能なオプション、使用例、およびより役立つ情報が表示されます。
結論
このガイドは、Linux環境での作業の概要を示しています。 ただし、Linuxとそのすべてのコンポーネントを完全に理解することは、単一のチュートリアルの範囲をはるかに超えています。 たとえば、このチュートリアルでは、Linuxシステム管理の基本的な概念であるパーミッションについては触れていません。
LinuxBasicsタグページにあるLinuxの紹介コンテンツをすべてチェックすることをお勧めします。