基本的なLinuxナビゲーションとファイル管理

前書き

Linuxシステムの操作経験があまりない場合は、コマンドラインからオペレーティングシステムを制御する可能性に圧倒される可能性があります。 このガイドでは、基本を理解できるように努めます。

このガイドでは、Linuxシステムを効果的に使用するために知っておく必要があるすべてを網羅しているわけではありません。 ただし、将来の調査のための適切な出発点を提供する必要があります。 このガイドでは、他のガイドに進む前に知っておく必要がある最低限の情報を提供します。

前提条件と目標

このガイドに従うには、Linuxサーバーにアクセスする必要があります。 サーバーへの初めての接続に関する情報が必要な場合は、our guide on connecting to a Linux server using SSHをフォローできます。

また、ターミナルがどのように機能するか、Linuxコマンドがどのように見えるかについての基本的な理解が必要になります。 This guide covers terminal basicsなので、端末を初めて使用する場合はチェックしてください。

このガイドのすべての資料は、通常の非ルート(非管理)ユーザーアカウントで実現できます。 このタイプのユーザーアカウントを構成する方法については、ディストリビューションの初期サーバーセットアップガイド(Ubuntu 14.04CentOS 7)に従ってください。

開始する準備ができたら、SSHを使用してLinuxサーバーに接続し、以下に進みます。

ナビゲーションと探査

あなたが習得する必要がある最も基本的なスキルは、ファイルシステムを動き回り、あなたの周りに何があるかを知ることです。 このセクションでは、これを可能にするツールについて説明します。

「pwd」コマンドで現在地を見つける

サーバーにログインすると、通常、ユーザーアカウントのhome directoryにドロップされます。 ホームディレクトリは、ユーザーがファイルを保存してディレクトリを作成するために取っておくディレクトリです。 これは、完全な支配権を持つファイルシステム内の場所です。

ホームディレクトリがファイルシステムの他の部分との関係でどこにあるかを見つけるには、pwdコマンドを使用できます。 このコマンドは、現在いるディレクトリを表示します。

pwd

次のような情報を取得する必要があります。

/home/demo

ホームディレクトリはユーザーアカウントにちなんで名付けられているため、上記の例は、demoというアカウントでサーバーにログインした場合の値です。 このディレクトリは、/homeというディレクトリ内にあります。このディレクトリ自体は、「root」と呼ばれますが、単一のスラッシュ「/」で表される最上位ディレクトリ内にあります。

「ls」でディレクトリの内容を見る

現在のディレクトリを表示する方法がわかったので、ディレクトリの内容を確認する方法を示します。

現在、上で見たホームディレクトリにはあまり見るものがないので、もっと人口の多い別のディレクトリに移動して探索します。 端末に次のように入力して、このディレクトリに移動します(ディレクトリの移動の詳細については、次のセクションで説明します)。 その後、pwdを使用して、正常に移動したことを確認します。

cd /usr/share
pwd
/usr/share

新しいディレクトリに移動したので、中身を見てみましょう。 これを行うには、lsコマンドを使用できます。

ls
adduser            groff                          pam-configs
applications       grub                           perl
apport             grub-gfxpayload-lists          perl5
apps               hal                            pixmaps
apt                i18n                           pkgconfig
aptitude           icons                          polkit-1
apt-xapian-index   info                           popularity-contest
. . .

ご覧のとおり、このディレクトリにはmanyのアイテムがあります。 コマンドにオプションのフラグを追加して、デフォルトの動作を変更できます。 たとえば、すべてのコンテンツを拡張形式で一覧表示するには、-lフラグを使用できます(「長い」出力の場合)。

ls -l
total 440
drwxr-xr-x   2 root root  4096 Apr 17  2014 adduser
drwxr-xr-x   2 root root  4096 Sep 24 19:11 applications
drwxr-xr-x   6 root root  4096 Oct  9 18:16 apport
drwxr-xr-x   3 root root  4096 Apr 17  2014 apps
drwxr-xr-x   2 root root  4096 Oct  9 18:15 apt
drwxr-xr-x   2 root root  4096 Apr 17  2014 aptitude
drwxr-xr-x   4 root root  4096 Apr 17  2014 apt-xapian-index
drwxr-xr-x   2 root root  4096 Apr 17  2014 awk
. . .

