基本的なファイル操作

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

はじめに

Linuxの基本的なファイル操作の実験へようこそ!Linuxでは、ほぼすべてのものが「ファイル」として扱われるため、ファイル操作はシステムを利用する上で最も重要な基礎となります。この実験では、ファイルやディレクトリを管理するための最も一般的なコマンドを学び、Linuxシステム内を効率的に移動・整理できるようになることを目指します。

作業環境の理解

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

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

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

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

pwd

pwd は "print working directory" の略です。ファイルシステム内での現在の場所を表示します。このコマンドは、Linuxのファイル構造の中で自分がどこにいるかを把握するために非常に重要です。出力として /home/labex/project が表示されるはずです。

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

echo ~

注意: キーボードレイアウトの違いにより、デスクトップターミナルで ~ 記号が入力できない場合は、VMインターフェース左上の独立したターミナルタブに切り替えてみてください。

このコマンドは、ホームディレクトリへのパス(通常は /home/labex)を表示します。

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

ls

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

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

ls ~

このコマンドは、現在の作業ディレクトリとは異なる可能性がある、ホームディレクトリの内容を一覧表示します。

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

ファイルシステムのナビゲーション

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

この木構造の中を移動する方法を見ていきましょう。

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

/home/labex/project と表示されるはずです。もし異なる場合は、cd /home/labex/project を実行して開始地点に戻ってください。

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

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

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

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

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

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

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

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

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

これは「絶対パス」と呼ばれます。ルート (/) から始まり、完全な場所を指定しているためです。

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

ナビゲーションの方法がわかったところで、次はファイルを作成し、ディレクトリの内容を表示する方法を学びましょう。

まず、/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.txtnewname.txt に名前変更します。

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

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

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

testdir_copynew_testdir に名前変更します。

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

testdir 内の newname.txt を取り出し、現在のディレクトリに original_file1.txt という名前で移動・変更します。

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

コマンド実行結果の表示

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

ファイルやディレクトリの削除は強力な操作です。グラフィカルインターフェースとは異なり、コマンドラインには「ゴミ箱」がないことが多く、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 を使用します。

    rm -i file2.txt
    

    -i オプションは、各ファイルを削除する前に確認を求めます。y(yes)を入力してEnterキーを押すと削除されます。n や他のキーを入力すると削除されません。

    ls
    

    確認すれば file2.txt は削除されています。

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

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

    ls new_testdir
    

    空であれば(何も表示されなければ)、rmdir を使用して削除できます。

    rmdir new_testdir
    

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

    ls
    

    new_testdir は削除されているはずです。

  4. 空ではないディレクトリを削除しようとする:

    次に、まだ file2.txt が入っている(ステップ4でコピーした)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)を活用してください。探索を楽しんでください!