ファイル操作の基本

LinuxBeginner
オンラインで実践に進む

はじめに

Linux でのファイル操作の基本へようこそ!Linux では、ほぼすべてのものが「ファイル」として扱われるため、ファイル操作をマスターすることはシステムを使いこなすための第一歩となります。この実験では、ファイルやディレクトリを管理するための最も一般的なコマンドを学習し、Linux システム内を自在に移動し、整理整頓できるようになることを目指します。

作業環境を理解する

Linux では、各ユーザーに通常「ホームディレクトリ」が割り当てられており、これは ~ という記号で表されます。ただし、この実験環境では、デフォルトの作業ディレクトリである /home/labex/project から開始します。

まず、デスクトップ上のターミナルを開くか、実験環境のターミナルタブに切り替えてください。

ターミナルインターフェースのスクリーンショット

まずは、現在の場所を確認することから始めましょう。

pwd

pwd は "print working directory"(作業ディレクトリを表示する)の略です。ファイルシステム内での現在の位置を表示します。このコマンドは、Linux のファイル構造の中で自分の居場所を把握するために非常に重要です。出力として /home/labex/project が表示されるはずです。

次に、現在のディレクトリとホームディレクトリの関係を確認してみましょう。

echo ~

注意:キーボード配列の違いにより、デスクトップターミナルで ~ 記号が入力できない場合は、仮想マシン(VM)インターフェースの左上にある独立した「Terminal」タブに切り替えてみてください。

このコマンドを実行すると、ホームディレクトリのパス(通常は /home/labex)が表示されます。

現在のディレクトリの中身を確認するには、以下のコマンドを使用します。

ls

これにより、現在の作業ディレクトリ(/home/labex/project)にあるファイルやディレクトリの一覧が表示されます。

ホームディレクトリの中身も確認してみましょう。

ls ~

このコマンドはホームディレクトリの内容を表示します。現在の作業ディレクトリとは内容が異なる場合があります。

現在の作業ディレクトリとホームディレクトリの違いを理解することは、Linux のファイルシステムを効率的に操作する上で非常に重要です。

ファイルシステムの移動

Linux は「階層型ファイルシステム」を採用しています。これは、枝分かれした大きな木のような構造だと考えてください。木の幹にあたる部分は「ルートディレクトリ」と呼ばれ、スラッシュ / 一つで表されます。他のすべてのディレクトリやファイルは、このルートから枝分かれしています。

このツリー構造の中を移動する方法を学びましょう。

  1. 現在の場所を確認します。
pwd

/home/labex/project と表示されるはずです。もし違う場所であれば、cd /home/labex/project と入力して開始地点に戻ってください。

  1. 現在のディレクトリの内容を表示します。
ls

現在の場所にあるすべてのファイルとフォルダが表示されます。/home/labex/project はまだ空なので、何も表示されません。

  1. 一つ上の階層(親ディレクトリ)に移動します。
cd ..

.. は「一つ上のディレクトリ」を意味します。このコマンドの後、再び pwd を実行してください。現在は /home/labex にいるはずです。

  1. プロジェクトディレクトリに戻ります。
cd project

これで /home/labex/project に戻ります。

  1. ホームディレクトリに移動します。
cd ~

~ はホームディレクトリへのショートカットです。pwd を実行して、/home/labex にいることを確認してください。

  1. 「絶対パス」を使ってプロジェクトディレクトリに戻ります。
cd /home/labex/project

ルート(/)から始まり、完全な場所を指定するこの書き方を「絶対パス(absolute path)」と呼びます。

ファイルの作成とディレクトリ内容の一覧表示

移動方法がわかったところで、次はファイルを作成し、ディレクトリの内容を詳しく見る方法を学びましょう。

まず、/home/labex/project ディレクトリにいることを確認してください。

cd /home/labex/project
  1. いくつかファイルを作成してみましょう。
touch file1.txt

touch コマンドは空のファイルを作成するために使用されます。ファイルが既に存在する場合は、内容を変更せずにタイムスタンプ(更新日時)だけを更新します。新しい空ファイルを作る最も簡単な方法です。

echo "Hello, Linux" > file2.txt

このコマンドは 2 つのことを行っています。

  • echo はテキストを表示するコマンドです。
  • > 記号は、echo の出力を file2.txt というファイルに書き込み(リダイレクト)ます。ファイルが存在しない場合は作成され、存在する場合は内容が上書きされます。
