はじめに
この実験では、Linux で様々な方法を使ってファイルが書き込み可能かどうかを確認する方法を学びます。まず、test -w
コマンドを使って書き込み可能性を迅速に判断し、シェルスクリプトでのその使い方を理解します。
次に、ls -l
コマンドを使ってファイルのパーミッションを詳細に確認し、出力を解釈して所有者、グループ、その他のパーミッションを理解します。最後に、stat
コマンドを使ってファイルのアクセス情報をより包括的に調べます。
💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください
この実験では、Linux で様々な方法を使ってファイルが書き込み可能かどうかを確認する方法を学びます。まず、test -w
コマンドを使って書き込み可能性を迅速に判断し、シェルスクリプトでのその使い方を理解します。
次に、ls -l
コマンドを使ってファイルのパーミッションを詳細に確認し、出力を解釈して所有者、グループ、その他のパーミッションを理解します。最後に、stat
コマンドを使ってファイルのアクセス情報をより包括的に調べます。
このステップでは、test
コマンドに -w
オプションを指定して、ファイルまたはディレクトリに書き込む権限があるかどうかを確認する方法を学びます。Linux では、誰がファイルを読み取り、書き込み、実行できるかを決定するため、ファイルのパーミッションを理解することが重要です。
test
コマンドは、条件をチェックし、終了ステータスとして 0(真)または 1(偽)を返すシェルの組み込みコマンドです。-w
オプションは、現在のユーザーがファイルまたはディレクトリに書き込み可能かどうかを具体的にチェックします。
~/project
ディレクトリに簡単なファイルを作成しましょう。存在しない場合に空のファイルを作成する touch
コマンドを使用します。
まだ project
ディレクトリにいない場合は、そこに移動します。
cd ~/project
次に、my_test_file.txt
という名前のファイルを作成します。
touch my_test_file.txt
ls
コマンドを使用して、ファイルが作成されたことを確認できます。
ls
出力に my_test_file.txt
が表示されるはずです。
では、test -w
コマンドを使用して、このファイルに書き込めるかどうかを確認しましょう。結果を表示するために echo
コマンドと組み合わせます。
test -w my_test_file.txt && echo "Writable" || echo "Not writable"
このコマンドを分解してみましょう。
test -w my_test_file.txt
:これは my_test_file.txt
が書き込み可能かどうかをチェックします。&& echo "Writable"
:test
コマンドが真(終了ステータス 0)を返した場合、&&
演算子が次のコマンドを実行し、「Writable」を出力します。|| echo "Not writable"
:test
コマンドが偽(終了ステータス 1)を返した場合、||
演算子が次のコマンドを実行し、「Not writable」を出力します。ホームディレクトリで labex
ユーザーとしてファイルを作成したため、書き込み権限があるはずで、出力は次のようになります。
Writable
test -w
コマンドは、シェルスクリプトでファイルに書き込む前にパーミッションをチェックし、潜在的なエラーを防ぐためによく使用されます。
Continue をクリックして次のステップに進みます。
このステップでは、ls -l
コマンドを使用して、ファイルやディレクトリの詳細情報(パーミッションを含む)を表示します。このコマンドは、Linux システム上で誰が何にアクセスできるかを理解するために不可欠です。
ls
コマンドは、ファイルやディレクトリを一覧表示します。-l
オプションは、「長い一覧」形式を提供し、パーミッション、所有者、サイズ、変更時刻が含まれます。
~/project
ディレクトリにいることを確認します。
cd ~/project
次に、ls -l
コマンドを実行して、このディレクトリ内のファイルの詳細を表示します。前のステップで作成した my_test_file.txt
ファイルが表示されるはずです。
ls -l
出力は次のようになります。
-rw-rw-r-- 1 labex labex 0 Month Day HH:MM my_test_file.txt
出力の最初の部分(ファイルのパーミッションを表す部分)を分解してみましょう。
-rw-rw-r--
この 10 文字の文字列は、ファイルの種類と異なるユーザーに対するパーミッションを示しています。
-
)は、ファイルの種類を示します。
-
: 通常のファイルd
: ディレクトリl
: シンボリックリンクrw-
): ファイルの所有者に対するパーミッション。rw-
): ファイルが所属するグループに対するパーミッション。r--
): その他のユーザー(システム上の他の全てのユーザー)に対するパーミッション。それぞれの 3 文字のセット内では、以下の意味があります。
r
: 読み取り権限(ファイルの内容を表示したり、ディレクトリの内容を一覧表示したりすることができます)。w
: 書き込み権限(ファイルを変更したり、ディレクトリ内でファイルを作成/削除したりすることができます)。x
: 実行権限(ファイルをプログラムとして実行したり、ディレクトリにアクセスしたりすることができます)。-
: 権限が付与されていないことを示します。したがって、パーミッションが -rw-rw-r--
の my_test_file.txt
の場合、
labex
) は読み取り (r
) と書き込み (w
) の権限を持っています。labex
) は読み取り (r
) と書き込み (w
) の権限を持っています。r
) 権限のみを持っています。この出力は、前のステップで test -w
コマンドが labex
ユーザーに対して「Writable」を返した理由を確認するものです。所有者 (labex
) が書き込み権限 (w
) を持っているからです。
ls -l
の出力を理解することは、Linux でファイルとパーミッションを管理する上で基本的なことです。
Continue をクリックして次に進みます。
このステップでは、stat
コマンドを使用して、ファイルまたはファイルシステムに関する詳細情報を取得します。ls -l
は概要をすぐに把握できますが、stat
はファイルのメタデータ(アクセス時間、変更時間、状態変更時間など)をより詳細に提供します。
~/project
ディレクトリにいることを確認します。
cd ~/project
次に、先ほど作成した my_test_file.txt
ファイルに対して stat
コマンドを使用しましょう。
stat my_test_file.txt
出力は非常に詳細で、次のようになるかもしれません。
File: my_test_file.txt
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: ---h/---d Inode: --- Links: 1
Access: (0664/-rw-rw-r--) Uid: ( 5000/ labex) Gid: ( 5000/ labex)
Access: YYYY-MM-DD HH:MM:SS.SSSSSSSSS +ZZZZ
Modify: YYYY-MM-DD HH:MM:SS.SSSSSSSSS +ZZZZ
Change: YYYY-MM-DD HH:MM:SS.SSSSSSSSS +ZZZZ
Birth: -
stat
が提供するいくつかの重要な情報を見てみましょう。
File
: ファイルの名前。Size
: ファイルのサイズ(バイト単位)。Access: (0664/-rw-rw-r--)
: この行は、8 進数 (0664) とシンボリック (-rw-rw-r--
) の両方の形式でパーミッションを示しています。これは ls -l
で見たパーミッションと一致します。Uid: ( 5000/ labex)
: ファイルの所有者のユーザー ID (UID) とユーザー名。Gid: ( 5000/ labex)
: ファイルが所属するグループのグループ ID (GID) とグループ名。Access
: ファイルが最後にアクセス(読み取り)された時間。Modify
: ファイルの内容が最後に変更された時間。Change
: ファイルのメタデータ(パーミッション、所有者など)が最後に変更された時間。Birth
: ファイルの作成時間(すべてのファイルシステムで利用できるとは限りません)。stat
コマンドは、ls -l
よりもファイルのプロパティを詳細に調べることができます。正確なタイムスタンプや、異なる形式でのファイルの所有者とパーミッションに関する詳細情報が必要な場合に特に便利です。
また、stat
にオプションを指定して特定の情報を取得することもできます。たとえば、8 進数形式のアクセスパーミッションのみを表示するには、次のようにします。
stat -c "%a" my_test_file.txt
このコマンドは -c
オプションを使用してカスタム形式を指定しています。"%a"
は 8 進数形式のアクセスパーミッションの形式指定子です。出力は次のようになります。
664
これは、完全な stat
出力に表示される 8 進数のパーミッション 0664
と一致します(先頭のゼロは省略されることが多い)。
Continue をクリックしてこの実験を完了します。
この実験では、Linux で test -w
コマンドを使用してファイルが書き込み可能かどうかを確認する方法を学びました。このコマンドは、書き込み権限を判断する簡単で効果的な方法であり、シェルスクリプトでエラーを防ぐためによく使用されます。ファイルを作成し、test -w
を &&
および ||
演算子と組み合わせて、ファイルが書き込み可能かどうかを表示する練習を行いました。
また、ls -l
コマンドを使用してファイルのパーミッションを確認する方法を調べました。このコマンドは、ファイルの所有者、グループ、およびパーミッションに関する詳細情報を人間が読みやすい形式で提供します。最後に、stat
コマンドを使用してファイルのアクセス詳細を調査する方法を学びました。このコマンドは、ファイルの状態に関するより包括的な情報(アクセス、変更、および状態変更のタイムスタンプを含む)を提供します。