このビューは多くの情報を提供しますが、そのほとんどはかなり珍しいように見えます。 最初のブロックは、ファイルの種類(最初の列が「d」の場合、アイテムはディレクトリ、「-」の場合、通常のファイル)と権限を示します。 空白で区切られた後続の各列には、ハードリンクの数、所有者、グループ所有者、アイテムサイズ、最終変更時刻、およびアイテムの名前が示されます。 これらのいくつかについては別の機会に説明しますが、今のところ、ls-lフラグを使用してこの情報を表示できることを知っておいてください。

hiddenファイルとディレクトリを含むすべてのファイルのリストを取得するには、-aフラグを追加します。 /usr/shareディレクトリには実際の隠しファイルがないので、ホームディレクトリに戻ってそのコマンドを試してみましょう。 引数なしでcdと入力すると、ホームディレクトリに戻ることができます。

cd
ls -a
.  ..  .bash_logout  .bashrc  .profile

ご覧のとおり、このデモには、特別なインジケーターである...とともに3つの隠しファイルがあります。 ここにあるように、多くの場合、構成ファイルは隠しファイルとして保存されます。

ドットエントリとダブルドットエントリの場合、これらは関連するディレクトリを参照する組み込みの方法ほど正確なディレクトリではありません。 単一のドットは現在のディレクトリを示し、二重のドットはこのディレクトリの親ディレクトリを示します。 これは次のセクションで役立ちます。

「cd」を使用してファイルシステム内を移動する

前のセクションでlsのいくつかのプロパティを示すために、すでに2つのディレクトリ移動を行いました。 ここでコマンドをよく見てみましょう。

次のように入力して、/usr/shareディレクトリに戻ることから始めます。

cd /usr/share

これは、absolute pathを指定してディレクトリを変更する例です。 Linuxでは、すべてのファイルとディレクトリは最上位のディレクトリの下にあります。これは「ルート」ディレクトリと呼ばれますが、先頭のスラッシュ「/」で参照されます。 絶対パスは、この最上位ディレクトリに対するディレクトリの場所を示します。 これにより、ファイルシステム内の任意の場所から明確にディレクトリを参照できます。 すべての絶対パスmustはスラッシュで始まります。

別の方法は、relative pathsを使用することです。 相対パスは、currentディレクトリに関連するディレクトリを参照します。 階層内の現在のディレクトリに近いディレクトリの場合、これは通常簡単で短くなります。 現在のディレクトリ内の任意のディレクトリは、スラッシュなしで名前で参照できます。 次のように入力すると、現在の場所から/usr/share内のlocaleディレクトリに移動できます。

cd locale

同様に、現在のディレクトリのパスの後に来るパスの部分を提供することにより、相対パスで複数のディレクトリレベルを移動できます。 ここから、次のように入力して、enディレクトリ内のLC_MESSAGESディレクトリにアクセスできます。

cd en/LC_MESSAGES

戻るには、現在のディレクトリの親に移動するために、前に説明した特別な二重ドットインジケーターを使用します。 たとえば、現在、/usr/share/locale/en/LC_MESSAGESディレクトリにいます。 1レベル上に移動するには、次のように入力します。

cd ..

これにより、/usr/share/locale/enディレクトリに移動します。

以前に見た、常にホームディレクトリに戻るショートカットは、ディレクトリを指定せずにcdを使用することです。

cd
pwd
/home/demo

これらの3つのコマンドの使用方法の詳細については、our guide on exploring the Linux filesystemを確認してください。

ファイルを表示する

最後のセクションでは、ファイルシステムをナビゲートする方法について少し学びました。 さまざまなディレクトリでlsコマンドを使用すると、おそらくいくつかのファイルが表示されます。 このセクションでは、ファイルの表示に使用できるさまざまな方法について説明します。 一部のオペレーティングシステムとは対照的に、Linuxおよびその他のUnixライクなオペレーティングシステムは、システムの大部分をプレーンテキストファイルに依存しています。

