ファイルが存在するかどうかを確認するためにLinuxでファイルをチェックする方法は?
今日使用するコマンドは test コマンドです. このコマンドの最も重要な機能はファイルをチェック/比較することです.
目次
1.ファイルが存在し、ディレクトリであるかどうかを確認します
2. ファイルが存在するかどうかを確認します (ファイルとディレクトリが存在するかどうかを判断できます #存在する場合はゼロ、存在しない場合は非ゼロです)
6.ファイルが存在し、実行可能か確認する#コマンドで判断できる
8.ファイルが存在し、現在のユーザーが所有しているかどうかを確認します
9. ファイルが存在し、デフォルト グループが現在のユーザー グループであるかどうかを確認します。
10. ファイル 1 がファイル 2 よりも新しいかどうかを確認します #ここで 2 つの日付を比較します
11.ファイル1がファイル2より古いかチェック#比較の日付が新旧
12. ファイル 1 がファイル 2 と同じかどうかを確認、i ノードで判断
13. ファイル 1 がファイル 2 と同じかどうかを確認します。i ノードによって判断されます。
テスト パラメータの概要:
-d #检查文件是否存在且为目录
-e #检查文件是否存在
-f #检查文件是否存在且为文件
-r #检查文件是否存在且为可读
-w #检查文件是否可写
-x #检查文件是否存在且可执行
-s #检查文件是否存且不为空
-O #检查文件是否存在并且被当前用户拥有
-G #检查文件是否存在并且默认组为当前用户组
file1 -nt file2 #检查 文件1 是否比 文件2 新
file1 -ot file2 #检查 文件1 是否比 文件2 旧
file1 -ef file2 #检查 文件1 是否与 文件2 相同 是按i节点判断
詳細なデモ:
## echo $? # 最後の実行が成功した後に結果を返す
戻り値がゼロの場合、実行は成功です; ゼロ以外の失敗
";" セミコロンの使い方: コマンド 1 ; コマンド 2 ";" を使用して各コマンドを区切り、各コマンドは左から右に順番に実行されます。失敗しても失敗しても、すべてのコマンドが実行されます。
1.ファイルが存在し、ディレクトリであるかどうかを確認します
書き込み:
#判断一个文件是否存在并且为目录
test -d /shell ; echo $? #这里我shell那个目录已经建立好了,如果没有返回的值就是非零的数
操作結果:
結果は 0 で、ファイルが存在し、ディレクトリであることを示します。ディレクトリでない場合、戻り値はゼロ以外です。
2. ファイルが存在するかどうかを確認します (ファイルとディレクトリが存在するかどうかを判断できます #存在する場合はゼロ、存在しない場合は非ゼロです)
書き込み:
test -e /shell/ ;echo $? #判断目录是否存在
test -e /shell/1.txt ;echo $? #判断文件是否存在
操作結果:
返される結果は 0 で、存在を示します
3.ファイルが存在し、ファイルであるかどうかを確認します
書き込み:
test -f /shell/1.txt ; echo $? #判断文件是否存在 并且为文件
操作結果:
ゼロの成功、非ゼロの失敗
4. ファイルが存在し、読み取り可能かどうかを確認します
## ls -l と ll はファイルのパーミッションをチェックできますが、これら 2 つのコマンドを使用せずに、ファイルに読み取り可能なパーミッションがあるかどうかをどのように特定できるのでしょうか? ファイルは存在しますか?
現在、私の操作はすべてルート権限で実行されているため、通常のユーザーに切り替えてコマンドを入力しましょう
書き込み:
test -r /shell ; echo $? #判断文件是否为当前用户 可读
操作結果:
結果がゼロではないことを確認してください。現在のユーザーは読み取ることができません
5. ファイルが存在し、書き込み可能かどうかを確認します
書き込み:
test -w /shell ; echo $? #查看文件或目录 在当前用户下是否可写
実行結果: #現在、一般ユーザーでの書き込み権限がありません
6.ファイルが存在し、実行可能か確認する#コマンドで判断できる
書き込み:
test -x /shell ; echo $? #判断文件或目录是否存在并且为可执行
操作結果:
判定コマンド:
7. ファイルが存在し、空でないことを確認します #Key
書き込み:
test -s /shell/1.txt ;echo $? #判断1.txt文件内是否有内容
操作結果:
その結果、1.txtファイルにコンテンツがないことがわかります./shellディレクトリの下にコンテンツがあります##ここで、直接echo > /shell/1.txtを実行すると、返される結果が0になることに注意してくださいecho が 1 に null 値を入力したためです。txt ファイルでは、ファイルにコンテンツがあると判断されます。
8.ファイルが存在し、現在のユーザーが所有しているかどうかを確認します
書き込み:
test -O /shell ; ehco $? #检查文件/目录是否存在并且被当前用户拥有
運用実績
root権限で作成したので、現在のユーザーが作成したものか判断できます.権限がない場合はカルチャやディレクトリの所有者やグループを変更できません.現在のユーザーに変更した場合は返されます.結果は 0 です。
9. ファイルが存在し、デフォルト グループが現在のユーザー グループであるかどうかを確認します。
書き込み:
test -G /shell ; echo $? #检查当前文件或者目录是否为当前用的组所拥有
操作結果:
8thの意味と一致
10. ファイル 1 がファイル 2 よりも新しいかどうかを確認します #ここで 2 つの日付を比較します
書き込み:
test 1.txt -nt 2.txt ; echo $? #判断1.txt是否比2.txt新
操作結果:
11.ファイル1がファイル2より古いかチェック#比較の日付が新旧
書き込み:
test 1.txt -ot 2.txt ; echo $? #判断1.txt是否比2.txt旧
操作結果:
12. ファイル 1 がファイル 2 と同じかどうかを確認、i ノードで判断
書き込み:
test 1.txt -ef 2.txt ; echo $? #判断两个文件是否相同 查看i节点 ls -i + file
操作結果:
13. ファイル 1 がファイル 2 と同じかどうかを確認します。i ノードによって判断されます。
文言
test 1.txt -ef 2.txt ; echo $? #判断两个文件是否相同 是以i节点作为判断的
操作結果:
拡大:
ファイル、権限、最近のアクセス、最近の変更、最近の変更時刻を表示するには、stat コマンドを使用できます。