echo "Hidden file" > .hiddenfile

これは「隠しファイル」を作成します。Linux では、ドット(.)で始まるファイル名やディレクトリ名は隠しファイルとして扱われます。

  1. 次に、ディレクトリを作成します。
mkdir testdir

mkdir コマンド(make directory の略)は、testdir という名前の新しいディレクトリを作成します。

  1. 基本的な一覧表示:
ls

ディレクトリ内容の表示結果

現在のディレクトリの内容が表示されます。file1.txtfile2.txttestdir が見えるはずです。

  1. 詳細な一覧表示:
ls -l

-l オプション(数字の 1 ではなく、小文字の L)は、「ロングフォーマット」で表示します。ファイルの権限、所有者、サイズ、更新日時などの詳細情報が表示されます。

  1. 隠しファイルを表示する:
ls -a

これにより、先ほど作成した隠しファイル .hiddenfile を含むすべてのファイルが表示されます。

  1. オプションを組み合わせる:
ls -la

詳細表示(-l)と全ファイル表示(-a)を同時に行います。

  1. 特定のディレクトリの内容を表示する:
ls -l testdir

testdir ディレクトリの中身を表示します(現時点では空のはずです)。

ファイルとディレクトリのコピー

操作対象のファイルが用意できたので、次はコピーの方法を学びましょう。

  1. ファイルをコピーする:
cp file1.txt file1_copy.txt

現在のディレクトリに、file1.txt をコピーした file1_copy.txt を作成します。

コピーされたか確認しましょう。

ls
  1. ファイルを別のディレクトリにコピーする:
cp file2.txt testdir/

file2.txttestdir ディレクトリの中にコピーします。

  1. ディレクトリをコピーする:
cp -r testdir testdir_copy

-r オプションは "recursive"(再帰的)の略です。ディレクトリをコピーする際は、その中身もすべてコピーするためにこのオプションが必須です。

  1. コピー結果を確認する:
ls
ls testdir
ls testdir_copy

コピーされたファイルを表示するターミナル

ファイルとディレクトリの移動と名前変更

Linux では、mv コマンド一つで「移動」と「名前変更」の両方を行います。

  1. ファイルの名前を変更する:
mv file1.txt newname.txt

file1.txt の名前を newname.txt に変更します。

  1. ファイルをディレクトリに移動する:
mv newname.txt testdir/

newname.txttestdir ディレクトリの中に移動します。

  1. ディレクトリの名前を変更する:
mv testdir_copy new_testdir

testdir_copy の名前を new_testdir に変更します。

  1. 移動と名前変更を同時に行う:
mv testdir/newname.txt ./original_file1.txt

testdir の中にある newname.txt を現在のディレクトリ(./)に移動させつつ、名前を original_file1.txt に変更します。

  1. 変更を確認する:
ls
ls testdir

コマンド実行結果の表示

ファイルとディレクトリの削除

ファイルやディレクトリの削除は強力な操作です。グラフィカルな画面(GUI)とは異なり、コマンドラインには通常「ごみ箱」がありません。rm で削除したものは、通常は元に戻せません。コマンドを実行する前に、必ず内容を再確認してください!

作成したファイルやディレクトリを整理しましょう。/home/labex/project ディレクトリにいることを確認してください。

pwd
ls -a

original_file1.txt.hiddenfilefile2.txt などのファイルや、testdirnew_testdir などのディレクトリが表示されるはずです。

