GNU/Linux >> Linux の 問題 >  >> Linux

Bashシェルにファイルまたはディレクトリが存在するかどうかを確認する方法

ファイルおよびディレクトリと相互作用するBashスクリプトで作業している場合、ファイルまたはディレクトリが存在することを確認する必要がある状況が発生する可能性があります。これにより、存在しないファイルに対して特定のアクションを実行する際に発生する可能性のあるエラーを回避できます。

このチュートリアルでは、ファイルまたはディレクトリがbashスクリプトに存在するかどうかを確認するいくつかの方法を紹介します。まずファイルから始めましょう。

ファイルがbashスクリプトに存在するかどうかを確認します

ここでの考え方は、通常のファイル(ディレクトリではない)の場合にのみtrueを返す-f演算子を使用することです。

ファイル/home/ user/my_fileが存在するかどうかを確認するとします。角かっこで確認する方法は次のとおりです

#!/bin/bash
 
if [ -f /home/user/my_file ]
then
    echo "My file exists"
fi

ただし、ファイル名を事前に取得できるとは限りませんね。変数に含めることができ、その場合は、この方法で使用できます。

#!/bin/bash

FILE=/home/user/my_file
 
if [ -f "$FILE" ]
then
    echo "My file exists"
else 
    echo "My file doesn't exist"
fi

基本的に重要なのは、ifコマンドで使用する条件です。 ifステートメントをどのように使用するかはあなた次第です。

たとえば、2つの角かっこで記述し、次のようにセミコロンを使用して「then」を「if」と同じ行に保持できます。

#!/bin/bash

FILE=/home/user/my_file
 
if [ -f "$FILE" ]; then
    echo "My file exists"
else 
    echo "My file doesn't exist"
fi

または、ステートメント全体を次のようにまとめます。

[ -f /home/user/my_file ] && echo "My file exists" || echo "My file doesn't exist"
チェックファイルがテストでbashに存在します

また、bashでtestを使用して、ファイルが存在するかどうかを確認することもできます。 ifステートメントで角かっこを使用しないこととほとんど同じです:

#!/bin/bash

FILE=/home/user/my_file
 
if test -f "$FILE" 
then
    echo "My file exists"
else 
    echo "My file doesn't exist"
fi

上記のコードは、次のように1行で使用することもできます。

test -f /home/user/my_file && echo "My file exists" || echo "My file doesn't exist"
ファイルがbashスクリプトに存在しないかどうかを確認します

逆に、ファイルがbashに存在しないかどうかを確認したい場合はどうなりますか?否定演算子を使用すると、上記とほぼ同じコードを使用できます。

#!/bin/bash

FILE=/home/user/my_file
 
if [ ! -f "$FILE" ]
then
    echo "My file doesn't exist"
fi

ファイルの処理方法がわかったところで、ディレクトリに移りましょう。

ディレクトリがbashスクリプトに存在するかどうかを確認します

ディレクトリをチェックするためのコードは、前のセクションで見たものと同じです。唯一の違いは、-fの代わりに-dを使用することです。 -dはディレクトリに対してのみtrueを返します。

#!/bin/bash
 
if [ -d /home/user/my_dir ]
then
    echo "My directory exists"
fi

ここでテストを使用することもできます:

#!/bin/bash

DIR=/home/user/my_dir
 
if test -d "$DIR" 
then
    echo "My directory exists"
else 
    echo "My directory doesn't exist"
fi
ディレクトリがbashに存在しないかどうかを確認します

否定を再度使用して、ディレクトリが存在しないかどうかを確認できます。

#!/bin/bash

DIR=/home/user/my_dir
 
if [ ! -d "$DIR" ]
then
    echo "My directory doesn't exist"
fi

それでおしまい。ファイルのディレクトリがbashシェルに存在するかどうかを確認するために必要なのはこれだけです。

このバッシュチップがお役に立てば幸いです。ご質問やご提案がございましたら、下にコメントを残してください。


Linux
  1. 特定のファイルの種類/拡張子がディレクトリに存在するかどうかを確認します

  2. Linux の Bash で syslog を確認するには?

  3. Bashでファイルが空かどうかを確認するには?

  1. ファイルを bash シェル スクリプトに含める方法

  2. bashでファイルの絶対ディレクトリを取得するにはどうすればよいですか?

  3. ファイルがbashスクリプトの特定のディレクトリに存在するかどうかを確認するには?

  1. sudoers構文を確認する方法

  2. Bash:そのようなファイルやディレクトリはありませんか?

  3. bash シェルでファイルのセクションを grep する方法