Creative Saplings

ファイルがBashまたはシェルに存在するかどうかを適切に確認する方法(例を含む)

2月 13, 2021
No Comments

目次

このチュートリアルでは、bashまたはシェルスクリプトでファイルやディレクトリをチェックするために使用できるさまざまな属性について説明します。 ]でbash条件式を使用するか、でtestを使用してファイルが存在するかどうかを確認できます。

すべての例でbashif and else演算子を使用しているので、以下を読むことをお勧めします:bash ifelse初心者向け使用ガイド

1. Bash / Shell:ファイルが存在し、通常のファイルであるかどうかを確認します

このセクションでは、通常のファイルがbashに存在するかどうかを確認する例を示します。

1.1:方法-1:シングルブラケットまたはダブルブラケットを使用する

ダブルブラケットを使用する]

#!/bin/bashFILE="/etc/passwd"if ];then echo "$FILE exists"else echo "$FILE doesn"t exist"fi

単一のブラケットを使用する

#!/bin/bashFILE="/etc/passwd"if ;then echo "$FILE exists"else echo "$FILE doesn"t exist"fi

1.2:方法2:テストコマンドの使用

testコマンドは、ファイルタイプの確認と比較に使用されます値。

#!/bin/bashFILE="/etc/passwd"if test -f $FILE; then echo "$FILE exists"else echo "$FILE missing"fi

1.3:方法3:単一行

この例では、単一または二重の括弧を使用できます。シェルで1つのライナーコードを記述する場合は、単語の分割が行われたときにコンソールで警告が表示されるリスクを最小限に抑えるため、常に二重角かっこを使用することをお勧めします。

#!/bin/bashFILE="/etc/passwd"] && echo "$FILE exists" || echo "$FILE missing"

&&の後のステートメントは、成功した場合に実行されます。最初の条件がFALSEを返す場合、||を含むステートメントが実行されます。

同様にtestコマンドを使用して、通常のファイルがbashまたはシェルスクリプトに1行で存在するかどうかを確認します。 。

#!/bin/bashFILE="/etc/passwd"test -f $FILE && echo "$FILE exists" || echo "$FILE missing"

2. Bash / Shell:ファイルが存在するかどうかを確認します(空か空でないか)

ファイルが存在するかどうかを確認します空の場合、またはコンテンツが含まれている場合は、「-s」属性を使用します

2.1:方法-1:シングルブラケットまたはダブルブラケットを使用します

二重括弧を使用して、ファイルが存在し、空であるか空でないかを確認します]

#!/bin/bashFILE="/etc/passwd"if ]; then echo "$FILE exists and not empty"else echo "$FILE doesn"t exist or is empty"fi

ファイルかどうかを確認します存在し、二重括弧を使用して空または空ではない

if ; then echo "$FILE exists and not empty"else echo "$FILE doesn"t exist or is empty"fi

2.2:方法2:テストコマンドを使用する

テストコマンドを使用して、-s属性を組み合わせて確認します。ファイルが存在し、空であるか、コンテンツが含まれています:

2.3:方法3:単一行

このような1つのライナーには、二重ブラケットまたは単一ブラケットの両方を使用できますが、前に述べたように、二重ブラケットを使用することをお勧めします。

#!/bin/bashFILE="/etc/passwd"test -s $FILE && echo "$FILE exists and not empty" || echo "$FILE doesn"t exist or is empty"

テストコマンドと同様に、&&と||を使用できます。シェルスクリプト内の1行のコマンドでファイルをチェックする演算子。

#!/bin/bashFILE="/etc/passwd"] && echo "$FILE exists and not empty" || echo "$FILE doesn"t exist or is empty"

3. Bash / Shell:ディレクトリが存在するかどうかを確認します

Linuxではすべてがファイルであることをご存知だと思います。したがって、このように、ディレクトリもファイルと見なされます。 「-d」属性を使用して、シェルプログラミングにディレクトリが存在するかどうかを確認できます。

3.1:方法-1:二重または単一の角かっこを使用する

-d属性を単一のまたは二重括弧]内で使用して確認できますディレクトリが存在する場合。

#!/bin/bashDIR="/var/log"if ]; then echo "$DIR exists"else echo "$DIR doesn"t exist"fi

同様に、この例では単一の角かっこを使用して、ディレクトリがシェルスクリプト内で事前設定されているかどうかを確認します。

#!/bin/bashDIR="/var/log"if ; then echo "$DIR exists"else echo "$DIR doesn"t exist"fi

3.2:方法2:テストコマンドの使用

この例では、特定のタスクを実行する前に、testコマンドを使用してディレクトリが存在するかどうかを確認します。

#!/bin/bashDIR="/var/log"if test -d $DIR; then echo "$DIR exists"else echo "$DIR doesn"t exist"fi

3.3:方法3:単一行

この例では、単一行形式の単一括弧と二重括弧を使用して確認します。ディレクトリ用。 &&演算子の後のステートメントは、最初の条件がTRUEの場合に実行され、FALSEの場合、||条件のステートメントが実行されます。 。