-rw-rw-r-- 1 labex labex   12 May  3 08:44 .hiddenfile
-rw-rw-r-- 1 labex labex    0 May  3 08:45 file1_copy.txt
-rw-rw-r-- 1 labex labex   13 May  3 08:44 file2.txt
drwxrwxr-x 2 labex labex   23 May  3 08:45 new_testdir
-rw-rw-r-- 1 labex labex    0 May  3 08:44 original_file1.txt
drwxrwxr-x 2 labex labex   23 May  3 08:45 testdir
  1. 単一のファイルを削除する:

    rm original_file1.txt
    

    rm コマンド(remove の略)はファイルを削除します。確認してみましょう。

    ls
    

    original_file1.txt が消えているはずです。

  2. 対話的に削除する(より安全な方法):

    file2.txt を削除してみますが、今回は -i(interactive)フラグを使います。

    rm -i file2.txt
    

    -i オプションを使うと、削除する前に確認を求められます。削除を確定するには y(yes)を入力して Enter を押してください。n(no)やそれ以外の文字を入力すると、削除はキャンセルされます。

    ls
    

    確定した場合、file2.txt は削除されます。

  3. 空のディレクトリを削除する:

    testdir_copy を名前変更して作った new_testdir を覚えていますか?中身が空かどうか確認しましょう。

    ls new_testdir
    

    もし空であれば、rmdir を使って削除できます。

    rmdir new_testdir
    

    rmdir(remove directory)は、空のディレクトリに対してのみ機能します。

    ls
    

    もし new_testdir が削除できない場合は、中身が空ではない可能性があります。

  4. 空でないディレクトリの削除を試みる:

    次に、ステップ 4 でコピーした file2.txt が入っている testdir に対して rmdir を試してみましょう。

    ls testdir
    rmdir testdir
    

    おそらく rmdir: failed to remove 'testdir': Directory not empty(ディレクトリが空ではありません)というエラーメッセージが表示されます。これは、rmdir がファイルや他のディレクトリを含むディレクトリを削除できないため、想定通りの動作です。

  5. ディレクトリとその中身をまとめて削除する(再帰的削除):

    空ではないディレクトリを削除するには、rm-r(recursive)オプションを付けて使用します。

    rm -r testdir
    

    このコマンドは、testdir ディレクトリとその中にあるすべてのものを削除します。このコマンドは慎重に使用してください。

    ls
    

    これで testdir は削除されました。

  6. 強制削除(細心の注意を払って使用):

    書き込み禁止のファイルであっても、確認なしで削除したい場合があります(今回はありませんが)。その場合は -f(force)オプションを使用します。

    隠しファイルを削除してみましょう。

    rm .hiddenfile
    ls -a
    

    ここで、-r-f を組み合わせた rm -rf コマンドについて説明します。これは非常に強力で、かつ危険なコマンドです。ディレクトリを再帰的に(-r)、かつ確認なしで強制的に(-f)削除します。

    !!!危険地帯!!! rm -rf を実行する前に、何を削除しようとしているのか絶対に確認してください。わずかなタイポ(打ち間違い)で、重要なシステムファイルや個人のデータをすべて消し去ってしまう可能性があります。元に戻すことはできません。例えば、rm -rf / は(権限があれば)システム全体を削除しようとします。常にパスを二重に確認してください。

    デモンストレーションとして、一時的なディレクトリとファイルを作成して削除してみましょう(安全な方法です)。

    mkdir temp_dir
    touch temp_dir/temp_file.txt
    ls -R temp_dir
    

    補足:ls では大文字の -R を使いましたが、cprm では小文字の -r を使いました。これは単なる大文字小文字の違いではなく、全く別のオプションです!ls の場合、-R は「再帰的な一覧表示(サブディレクトリも表示)」を意味し、-r は「逆順に並べ替え」を意味します。cprm では、再帰オプションは小文字の -r です。各コマンドの具体的なオプションについては、常にマニュアル(man コマンド名)で確認するようにしましょう。

    では、強制的に削除します。

    rm -rf temp_dir
    

    削除されたか確認します。

    ls
    

    temp_dir は消えているはずです。

覚えておいてください:Linux のコマンドラインでは、削除されたファイルは基本的に永遠に失われます。rm は慎重に使いましょう!

まとめ

お疲れ様でした!Linux における必須のファイル操作を習得しました。

  • cdpwd によるファイルシステムの移動
  • touchmkdir によるファイルとディレクトリの作成
  • ls とそのオプションによる内容の一覧表示
  • cp によるファイルとディレクトリのコピー
  • mv による移動と名前変更
  • rmrmdir によるファイルとディレクトリの削除

これらのコマンドは、Linux でのファイル管理の基礎となります。練習を重ねることで、コマンドラインから自在にファイルやディレクトリを管理できるようになるでしょう。

特に rm は、ファイルを永久に削除し復元できないため、常に注意して使用することを忘れないでください。

Linux の学習を続けるにあたって、各コマンドの詳細なオプションを知りたいときは、マニュアルページ(例:man ls)を活用してみてください。それでは、さらなる探索を楽しんでください!