ファイルを表示する主な方法は、lessコマンドを使用することです。 これは、ファイルのページをスクロールできるため、「ページャー」と呼ばれるものです。 前のコマンドがすぐに実行されてコマンドラインに戻りましたが、lessは実行を継続し、終了するまで画面を占有するアプリケーションです。

/etc/servicesファイルを開きます。これは、システムが認識しているサービス情報を含む構成ファイルです。

less /etc/services

ファイルはlessで開かれ、ターミナルウィンドウの領域に収まるドキュメントの部分を確認できます。

# Network services, Internet style
#
# Note that it is presently the policy of IANA to assign a single well-known
# port number for both TCP and UDP; hence, officially ports have two entries
# even if the protocol doesn't support UDP operations.
#
# Updated from http://www.iana.org/assignments/port-numbers and other
# sources like http://www.freebsd.org/cgi/cvsweb.cgi/src/etc/services .
# New ports will be added on request if they have been officially assigned
# by IANA and used in the real-world or are needed by a debian package.
# If you need a huge list of used numbers please install the nmap package.

tcpmux          1/tcp                           # TCP port service multiplexer
echo            7/tcp
. . .

スクロールするには、キーボードの上下の矢印キーを使用できます。 1つの画面全体(情報に値する)をページダウンするには、スペースバー、キーボードの[Page Down]ボタン、またはCTRL-fショートカットのいずれかを使用できます。

上にスクロールするには、「PageUp」ボタンまたはCTRL-bキーボードショートカットのいずれかを使用できます。

文書内のテキストを検索するには、スラッシュ「/」の後に検索語を入力します。 たとえば、「メール」を検索するには、次のように入力します。

/mail

これにより、ドキュメントが前方に検索され、最初の結果で停止します。 別の結果を得るには、小文字のnキーを入力します。

n

前の結果に戻るには、代わりに大文字のNを使用します。

N

lessプログラムを終了したい場合は、qと入力して終了できます。

q

このセクションではlessツールに焦点を当てましたが、特定の状況で役立つファイルを表示する方法は他にもたくさんあります。 catコマンドはファイルの内容を表示し、すぐにプロンプ​​トに戻ります。 headコマンドは、デフォルトで、ファイルの最初の10行を表示します。 同様に、tailコマンドは、デフォルトで最後の10行を表示します。 これらのコマンドは、他のプログラムへの「パイピング」に役立つ方法でファイルの内容を表示します。 この概念については、今後のガイドで説明します。

これらのコマンドが/etc/servicesファイルをどのように異なる方法で表示するかを自由に確認してください。

ファイルとディレクトリの操作

前のセクションで、ファイルを表示する方法を学びました。 このセクションでは、ファイルとディレクトリを作成および操作する方法を示します。

「タッチ」でファイルを作成する

多くのコマンドとプログラムがファイルを作成できます。 ファイルを作成する最も基本的な方法は、touchコマンドを使用することです。 これにより、指定した名前と場所を使用して空のファイルが作成されます。

まず、ホームディレクトリにいることを確認する必要があります。これは、これがファイルを保存する権限を持っている場所だからです。 次に、次のように入力して、file1というファイルを作成できます。

cd
touch file1

これで、ディレクトリ内のファイルを表示すると、新しく作成されたファイルを確認できます。

ls
file1

既存のファイルでこのコマンドを使用する場合、コマンドはファイルが最後にアクセスおよび変更された時間にファイルシステムが保存するデータを更新するだけです。 これは現時点ではあまり役に立ちません。

複数のファイルを同時に作成することもできます。 絶対パスも使用できます。 たとえば、ユーザーアカウントの名前がdemoの場合、次のように入力できます。

touch /home/demo/file2 /home/demo/file3
ls
file1  file2  file3

「mkdir」でディレクトリを作成します

touchコマンドと同様に、mkdirコマンドを使用すると空のディレクトリを作成できます。

たとえば、ホームディレクトリ内にtestというディレクトリを作成するには、次のように入力します。

cd
mkdir test

次のように入力することで、ディレクトリwithinexampleというtestディレクトリにすることができます。

mkdir test/example

