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

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

はじめに

「Linux ファイルとディレクトリ操作入門」実験へようこそ!Linux が初めての方でもご安心ください。各ステップを丁寧に進め、単に「何をすべきか」だけでなく、「なぜそれを行うのか」についても解説していきます。この実験は、Linux で作業する上での基礎となるファイルシステムの操作を、実際に手を動かしながら体験できるように設計されています。

本題に入る前に、いくつかの基本概念を確認しておきましょう。

  • Linux ファイルシステム:コンピュータ上のすべてのファイルを整理するための、ツリー(木)のような構造だと考えてください。ドライブレター(C: や D: など)を使用する Windows とは異なり、Linux にはすべての分岐の起点となる単一のルートディレクトリ(/)が存在します。
  • ディレクトリ:他のオペレーティングシステムで「フォルダ」と呼ばれているものの Linux での呼称です。ファイルや他のディレクトリを格納する入れ物です。
  • ファイル:Linux では、ほとんどすべてのものがファイルとして扱われます!通常のドキュメントやディレクトリはもちろん、ハードウェアデバイスさえもファイルとして管理されます。この統一されたアプローチにより、多くの操作が簡素化されています。
  • パス:ファイルやディレクトリの「住所」のようなものです。ルートディレクトリから始まる「絶対パス」と、現在の場所から始まる「相対パス」について学びます。
  • ターミナル:Linux と対話するための司令塔です。最初は難しそうに見えるかもしれませんが、システムを管理するための非常に強力なツールであることがすぐにわかるはずです。
  • ファイル検索:Linux には、システム全体からファイルを探し出すための強力なツールが備わっています。findwhich といったコマンドを使って、ファイルや実行ファイルを素早く見つける方法を学びます。

準備はいいですか?Linux ファイルシステムの世界への旅を始めましょう!

Linux のディレクトリ構造を探索する

このステップでは、Linux ファイルシステムを探索します。これにより、さまざまな種類のファイルがどこに保存され、システムがどのように整理されているかを理解できます。

  1. ターミナルを開きます。$ 記号で終わるプロンプトが表示されているはずです。ここにコマンドを入力します。現在はプロジェクトディレクトリである /home/labex/project にいます。これを確認してみましょう。

    pwd
    

    pwd は "print working directory"(作業ディレクトリを表示)の略です。ファイルシステム内の現在地を教えてくれます。

  2. 次に、ディレクトリ構造全体を表示してみましょう。

    tree /
    

    わあ!膨大な情報が表示されましたね。tree コマンドは、ディレクトリ構造をツリー形式で表示します。引数の / は、ルートディレクトリから開始することを指定しています。表示されたすべてを理解しようとしなくても大丈夫です。まずは重要な部分に焦点を当てていきます。

  3. 主要なディレクトリをいくつか覗いてみましょう。

    ls /home
    ls /etc
    ls /bin
    
    • /home は、ユーザーのディレクトリが保存される場所です。通常、各ユーザーはここに専用のディレクトリを持っています。
    • /etc には、システムの構成(設定)ファイルが含まれています。
    • /bin には、すべてのユーザーが使用できる基本的なコマンドのバイナリ(プログラム)が格納されています。
  4. それでは、ルートディレクトリに移動して、その中身をリスト表示してみましょう。

    cd /
    ls -l
    

    cd は "change directory"(ディレクトリを変更)を意味します。/ を指定するとルートディレクトリに移動します。 ls -l は、ディレクトリの内容を詳細な形式でリスト表示します。-l は「オプション」または「フラグ」と呼ばれ、コマンドの動作を変更するために使用されます。

  5. ホームディレクトリに戻りましょう。

    cd ~
    pwd
    

    ~(チルダ)は、ファイルシステムのどこにいても、常にあなたのホームディレクトリを表すショートカットです。

このステップを終えると、Linux のディレクトリ構造と移動方法について基本的な理解が得られたはずです。すべてを暗記する必要はありません。構造を思い出したいときは、いつでもこれらのコマンドを使えばいいのです。

