基本的なファイル操作

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

はじめに

Linux の基本的なファイル操作実験へようこそ。Linux では、ほぼすべてのものがファイルとして扱われるため、ファイル操作はシステムを使ううえで基本となります。この実験では、ファイルやディレクトリを管理するためによく使うコマンドを順に学びます。Linux システム内を移動し、ファイルを整理するスキルを身につけましょう。

作業環境を理解する

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

まず、Desktop でターミナルを開く、実験環境のターミナルタブに切り替えてください。

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

最初に、現在の場所を確認します。

pwd

pwd は「print working directory」の略です。ファイルシステム内での現在の場所を表示します。Linux のファイル構造内で自分の位置を確認するために重要なコマンドです。出力には /home/labex/project と表示されるはずです。

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

echo ~

注:国や地域によってキーボードレイアウトが異なるため、Desktop のターミナルで ~ を入力できない場合があります。その場合は、VM インターフェースの左上にある独立した Terminal タブに切り替えてみてください。

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

カレントディレクトリの内容を確認するには、次のコマンドを使います。

ls

このコマンドは、現在の作業ディレクトリ(/home/labex/project)にあるファイルとディレクトリを一覧表示します。

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

ls ~

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

カレントディレクトリとホームディレクトリの違いを理解することは、Linux ファイルシステム内を効率的に移動するうえで重要です。

ファイルシステム内を移動する

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

この木構造の中を移動する方法を確認しましょう。

  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 です。このオプションを指定すると、「long」形式で一覧表示されます。ファイルの権限、所有者、サイズ、更新日時などの追加情報を確認できます。

  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. 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 などのディレクトリが表示されるはずです。

.
..
.hiddenfile
file1_copy.txt
file2.txt
new_testdir
original_file1.txt
testdir
  1. ファイルを 1 つ削除します。

    rm original_file1.txt
    

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

    ls
    

    original_file1.txt が表示されなくなっているはずです。

  2. 対話的に削除します(より安全な方法)。

    -i 対話モードオプションを使って、file2.txt を削除してみましょう。

    rm -i file2.txt
    

    -i オプションを指定すると、各ファイルを削除する前に確認を求められます。削除を確定するには、削除確認のプロンプトで y(yes)を入力して Enter キーを押します。n またはその他の文字を入力した場合、ファイルは削除されません。

    ls
    

    削除を確定していれば、file2.txt は表示されなくなります。

  3. 空でないディレクトリに対する操作を確認します。

    testdir_copy の名前を変更して作成した new_testdir を思い出してください。中にはコピーした file2.txt が残っているため、rmdir は失敗します。まず内容を確認します。

    ls new_testdir
    

    file2.txt が表示されるはずです。次に 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. ディレクトリとその内容を再帰的に削除します。

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

    rm -r testdir
    

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

    ls
    

    testdir が表示されなくなっているはずです。

  6. 強制削除を行います(最大限の注意が必要です)。

    場合によっては、書き込み保護されたファイルであっても、確認を求めずに削除したいことがあります(ここでは該当するファイルはありません)。-f(force)オプションを使うと、確認なしで削除できます。

    隠しファイルを削除します。

    rm .hiddenfile
    ls -a
    

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

    !!! DANGER ZONE !!!

    rm -rf を実行する前に、何を削除するのかを必ず確認してください。わずかな入力ミスで、重要なシステムファイルや個人データを削除する可能性があります。元に戻すことはできません。たとえば、権限があれば rm -rf / によってシステム全体を削除しようとする可能性があります。パスは必ず再確認してください。

    安全に動作を確認するため、一時ディレクトリとファイルを作成します。

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

    注:cprm で使った小文字の -r ではなく、ls では大文字の -R を使っていることに注意してください。これは単なる大文字・小文字の違いではなく、まったく異なるオプションです。ls では -R が「再帰的な一覧表示」(サブディレクトリも一覧表示)を意味し、-r は「逆順ソート」を意味します。一方、cprm で再帰的な操作を指定するオプションは小文字の -r です。各コマンド固有のオプションを理解するため、必ずマニュアル(man command)を確認してください。

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

    rm -rf temp_dir
    

    削除を確認します。

    ls
    

    temp_dir が表示されなくなっているはずです。

Linux のコマンドラインでは、削除したファイルは基本的に永久に失われます。rm は慎重に使用してください。

まとめ

お疲れさまでした。Linux の基本的なファイル操作を学びました。

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

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

特に rm には注意してください。ファイルやディレクトリを完全に削除し、復元できなくなるためです。

Linux の学習を続ける中で、マニュアルページ(例:man ls)も参照し、それぞれのコマンドとオプションについてさらに学びましょう。Linux の操作を楽しんでください。