はじめに (対象読者・この記事でわかること)

この記事は、リナックスに触れ始めたばかりで、ターミナル操作に戸惑っているプログラミング初学者の方や、基本的なファイル操作や権限管理で「あれ?思ったように動かないぞ?」とつまずいた経験のある方を対象としています。

この記事を読むことで、以下のことがわかるようになります。

  • リナックスでの基本的なファイル・ディレクトリ操作コマンド(ls, cd, pwd, mkdir, rm, cp, mv
  • ファイルの権限(パーミッション)の読み方と変更方法(chmod
  • 初心者がつまずきやすい典型的なエラーとその解決策

私自身もリナックスを触り始めた頃、ファイルの作成や実行で「Permission denied」というエラーによく遭遇し、そのたびに手が止まっていました。この記事が、同じように困っている方々の助けとなり、リナックス操作の第一歩をスムーズに踏み出すきっかけになれば幸いです。

前提知識

この記事を読み進める上で、特別な前提知識は不要です。PCの基本的な操作ができ、ターミナル(端末)を開くことができれば大丈夫です。

リナックス初心者がつまずきがちな「あれ?」の正体

リナックスを操作する際、多くの場面でコマンドラインインターフェース(CLI)を使います。CLIは、マウス操作に慣れている方にとっては少しとっつきにくく感じるかもしれません。特に「ファイルがない」「なぜかファイルを作成できない」「スクリプトが実行できない」といった問題は、リナックスのファイルシステムやファイルの「権限(パーミッション)」に関する理解不足からくることが多いです。

リナックスのファイルシステムは、WindowsのエクスプローラーやmacOSのFinderで見るようなフォルダー構造と似ていますが、それをすべてテキストコマンドで操作することになります。最初は戸惑うかもしれませんが、いくつかの基本的なコマンドと権限の概念を理解すれば、思ったよりも簡単にファイルやディレクトリを扱えるようになります。

このセクションでは、リナックスのファイルシステムの基礎と、これから学ぶファイル操作コマンドの概要を説明します。専門用語としては「CLI」「シェル」「ターミナル」「ファイルシステム」「ディレクトリ」「パーミッション」などが出てきますが、一つずつ丁寧に解説していきますのでご安心ください。

初心者のためのリナックスファイル操作と権限マスター術

ここでは、リナックスでの具体的なファイル・ディレクトリ操作コマンドと、つまずきやすいポイントである「ファイルの権限(パーミッション)」について詳しく見ていきましょう。

ディレクトリ移動と現在地の確認 (cd, pwd, ls)

まずは、自分がどこにいるのかを確認し、目的の場所に移動するための基本的なコマンドです。

  • pwd (Print Working Directory) 現在いるディレクトリの絶対パスを表示します。 bash pwd # 出力例: /home/kousukei/documents

  • ls (List Segments) 現在のディレクトリにあるファイルやディレクトリの一覧を表示します。

    • ls -l: ファイルの詳細情報(パーミッション、所有者、サイズ、更新日時など)を表示します。
    • ls -a: 隠しファイル(ファイル名の先頭が.で始まるファイル)を含めてすべて表示します。 ```bash ls

    出力例: my_folder my_file.txt script.sh

    ls -l

    出力例:

    drwxr-xr-x 2 kousukei kousukei 4096 Jan 1 10:00 my_folder

    -rw-r--r-- 1 kousukei kousukei 10 Jan 1 10:05 my_file.txt

    -rwxr-xr-x 1 kousukei kousukei 120 Jan 1 10:10 script.sh

    ```

  • cd (Change Directory) ディレクトリを移動します。

    • cd my_folder: my_folderディレクトリに移動します。
    • cd ..: 親ディレクトリに移動します。
    • cd ~: 自分のホームディレクトリに移動します。
    • cd /: ルートディレクトリに移動します。 bash pwd # /home/kousukei cd documents pwd # /home/kousukei/documents cd .. pwd # /home/kousukei

つまずきポイント:パスの指定ミスと大文字小文字

リナックスでは、ファイル名やディレクトリ名の大文字と小文字が厳密に区別されます。「Documents」と「documents」は別のものとして扱われます。また、パスを指定する際には、絶対パス(/home/user/dirのようなルートからの完全なパス)と相対パス(現在のディレクトリからのパス)を意識することが重要です。

ファイル・ディレクトリの作成・削除・コピー・移動 (mkdir, touch, rm, cp, mv)

次に、実際にファイルやディレクトリを操作するコマンドです。

  • mkdir (Make Directory) 新しいディレクトリを作成します。 bash mkdir new_directory

  • touch 新しい空のファイルを作成します。すでに存在するファイル名を指定すると、そのファイルの最終更新日時を更新します。 bash touch new_file.txt

  • rm (Remove) ファイルやディレクトリを削除します。

    • rm my_file.txt: my_file.txtを削除します。
    • rm -r my_directory: ディレクトリとその中身を再帰的に削除します。
    • rm -rf my_directory: 強制的に再帰的に削除します。このコマンドは非常に危険なので、使用には細心の注意が必要です。 bash rm new_file.txt rm -r new_directory
  • cp (Copy) ファイルやディレクトリをコピーします。

    • cp source.txt destination.txt: source.txtdestination.txtとしてコピーします。
    • cp -r source_dir destination_dir: ディレクトリを再帰的にコピーします。 bash cp original.txt copy.txt cp -r my_template_dir new_project_dir
  • mv (Move) ファイルやディレクトリを移動したり、名前を変更したりします。

    • mv old_name.txt new_name.txt: old_name.txtの名前をnew_name.txtに変更します。
    • mv file.txt /path/to/destination: file.txt/path/to/destinationディレクトリに移動します。 bash mv document.txt report.txt mv report.txt ~/documents/

つまずきポイント:rmコマンドの恐怖と権限不足

特にrm -rfは、誤って実行するとシステムファイルや重要なデータを削除してしまう可能性があるため、慎重に使う必要があります。また、これらの操作も、後述するファイル権限がなければ実行できません。

ファイルの権限(パーミッション)を理解する (chmod)

リナックスのファイル操作で最もつまずきやすいのが「権限(パーミッション)」です。ファイルやディレクトリには、「誰が」「何を」できるかという情報が設定されています。

ls -lコマンドの出力を見てみましょう。

Bash
ls -l my_script.sh # 出力例: -rwxr-xr-x 1 kousukei kousukei 120 Jan 1 10:10 my_script.sh

この出力の先頭部分 -rwxr-xr-x がパーミッション情報です。

  1. 最初の1文字 (-): ファイルタイプを表します。

    • -: 通常のファイル
    • d: ディレクトリ
    • l: シンボリックリンク など
  2. 続く9文字 (rwxr-xr-x): 3文字ずつ3つのグループに分かれています。

    • 所有者 (User): ファイルを作成したユーザーの権限 (rwx)
    • グループ (Group): ファイルが属するグループのメンバーの権限 (r-x)
    • その他 (Others): 上記以外のすべてのユーザーの権限 (r-x)

    それぞれの文字の意味は以下の通りです。 - r: 読み込み権限 (read) - w: 書き込み権限 (write) - x: 実行権限 (execute) - -: 権限なし

    上記の例 rwxr-xr-x は、 - 所有者: 読み込み、書き込み、実行 (rwx) が可能 - グループ: 読み込み、実行 (r-x) が可能(書き込みは不可) - その他: 読み込み、実行 (r-x) が可能(書き込みは不可) という意味になります。

権限の変更 (chmod)

ファイルの権限を変更するには chmod コマンドを使います。権限の指定方法には、数字(八進数)を使う方法と記号を使う方法があります。

数字(八進数)での指定 - r = 4, w = 2, x = 1 - これらの数字を合計して権限を表します。 - rwx = 4 + 2 + 1 = 7 - rw- = 4 + 2 + 0 = 6 - r-x = 4 + 0 + 1 = 5 - r-- = 4 + 0 + 0 = 4

例えば、chmod 755 my_script.sh とすると、rwxr-xr-x となります。 - 最初の7:所有者 (rwx) - 次の5:グループ (r-x) - 最後の5:その他 (r-x)

よく使われるパーミッション: - 755 (rwxr-xr-x): 所有者だけが書き込み可能で、他のユーザーは読み込みと実行のみ可能。スクリプトファイルやディレクトリによく使われます。 - 644 (rw-r--r--): 所有者だけが読み書き可能で、他のユーザーは読み込みのみ可能。設定ファイルやテキストファイルによく使われます。

記号での指定 - u (user: 所有者), g (group: グループ), o (others: その他), a (all: 全員) - + (権限を追加), - (権限を削除), = (権限を上書き) - r, w, x (権限の種類)

例: - chmod u+x my_script.sh: 所有者に実行権限を追加 - chmod g-w my_file.txt: グループから書き込み権限を削除 - chmod a=rw- my_config.conf: 全員に読み書き権限のみを設定

ハマった点やエラー解決

シナリオ1: 「ファイルを作成しようとしたら Permission denied と言われた!」

  • 状況: 好きな場所にファイルをtouchecho >で作成しようとしたら、「Permission denied (許可がありません)」というエラーが出た。
  • 原因: ファイルを作成しようとしたディレクトリに、書き込み権限がなかった。特に/usr/binのようなシステムディレクトリや、他のユーザーのホームディレクトリで作業しようとした場合によく起こります。
  • 解決策:
    1. まず、pwdで現在のディレクトリを確認します。
    2. 次に、ls -l .(現在のディレクトリの権限)またはls -l /path/to/parent_directory(親ディレクトリの権限)で、そのディレクトリに書き込み権限(w)があるか確認します。
    3. もし書き込み権限がない場合、書き込み権限のあるディレクトリ(例: 自分のホームディレクトリ~/~/Documentsなど)に移動して作業するか、sudoコマンド(管理者権限でコマンドを実行)を使います。ただし、sudoは強力なコマンドなので、安易な使用は避けるべきです。本当にその場所にファイルを作成する必要があるのかを考えましょう。

シナリオ2: 「作ったはずのスクリプトが実行できない!」

  • 状況: シェルスクリプト(例: my_script.sh)を作成し、./my_script.shと実行しようとしたら、「Permission denied」または「command not found」と出た。
  • 原因: スクリプトファイルに実行権限(x)が付与されていないためです。command not foundと出る場合は、PATHが通っていない可能性もありますが、まずは実行権限を確認しましょう。
  • 解決策:
    1. ls -l my_script.sh でパーミッションを確認します。-rw-r--r-- のように、xがないことを確認します。
    2. chmod +x my_script.sh コマンドで実行権限を付与します。
    3. もう一度 ls -l my_script.sh でパーミッションを確認すると、-rwxr-xr-x のようになっているはずです。
    4. これで ./my_script.sh と実行できるようになります。

シナリオ3: 「ファイルが見つからない、存在しないと言われる!」

  • 状況: 作成したはずのファイルやディレクトリがlsで見つからない、またはコマンドで指定すると「No such file or directory (そのようなファイルやディレクトリはありません)」とエラーが出る。
  • 原因:
    • ファイル名やディレクトリ名の大文字小文字が間違っている。
    • パスが間違っている(相対パスと絶対パスの混同)。
    • 隠しファイルになっている。
    • 別のディレクトリに作成してしまった。
  • 解決策:
    1. ファイル名の大文字小文字を再度確認します。
    2. ls -a を使って、隠しファイルも含めて表示させます。
    3. find . -name "filename*" のようにfindコマンドを使って、現在のディレクトリ以下でファイルを探してみます。
    4. pwdで現在地を再確認し、意図しない場所で作業していないかを確認します。
    5. ターミナルでのコマンド入力では、Tabキーによる補完機能を積極的に使いましょう。これにより、タイプミスを防ぎ、正しいファイル名やパスを簡単に入力できます。

まとめ

本記事では、リナックス初心者の方がつまずきがちなファイル操作の基本と権限(パーミッション)について解説しました。

  • 基本的なCLIコマンド: pwd, ls, cdで現在地を確認し移動する。mkdir, touch, rm, cp, mvでファイルやディレクトリを操作する。
  • ファイル権限の理解: ls -lで表示される-rwxr-xr-xのようなパーミッションの読み方を学び、chmodコマンドで実行権限などを付与する方法を理解しました。
  • よくあるエラーとその解決策: 「Permission denied」や「No such file or directory」といったエラーに遭遇した際の対処法を具体的に説明しました。

この記事を通して、リナックスでの基本的なファイル操作でつまずくことが減り、ターミナルからのエラーメッセージを見たときに、その原因を推測できるようになるはずです。CLI操作は最初は難しく感じるかもしれませんが、基本をしっかりと押さえれば、強力なツールとして活用できるようになります。

今後は、sudoコマンドのより深い理解、環境変数、シェルスクリプトの基礎、パイプとリダイレクトなど、さらに発展的な内容についても学習を進めていくと、リナックスの操作がもっと楽しくなるでしょう。

参考資料