パスとナビゲーションの理解

ファイルシステムの概要を把握したところで、次は効率的に移動する方法を学びましょう。ファイルシステム内を移動する上で極めて重要な概念である「絶対パス」と「相対パス」について探求します。

  1. まず、練習用のディレクトリ構造を作成します。

    mkdir -p ~/project/practice/subdirectory
    

    mkdir は "make directory"(ディレクトリを作成)を意味します。-p オプションを使うと、親ディレクトリが存在しない場合にそれらも同時に作成できます。このコマンドは、project ディレクトリの中に practice を作り、さらにその中に subdirectory を作成します。

  2. 相対パスを使って、新しく作ったサブディレクトリに移動します。

    cd ~/project/practice/subdirectory
    pwd
    

    このパスはホームディレクトリ(~)からの相対的な位置を示しています。現在の場所によって指定の仕方が変わるため、「相対パス」と呼ばれます。

  3. 次に、ディレクトリ構造を一つ上の階層に移動してみましょう。

    cd ..
    pwd
    

    .. は常に「親ディレクトリ(一つ上の階層)」を指します。ディレクトリツリーを上に移動する際に非常に便利なショートカットです。

  4. 絶対パスを使って、再びサブディレクトリに戻ってみましょう。

    cd /home/labex/project/practice/subdirectory
    pwd
    

    これは「絶対パス」です。ルートディレクトリ(/)から始まり、現在の場所に関係なく目的地までの完全な経路を指定します。

  5. ナビゲーションのショートカットをいくつか練習してみましょう。

    cd ~ ## ホームディレクトリに移動
    pwd
    cd - ## 直前にいたディレクトリに戻る
    pwd
    cd ## ホームディレクトリに移動するもう一つの方法
    pwd
    

    これらのショートカットを使えば、入力の手間を大幅に省くことができます!

このステップの終わりには、絶対パスと相対パスの両方を使ってファイルシステムを自在に移動できるようになっているはずです。習得の近道は練習です。ためらわずにこれらのコマンドを試してみてください!

ファイルとディレクトリの作成と管理

ファイルシステムの移動に慣れてきたところで、次はファイルやディレクトリを作成・管理する方法を学びましょう。これらは Linux で作業する上での基本スキルです。

  1. プロジェクトディレクトリに移動します。

    cd ~/project
    
  2. 複数のディレクトリを一度に作成してみましょう。

    mkdir dir1 dir2 dir3
    ls
    

    mkdir は一つのコマンドで複数のディレクトリを作成できます。ls で現在のディレクトリの内容を表示し、作成されたことを確認します。

  3. 次に、空のファイルを作成します。

    touch file1.txt
    ls -l file1.txt
    

    touch は、空のファイルを作成したり、既存のファイルのタイムスタンプを更新したりするために使用されます。ls -l コマンドで、ファイルのサイズが 0 バイトであることを確認できます。

  4. 内容を含んだファイルを作成してみましょう。

    echo "Hello, Linux" > file2.txt
    cat file2.txt
    

    echo はテキストを表示するコマンドで、> はそのテキストをファイルにリダイレクト(出力先を変更)します。ファイルが存在しない場合は新しく作成されます。cat はファイルの内容を表示するために使用されます。

  5. ファイルに内容を追記してみましょう。

    echo "This is a new line." >> file2.txt
    cat file2.txt
    

    >> を使うと、ファイルを上書きするのではなく、末尾に内容を追記します。ファイルが 2 行になっていることを確認してください。

  6. 最後に、階層化されたディレクトリ構造を作成します。

    mkdir -p nested/structure/example
    tree nested
    

    tree コマンドを使うと、作成したディレクトリ構造を視覚的にわかりやすく表示できます。

このステップを終えると、ファイルやディレクトリの作成、ファイルへの内容の追加、そして内容の確認がスムーズに行えるようになります。これらの操作は、Linux におけるファイル管理の屋台骨となります。