#!/bin/bashDIR="/var/log"] && echo "$DIR exists" || echo "$DIR doesn"t exist"

の代わりに]を使用することをお勧めしますシェルプログラミングのこのような1つのライナーコードの場合。

&&および||と同様に、テストコマンドを使用して確認できます。ディレクトリが存在する場合

#!/bin/bashDIR="/var/log"test -d $DIR && echo "$DIR exists" || echo "$DIR doesn"t exist"

4.バッシュ/シェル:ディレクトリが存在するかどうかを確認します(空か空でないか)

シェル属性はありませんこのチュートリアルの他のすべての例とシナリオで使用したように。ただし、ディレクトリが空かどうかを確認するために使用できるハックがいくつかあります。

4。1:方法-1:ディレクトリの内容を一覧表示して確認する

この例では、ディレクトリの内容を一覧表示し、出力を抑制してから、終了コードに基づいてディレクトリが空であるか、いくつか含まれているかを確認します。 content

#!/bin/bashDIR="/tmp"if ls -1qA $DIR | grep -q . ; then echo "$DIR is not -empty"else echo "$DIR is empty"fi

NOT(!)条件を設定することで、これを元に戻すこともできます。したがって、次のようになります。

#!/bin/bashDIR="/tmp"if ! ls -1qA $DIR | grep -q . ; then echo "$DIR is empty"else echo "$DIR is not-empty"fi

出力は両方のサンプルスクリプトで同じになります。

4.2:方法2:使用findコマンド

findコマンドを使用してから、出力を抑制して、ターゲットディレクトリにコンテンツがあるかどうかを確認できます。

#!/bin/bashDIR="/tmp"if find -- "$DIR" -prune -type d -empty | grep -q . ; then echo "$DIR is empty"else echo "$DIR is not-empty"fi

4.3:方法-3:コンテンツを一覧表示する

ここでも、ディレクトリが空であるか、一部の属性を使用していないかを確認する簡単な方法がないため、ディレクトリのコンテンツを一覧表示します。出力が得られない場合、ディレクトリは空であるか、空ではありません

#!/bin/bashDIR="/tmp"if ] ; then echo "$DIR is empty"else echo "$DIR is not-empty"fi

5.バッシュ/シェル:テストファイルの属性のリスト

同様に、シェルスクリプトで使用して、シンボリックリンク、ファイルのアクセス許可など、さまざまなファイルタイプを確認できる属性が他にもたくさんあります。

属性 機能
-a FILE FILEが存在します
-b FILE FILEが存在し、ブロック特殊ファイルです。
-c FILE が存在し、文字特殊ファイルです。
-d FILE True if FILEが存在し、ディレクトリです。
FILEが存在する場合はTrue
-f FILE FILEが存在し、通常のファイルである場合はTrue
-g FILE FILEが存在し、そのset-group-idビットが設定されている場合はTrue
-h FILE FILEが存在し、シンボリックリンクである場合はTrue
-k FILE FILEが存在し、その「スティッキー」ビットが設定されている場合はTrue
-p FILE FILEが存在し、名前付きパイプ(FIFO)
-r FILE FILEが存在し、読み取り可能
-s FILE FILEが存在し、サイズがゼロより大きい
-u FILE FILEが存在し、そのset-user-idビットが設定されている場合はTrue
-w FILE FILEが存在し、書き込み可能である場合はTrue
-x FILE FILEが存在し、実行可能である場合はTrue
-G FILE FILEが存在し、有効なグループIDによって所有されている場合はTrue
-L FILE FILEが存在し、シンボリックリンクである場合はTrue
-N FILE FILEが存在し、最後に読み取られてから変更されている場合はTrue
-o FILE FILEが存在し、有効なユーザーが所有している場合はTrueユーザーID
-S FILE FILEが存在する場合はTrueソケットです
FILE1とFILE2が同じデバイスを参照している場合はTrue iノード番号
FILE1 -nt FILE2 FILE1がFILE2よりも新しい(変更日による)、またはFILE1が存在してFILE2が存在する場合not
FILE1 -ot FILE2 FILE1が古い場合はTrue FILE2よりも大きい場合、またはFILE2が存在し、FILE1が存在しない場合

結論

Articles
Previous Post

フランス語でようこそと言う方法

Next Post

ApexSQLツールを使用してリモートアクセスを構成し、リモートSQLServerインスタンスに接続する方法

コメントを残す コメントをキャンセル

最近の投稿

  • 世界で最高の写真学校、2020年
  • ソブリン市民が反政府哲学を道路に持ち込む
  • スタッコ修理費用ガイド
  • マックレーカー
  • Precision Oncology (日本語)

アーカイブ

  • 2021年2月
  • 2021年1月
  • 2020年12月
  • 2020年11月
  • 2020年10月
  • 2020年9月
  • Deutsch
  • Nederlands
  • Svenska
  • Norsk
  • Dansk
  • Español
  • Français
  • Português
  • Italiano
  • Română
  • Polski
  • Čeština
  • Magyar
  • Suomi
  • 日本語
  • 한국어
Proudly powered by WordPress | Theme: Fmi by Forrss.