上記のコマンドが機能するには、testディレクトリがすでに存在している必要があります。 特定のディレクトリパスを構築するために必要なディレクトリを作成する必要があることをmkdirに通知するには、-pオプションを使用できます。 これにより、1つの手順でネストされたディレクトリを作成できます。 次のように入力すると、some/other/directoriesのようなディレクトリ構造を作成できます。

mkdir -p some/other/directories

このコマンドは、最初にsomeディレクトリを作成し、次にその中にotherディレクトリを作成します。 最後に、これら2つのディレクトリ内にdirectoriesディレクトリを作成します。

「mv」を使用したファイルとディレクトリの移動と名前変更

mvコマンドを使用して、ファイルを新しい場所に移動できます。 たとえば、次のように入力して、file1testディレクトリに移動できます。

mv file1 test

このコマンドでは、移動するすべてのアイテムと、最後に移動する場所を指定します。 特別なドット参照を使用して現在のディレクトリを参照することにより、そのファイルbackをホームディレクトリに移動できます。 ホームディレクトリにいることを確認してから、コマンドを実行する必要があります。

cd
mv test/file1 .

これは最初は直感的ではないように思われるかもしれませんが、mvコマンドはrenameファイルおよびディレクトリにも使用されます。 本質的に、移動と名前の変更は、既存のアイテムの場所と名前を調整するだけです。

したがって、testディレクトリの名前をtestingに変更するには、次のように入力します。

mv test testing

Note:Linuxシステムが特定の破壊的なアクションを妨げることはないことを理解することが重要です。 ファイルの名前を変更し、alreadyが存在する名前を選択した場合、前のファイルは、移動するファイルによってoverwrittenになります。 誤って上書きしてしまった場合、以前のファイルを復元する方法はありません。

「cp」を使用したファイルとディレクトリのコピー

mvコマンドを使用すると、ファイルまたはディレクトリを移動または名前変更できましたが、複製することはできませんでした。 cpコマンドは、既存のアイテムの新しいコピーを作成できます。

たとえば、file3file4という新しいファイルにコピーできます。

cp file3 file4

mv操作とは異なり、その後file3は存在しなくなりますが、file3file4の両方があります。

Notemvコマンドと同様に、操作のターゲットとして使用しているファイル名に注意しないと、ファイルをoverwriteすることができます。 たとえば、上記の例でfile4がすでに存在している場合、そのコンテンツは完全にfile3のコンテンツに置き換えられます。

ディレクトリをコピーするには、コマンドに-rオプションを含める必要があります。 これは、ディレクトリとディレクトリのすべてのコンテンツをコピーするため、「再帰的」の略です。 このオプションは、ディレクトリが空かどうかに関係なく、ディレクトリで必要です。

たとえば、someディレクトリ構造をagainという新しい構造にコピーするには、次のように入力します。

cp -r some again

既存の宛先が上書きにつながるファイルとは異なり、ターゲットがexisting directoryの場合、ファイルまたはディレクトリはターゲットにintoコピーされます。

cp file1 again

これにより、file1の新しいコピーが作成され、againディレクトリ内に配置されます。

「rm」および「rmdir」を使用したファイルとディレクトリの削除

ファイルを削除するには、rmコマンドを使用できます。

Notermのような破壊的なコマンドを使用するときは、細心の注意を払ってください。 これらのアクションに「元に戻す」コマンドはないため、重要なファイルを誤って永久に破壊する可能性があります。

通常のファイルを削除するには、それをrmコマンドに渡すだけです。

cd
rm file4

同様に、emptyディレクトリを削除するには、rmdirコマンドを使用できます。 これは、問題のディレクトリに何もない場合にのみ成功します。 たとえば、testingディレクトリ内のexampleディレクトリを削除するには、次のように入力します。

rmdir testing/example

non-emptyディレクトリを削除する場合は、rmコマンドを再度使用する必要があります。 今回は、-rオプションを渡す必要があります。これにより、ディレクトリのすべてのコンテンツとディレクトリ自体が再帰的に削除されます。

たとえば、againディレクトリとその中のすべてを削除するには、次のように入力します。

rm -r again

繰り返しになりますが、これらは永続的なアクションであることを繰り返す価値があります。 入力したコマンドが実行するものであることを完全に確認してください。