ファイルのコピー、移動、名前の変更

ファイルやディレクトリの作成方法を学んだので、次はそれらを操作する方法を学びます。ファイルのコピー、移動、そして名前の変更について解説します。

  1. まずはファイルをコピーしてみましょう。

    cp file1.txt dir1/
    ls dir1
    

    cp はコピー(copy)コマンドです。ここでは file1.txtdir1 ディレクトリの中にコピーしています。

  2. 次に、コピーと名前の変更を一つのコマンドで行います。

    cp file2.txt dir2/file2_copy.txt
    ls dir2
    

    これにより、file2.txt のコピーが dir2 内に新しい名前で作成されます。

  3. ファイルを移動してみましょう。

    mv file1.txt dir3/
    ls
    ls dir3
    

    mv は移動(move)に使用されます。file1.txt が現在のディレクトリから消え、dir3 の中に現れたことに注目してください。

  4. mv を使ってファイル名を変更することもできます。

    mv dir3/file1.txt dir3/renamed_file.txt
    ls dir3
    

    これにより、dir3 内の file1.txtrenamed_file.txt にリネームされます。

  5. 最後に、ディレクトリとその中身を丸ごとコピーしてみましょう。

    cp -r nested dir1/
    tree dir1
    

    -r オプション(recursive:再帰的)は、ディレクトリをその中のすべてのサブディレクトリやファイルを含めてコピーするよう cp に指示します。

ファイルを移動したりコピーしたりする際は、絶対パスと相対パスのどちらでも使用できます。その時の状況に合わせて、便利な方を選んでください。

ファイル内容の表示と編集

最後のステップでは、ファイルの内容を表示するより高度な方法と、シンプルなテキストエディタを使ってファイルを編集する方法を学びます。

  1. ヒアドキュメント(here-document)を使って、複数行の新しいファイルを作成してみましょう。

    cat << EOF > multiline.txt
    Line 1: Hello, Linux
    Line 2: This is a multiline file.
    Line 3: Created using a here-document.
    EOF
    

    これは「ヒアドキュメント」という手法で、複数行のファイルを簡単に作成できます。<< の後にデリミタ(ここでは EOF)を指定します。シェルは、そのデリミタだけの行が現れるまで、入力されたすべての行を読み取ります。このテキストブロック全体が multiline.txt にリダイレクトされます。

  2. ファイルの内容を確認します。

    cat multiline.txt
    

    cat は以前も使いましたが、ファイルの内容を素早く確認するのに非常に便利です。

  3. 行番号付きでファイルを表示してみましょう。

    nl multiline.txt
    

    nl は出力に行番号を付加します。特定の行を参照したいときに役立ちます。

  4. ファイルの最初の 2 行だけを表示します。

    head -n 2 multiline.txt
    

    head コマンドはファイルの冒頭部分を表示します。-n 2 を指定すると最初の 2 行が表示されます。なお、-n2 のようにスペースを入れずに書いても同じように動作します。

  5. ファイルの最後の 1 行を表示します。

    tail -n 1 multiline.txt
    

    同様に、tail はファイルの末尾部分を表示するために使用されます。ここでも -n 1-n1 は同じ意味です。

  6. それでは、nano エディタを使ってファイルを編集してみましょう。

    nano multiline.txt
    

    nano はシンプルで使いやすいテキストエディタです。矢印キーで移動し、文字を入力して編集できます。画面下部に表示されているコマンドに従って操作します(^ は Ctrl キーを意味します)。

    4 行目を追加してから、保存して終了してください(Ctrl+X を押し、次に Y を押し、最後に Enter を押します)。

  7. 更新されたファイルを確認します。

    cat multiline.txt
    

    新しく追加した行がファイルに含まれているはずです。

これらのコマンドを使えば、コマンドラインから直接ファイルの内容を調査したり修正したりするための強力な手段が手に入ります。

Linux でのファイル検索

