Linux チェックファイルと 2 つのファイルの比較 (非常に冗長)

ファイルが存在するかどうかを確認するためにLinuxでファイルをチェックする方法は?

今日使用するコマンドは test コマンドです. このコマンドの最も重要な機能はファイルをチェック/比較することです.

目次

テスト パラメータの概要:

詳細なデモ:

1.ファイルが存在し、ディレクトリであるかどうかを確認します

2. ファイルが存在するかどうかを確認します (ファイルとディレクトリが存在するかどうかを判断できます #存在する場合はゼロ、存在しない場合は非ゼロです)

 3.ファイルが存在し、ファイルであるかどうかを確認します  

4. ファイルが存在し、読み取り可能かどうかを確認します

5. ファイルが存在し、書き込み可能かどうかを確認します

6.ファイルが存在し、実行可能か確認する#コマンドで判断できる

7. ファイルが存在し、空でないことを確認します #Key

 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 コマンドを使用できます。

おすすめ

転載: blog.csdn.net/weixin_58279299/article/details/123494619