ファイルを編集する

現在、ファイルをオブジェクトとして操作する方法はわかっていますが、実際にファイルを編集してコンテンツを追加する方法は学習していません。

nanoコマンドは、最も単純なコマンドラインLinuxテキストエディターの1つであり、初心者にとって最適な出発点です。 これは、使用中は端末全体を占有するという点で、上記のlessプログラムと多少似ています。

nanoエディターは、既存のファイルを開いたり、ファイルを作成したりできます。 新しいファイルを作成する場合は、nanoエディターを呼び出すとき、または後でコンテンツを保存するときに、ファイルに名前を付けることができます。

次のように入力して、file1ファイルを開いて編集できます。

cd
nano file1

nanoアプリケーションは、ファイル(現在は空白)を開きます。 インターフェースは次のようになります。

  GNU nano 2.2.6                 File: file1








                                  [ Read 0 lines ]
^G Get Help   ^O WriteOut   ^R Read File  ^Y Prev Page  ^K Cut Text   ^C Cur Pos
^X Exit       ^J Justify    ^W Where Is   ^V Next Page  ^U UnCut Text ^T To Spell

上部に、アプリケーションの名前と編集中のファイルの名前があります。 中央には、現在空白のファイルのコンテンツが表示されます。 下部に沿って、エディターの基本的なコントロールを示すいくつかのキーの組み合わせがあります。 これらのそれぞれについて、^文字はCTRLキーを意味します。

エディター内からヘルプを表示するには、次を入力します。

CTRL-G

ヘルプの参照が終了したら、CTRL-Xと入力してドキュメントに戻ります。

必要なテキストを入力または変更します。 この例では、次の2つの文を入力します。

Hello there.

Here is some text.

作業を保存するには、次のように入力します。

CTRL-O

これは文字「o」であり、ゼロではありません。 保存するファイルの名前を確認するように求められます:

File Name to Write: file1
^G Get Help          M-D DOS Format       M-A Append           M-B Backup File
^C Cancel            M-M Mac Format       M-P Prepend

ご覧のとおり、下部のオプションも変更されています。 これらはコンテキストに依存します。つまり、何をしようとしているかによって変化します。 file1がまだ書き込みたいファイルである場合は、「ENTER」を押します。

さらに変更を加え、ファイルを保存してプログラムを終了する場合、同様のプロンプトが表示されます。 新しい行を追加してから、次のように入力してプログラムを終了します。

CTRL-X

変更を行った後に保存していない場合は、行った変更を保存するかどうかを尋ねられます。

Save modified buffer (ANSWERING "No" WILL DESTROY CHANGES) ?
 Y Yes
 N No           ^C Cancel

「Y」を入力して変更を保存し、「N」を入力して変更を破棄して終了するか、「CTRL-C」を入力して終了操作をキャンセルします。 保存することを選択した場合、以前に受け取った同じファイルプロンプトが表示され、同じファイルへの変更を保存することを確認します。 Enterキーを押してファイルを保存し、エディターを終了します。

catプログラムを使用して内容を表示するか、lessプログラムを使用してファイルを開いて表示することにより、作成したファイルの内容を確認できます。 lessで表示した後、ターミナルに戻るにはqを押す必要があることに注意してください。

less file1
Hello there.

Here is some text.

Another line.

特定のガイドで参照されている可能性のある別のエディターは、vimまたはviです。 これは非常に強力な高度なエディターですが、非常に急な学習曲線が付属しています。 vimまたはviを使用するように指示された場合は、代わりにnanoを使用してください。 vimの使用方法を学びたい場合は、guide to getting started with vimをお読みください。

結論

ここまでで、Linuxサーバーを回避する方法と、使用可能なファイルとディレクトリを確認する方法についての基本的な理解が得られました。 また、ファイルを表示、コピー、移動、または削除できる基本的なファイル操作コマンドについても知っておく必要があります。 最後に、nanoテキストエディタを使用した基本的な編集に慣れている必要があります。

これらのいくつかのスキルがあれば、他のガイドを続けて、サーバーを最大限に活用する方法を学ぶことができます。 次のガイドでは、how to view and understand Linux permissionsについて説明します。