ファイルを素早く見つけることは、Linux における必須スキルです。ファイルを特定するためによく使われるコマンドを学びましょう。

  1. まず、find コマンドを使って、現在のディレクトリとそのサブディレクトリ内にあるすべての .txt ファイルを検索してみます。

    find . -name "*.txt"
    

    このコマンドは、現在のディレクトリ以下のすべての .txt ファイルをリストアップします。もし何も表示されない場合は、現在のディレクトリ構造に .txt ファイルが存在しないことを意味します。テスト用に一つ作成してみましょう。

    echo "This is a test file" > test.txt
    find . -name "*.txt"
    

    今度は出力に ./test.txt が表示されるはずです。

  2. 次に、システム全体から特定のファイルを検索してみましょう。

    sudo find / -name "passwd"
    

    このコマンドは、ファイルシステム全体から "passwd" という名前のファイルを検索します。ここでは sudo を使用しています。ルートディレクトリ(/)から始まるシステム全体を検索するには、昇格した権限が必要だからです。多くのシステムディレクトリは一般ユーザーには読み取り権限がないため、sudo を使うことでこれらの保護された領域も検索できるようになります。

    次のような出力が表示されるはずです。

    /etc/pam.d/passwd
    /etc/passwd
    /usr/bin/passwd
    /usr/share/doc/passwd
    /usr/share/lintian/overrides/passwd
    
  3. find コマンドは非常に強力です。ファイルサイズに基づいて検索することもできます。例えば、ホームディレクトリ内で 1MB より大きいファイルを探してみましょう。

    find ~ -size +1M
    

    これにより、ホームディレクトリ内の 1MB を超えるファイルがリストアップされます。

  4. また、特定の期間内に変更されたファイルを検索することもできます。ホームディレクトリ内で過去 24 時間以内に変更されたファイルを探してみましょう。

    find ~ -mtime -1
    
  5. 最後に、which コマンドを使って実行ファイルの場所を特定してみましょう。

    which python
    

    次のような出力が表示されるはずです。

    /usr/bin/python
    

    もし何も表示されない場合は、次を試してください。

    which python3
    

これらのコマンドを使えば、Linux システム内のファイルを簡単に見つけることができるようになります。find コマンドは非常に多機能で、多くのオプションを組み合わせることで、さまざまな条件に基づいた柔軟な検索が可能です。

まとめ

お疲れ様でした!「Linux ファイルとディレクトリ操作入門」実験を無事に完了しました。学んだ内容を振り返ってみましょう。

  1. Linux のディレクトリ構造を探索し、/home/etc/bin といった主要なディレクトリの役割を理解しました。
  2. 絶対パスと相対パスについて学び、cd コマンドや ~.. といったショートカットを使って効率的に移動する方法を習得しました。
  3. ファイルやディレクトリの作成を実践し、mkdirtouchecho を使ってファイルに内容を追加する方法を学びました。
  4. cpmv を使った、ファイルやディレクトリのコピー、移動、名前の変更といったファイル操作をマスターしました。
  5. catheadtail を使ったさまざまなファイル表示方法と、nano エディタによるファイル編集方法を学びました。
  6. 最後に、findwhich を使った強力なファイル検索テクニックを探索し、システム全体からファイルや実行ファイルを素早く見つける方法を習得しました。

これらのスキルは、Linux で作業するための基礎となります。Linux の学習を続けるにつれて、これらの基本を土台にして、より複雑な操作やシステム管理タスクを行えるようになっていくでしょう。

スキルを習得する鍵は「練習」です。Linux 環境でこれらのコマンドをどんどん試してみてください。自分なりにディレクトリ構造を作ってみたり、ファイルをあちこち移動させたり、内容を書き換えたり、さまざまな条件でファイルを検索したりしてみましょう。練習すればするほど、Linux コマンドラインが手になじんでくるはずです。

今回身につけたファイル管理と検索のスキルがあれば、Linux ファイルシステムを効率的に操作する準備は万端です。これからも探索を続け、学習を楽しんでください!