IFループを使用して、ファイルまたはフォルダーが存在するかどうか(およびそれ以上)を確認します

私は何も入れていません Bash、そしてそれは私がPythonの素晴らしい世界に入っている間、私をとても助けてくれたこの他の友人について少し忘れていたということです🙂

ここに、タイトルにあるように、Bash愛好家のために何かを置きます...システムにファイルまたはフォルダーがあるかどうかを確認する方法を、以下を使用して説明します。 if

.shファイルを作成し、実行権限を付与します。このために、ターミナルに次のコマンドを入力するだけです。

test.sh && chmod + xtest.shをタッチします

これが行ったことは、ファイルを作成することです(test.shに触れます)また、実行権限を付与します(chmod + x test.sh)

次に、その中に次のように書きましょう。

if [ -d /opt/ ];
then
echo "Sí, sí existe."
else
echo "No, no existe"
fi

これは何ですか?

シンプル😀

最初の行で-» if [-d / opt /];

ここで、/ opt /ディレクトリは存在しますか? はいディレクトリ/フォルダ、なぜなら -d ディレクトリまたはフォルダを意味します。
次に、存在する場合は、ターミナルで印刷します«はい、存在します。»(これは2行目と3行目です)
それ以外の場合、/ opt /が存在しない場合は、«を出力します。いいえ、存在しません»(4行目と5行目)
次に、最後の行(番号6)で、ifを閉じます。これで終わりです。

関連記事
PCとVirtualbox仮想マシン間のネットワーク接続を確立します

テストを実行すると、/ opt /が存在することが示されます。

他のテキスト(存在しないテキスト)を表示したい場合は、システムに存在しない他のフォルダーを変更/選択/します。例:/ asd /

ご覧のとおり、-dはディレクトリが存在するかどうかを知るのに役立ちますが、-dを-fに変更すると、ファイルの存在を確認できます(-d =ディレクトリ、-f =ファイル/ファイル)

例えば:

if [ -f /etc/hosts ];
then
echo "Sí, sí existe."
else
echo "No, no existe"
fi

オプションのリストは次のとおりです。

-d -»特定のディレクトリが存在するかどうかを確認します

-f -»特定のファイルが存在するかどうかを確認します

-w -»特定のファイルに書き込み権限があるかどうかを確認します

-x -»特定のファイルに実行権限があるかどうかを確認します。

そして、追加するものはそれほど多くありません🙂

これは、Bashでプログラムするのが好きな人にとって非常に便利で興味深いものになることを私は知っています😉

よろしく


42コメント、あなたのコメントを残してください

コメントを残す

あなたのメールアドレスが公開されることはありません。 必須フィールドには付いています *

*

*

  1. データの責任者:MiguelÁngelGatón
  2. データの目的:SPAMの制御、コメント管理。
  3. 正当化:あなたの同意
  4. データの伝達:法的義務がある場合を除き、データが第三者に伝達されることはありません。
  5. データストレージ:Occentus Networks(EU)がホストするデータベース
  6. 権利:いつでも情報を制限、回復、削除できます。

  1.   ヒューゴー

    ifなしでそれを行う別の方法…then..else:

    test -f /etc/hosts && elcomando

    またはまた

    test ! -f /etc/hosts && echo "no se encontró el archivo"

    等。

    1.    KZKG ^我愛羅

      そうです😀
      …O_O…あなたはヒューゴ、キューバのヒューゴですか? …Windows8、WTFを使用しています!!!

      1.    ヒューゴー

        はい、私はこのOSに慣れてきました。率直に言って、私が役立つと思ったのはコピーマネージャーだけです。そうでなければ、特にハイブリッドインターフェイスとメトロアプリケーションで個人的に苦痛を感じます。 私はVistaや7よりも好きではありませんが(これらより少し効率的ですが)、どちらも好きではありませんでした。 私が使用しているのはNFS13とSkyrimを再生することだけですが、このOSは非常に多くのスペースを占有しているため、Linuxパーティション[snif]を削除する必要がありました。

        ただし、安心のために、昨日の86月にArch ISOをダウンロードしたので、レポを入手したらすぐにx64-XNUMXバージョンで試してみる予定です(入手しますか?)。 デフォルトで署名付きパッケージを使用しているのを見たので、ダイビングの自信が増しました。

        また、父は私にSony Xperiaを送ってくれると言っていました。これを利用して、Androidのプログラミングを学びたいと思っていましたが、これは保留中の願いでした。 落ち着いて、私はまだ力の暗い側に行っていません、buahahahaha😉

  2.   パッツ

    男テスト

    1.    MSX

      かしこまりました。

  3.   RAW-基本

    ウェナス!..

    同じものを作ることもできますが、ディレクトリはパラメータとして渡されます。

    if [ -d $1 ];
    then
    echo "Sí, sí existe."
    else
    echo "No, no existe"
    fi

    そしてそれを次のように呼びます:

    ./test.sh / opt /

    挨拶..

  4.   サボ

    IFはサイクルxDではありません

  5.   グレゴリオエスパダス

    それは私がやっているスクリプトの手袋のように私に合います。 ワイルドカードを使用することは有効ですか? たとえば、.mp4があるかどうかを確認するには、それらに対して何かを実行します。

    if [-f * .mp4];
    ...

    1.    RAW-基本

      はい、それは完全に有効です..

      パラメータを介しても.. "* .mp4"

      1.    RAW-基本

        例えば

        if [ -f $1 ];
        then
        rm -r $1
        else
        ls
        fi

        あなたがそれを呼ぶ場合:./ test.sh * .mp4

        .mp4ファイルが見つかった場合は、それらを削除します.. ..ただし、そのディレクトリ内のファイルは一覧表示されません。

        1.    グレゴリオエスパダス

          フィードバックとヒントをありがとう! 🙂

        2.    ホアキン

          あなたはfxDを逃しました

          rm -rf $ 1

          これはもっとエキサイティングです!

        3.    b1tblu3

          素晴らしい!!!、私がLinuxに恋をする毎日、Windowsはハードドライブの暗い隅に追いやられており、Linuxの光に道を譲るために消去されようとしています。

          1.    RAW-基本

            すばらしい!.. ..次に、次のステップに進みます..そしてそれを取り出します..

            約6ヶ月前私はすべてのマシンにGNU / Linuxしかなく、それ以上は必要ありません.. .. W $ ..やWine ....そして私はそのように幸せです..😉

            そして、私は私の周囲に感染しています..誰もが私のアーチで私を見て、速く、効率的で幸せです....そして彼らは私にLinuxをインストールするように頼みます....ええ!..😀

        4.    犬風

          また、さまざまな拡張子を確認することもできます。次のようなものを使用できます。

          #!/ bin / bashに
          ディレクトリ= $ HOME /ダウンロード

          if [$ディレクトリ]; その後
          echo "ファイルタイプのリストは次のとおりです:"
          echo "mp1、mp2、mp3、mp4、wav、flac、flaad、aud、midi"
          ls {* .mp?、*。wav、*。fla、*。aud * .midi}
          fi

          {}を使用すると、この場合は「?」を使用して複数の拡張子を指定できます。 はワイルドカードで、「任意の文字」を取得できます。

          私はあなたが学ぶ願っ

        5.    ペドロ

          コマンドfind [directory] ​​[search_pattern] –exec [command] {} \をお勧めします

      2.    カルロス

        それは機能しません、私はこれらのファイルをディレクトリに置きました:
        AB20160420.TXT
        AB20160421.TXT
        AB20160422.TXT
        AB20160423.TXT
        AB20160424.TXT
        AB20160425.TXT
        search.sh

        #!/ bin / bashに
        パス= / tmp /テスト
        cd $ ROUTE
        ls -la | awk '{print»«$ 9}'
        if [[-f AB。TXT]]; その後
        エコー»ABがある場合はIFを入力します
        。TXT "
        fi
        if [-f AB20160422.TXT]; その後
        echo "特定のABファイルの入力"
        fi

        [-fABを置くと.TXT]はエラーを出します
        [[-f AB
        .TXT]]エラーは発生しませんが、ファイルが見つかりません
        たとえば、特定のファイルを配置した場合にのみ機能します。
        if [-f AB20160422.TXT]; その後

        ワイルドカードで動作させることができません*または?

        1.    ペドロ

          #!/ usr / bin / env bash
          #.エンコーディング= utf-8.

          定数

          EXIT_OK = 0
          EXIT_BAD = 66

          太字=»\ 033 [1m»
          NC =»\ 033 [0m»
          赤=»\ 033 [31m»

          もし[! "$ 1"];
          その後
          エコー「パラメータがありません」
          終了$ EXIT_BAD
          fi

          cd "$ 1"

          ファイル=»ls-h1 $ 1»

          $内のファイルの場合($ファイル); 行う
          echo -e "$ BOLD $ file $ ncここで何でもできます"
          行われ

          終了$ EXIT_OK

  6.   MSX

    @KZ、これについてもっと教えてください:«そしてそれは私がPythonの素晴らしい世界に入っているからです»!

    1.    KZKG ^我愛羅

      HAHAHAHAいや...少しずつ🙂
      私はまだPythonの初心者であり、それに何時間も費やす時間がほとんどないので、私は遅いですはい、遅いですが、私の学習では確かです😀

  7.   オードバン

    どうもありがとうございました😀昨日、私はこれを行う方法を考えていました。

  8.   ライヒスク

    これはncursesで素晴らしいです🙂

  9.   ジャゼコ

    一言で…素晴らしい!
    長い間、インターネットからダウンロードするためのスクリプトを完成させていましたが、要求されたファイルを1回ダウンロードし、その存在を確認できないという問題がありました。
    とても良いツト。

  10.   ズラン

    ここチリからの多大な貢献に感謝します。
    毎日、より多くのLINUXが嬉しい驚きを感じます。
    長生きする無料ソフトウェアMIERDAAAA。

  11.   デイビッド

    のために役立つ
    ファイルがディレクトリからのものかどうかを確認します

  12.   グロバー

    パス«/ tmp /レシーバー»内のファイルの存在を確認したい場合は、任意のコマンドを実行します。どのようになりますか?

    とてもありがたいです

    よろしく

  13.   ファン

    親愛なる、そしてファイルが完全に入力されているかどうかをIFによって決定する???。 送信のためにファイルを埋めるとき、半分のデータでもそれを取ることができるので、私はこれを尋ねます。

    ご返信いただきありがとうございます。

  14.   犬風

    たとえば、「ファイル」や「ディレクトリ」など、「存在しないことを確認する」などの例も追加する必要があると思います。

    存在しないことを確認するには、たとえば変数を使用します->

    ディレクトリ

    #!/ bin / bashに
    ディレクトリ=»$ HOME /テストディレクトリ»
    ファイル=»$ HOME /テストファイル»

    もし[! -d "$ディレクトリ"]; その後
    echo "$ディレクトリはありません"
    echo "作成->" $ディレクトリ "
    mkdir "$ Directory"
    ほかに
    echo "ディレクトリ" $ディレクトリ "はすでに存在します
    fi

    もし[! -d "$ファイル"]; その後
    echo "ファイル$は存在しません"
    echo "作成->" $ファイル "
    「$ファイル」をタッチ
    ほかに
    echo "ファイル" $ファイル "はすでに存在します
    fi

    1.    カテキョウ

      後でmkdirを実行するときに、ルートまたはシステムhhahとしてのフォルダーである場合、ボールを壊す可能性があるため、ターミナルがそれを作成できるかどうかを確認します

  15.   フリオ・ヴィナチ

    挨拶KZKG ^ Gaaraは私がcurlを使用するのと同じようにクエリを実行します。 たとえば、コンソールからURLにpingを実行して、それが利用可能かどうかを確認する方法を知りたいのですが。 http://portal.com/directorio/archivo1.php file1が訪問のIPを保存する場所は、XNUMX分ごとにそのピンを作成する必要があるチームを監視するためのものです。これにより、パブリックIPは時々変更され、sshで接続できないため、パブリックIPを認識できます。 。

    よろしくお願いします神のご加護を。

    1.    KZKG ^我愛羅

      こんにちは、

      まず、IP変数(たとえば)がそのファイルのコンテンツであると言う必要があります。これには、次のことを行う必要があります。
      1.ファイルをダウンロードします
      2.コンテンツを表示し、そこからIPを取得します
      3.そのIPは変数です

      例えば:
      ここでファイルをダウンロードします-»wget http://portal.com/directorio/archivo1.php -o ファイル.html
      次に、変数にその内容を割り当てます。-»:$ {IP:= `cat file.html`}
      ..そのファイルのコンテンツにIPしかないと仮定すると、そうでない場合は、grep、awk、またはheadを使用する必要があります。

      IPを変数として使用すると、残りは世界で最も簡単なものになります🙂

      Si quieres me escribes al email (kzkggaara[at]desdelinux[dot]net) que con gusto te ayudo

      1.    フリオ・ヴィナチ

        どうもありがとうkzkggaaraとても感謝しています。

  16.   ナタリア

    こんにちは、私はコンピューティングについてあまり理解しておらず、この投稿が私が抱えている問題に関連しているかどうかもわかりません。

    投稿はXNUMX年前のものですが、あなたが私を読んだ場合に備えてコメントします。
    いくつかのビデオを保存するために、デスクトップにフォルダーを作成したことがわかりました。 さて、私はそれらをもう必要としなくなったのでそれらのビデオを削除しました、そして今このフォルダはそれが存在しないことを私に告げます(それは私のデスクトップに表示されていますが)。

    -それは私が持っている最初の問題です:
    フォルダを削除できません。

    -XNUMX番目の問題と私はもっと重要だと思います:
    フォルダーを削除するために、PHOTOSフォルダーを配置しました。 「存在しない」フォルダを開くと、空で写真がありません。

    写真を復元するにはどうすればよいですか? 「非表示のドキュメントを表示する」フォルダ内にオプションを指定しましたが、PHOTOSフォルダが表示されません。

    それがどのように解決されるかをあなたが知っていることを願っています。
    ありがとう。

    1.    ヴァルド

      主なユーザーは、rootとyour_userのXNUMX人です(たとえば、natalia)。 どちらにも個人用フォルダがあります。 your_user in / homeおよびrootin /(ルートディレクトリ)。 フォルダを右クリックして、そのフォルダが誰に属しているかを確認します。 使用する環境に応じて、sudo、gksu、またはkdesuを使用してファイルマネージャーでrootの場合は、rootディレクトリ-> root-> Desktopに移動すると、おそらく写真が見つかり、フォルダーを削除できます。 ファイルまたはディレクトリの所有者ではなく、アクセス許可がない場合の一部のディストリビューションは、ディレクトリ/ファイルが存在しないことを通知します。 あなたが所有者であり、rootでない場合は、sudoなどを使用してファイルマネージャーで同じことを行い、rootディレクトリ-> /ホーム-> personal_folder->デスクトップに移動して、写真がそこにあるかどうか、フォルダーを削除できるかどうかを確認します。
      これが機能しない場合は、ターミナル(コンソール)から他のオプションを確認する必要があります。

  17.   ペドロマヌエルアグアヨムニョス

    こんにちは、お元気ですか?私はbashで仕事をしています。たとえば、キーボードから入力されたディレクトリがあるかどうかを確認する方法を知りたいです。

    #!/ bin / bashに
    ルートを読む
    #Enter〜 /デスクトップ
    #次に、そのディレクトリをナビゲートしようとします
    cd $パス
    #次のbashメッセージが表示されます:cd:〜/デスクトップ:ファイルまたはディレクトリが存在しません

    私の質問は、キーボードから入力してディレクトリパスとして使用するにはどうすればよいですか?

  18.   ミゲル

    そして、どうすればグループが存在するかを知ることができますか?

  19.   気高い

    良い私はカナイマに問題があります。cunaguaroボタンを押すと、その問題を解決するためのファイルまたはディレクトリがないと表示され、残りはcunaguaroを開きません。ありがとうございます。

  20.   カルロス

    ファイル名にスペースが含まれている場合、BASHでifをどのように実行しますか?
    例えば:
    XNUMX月のdata.xlsx

    ファイルが存在するかどうかを確認するには

    1.    マヌエルアルコサーヒメネス

      カルロス、このように:

      if [["$ variable" == Data \ month \ of \ April.xlsx]]; 次に、エコー '一致'; fi

      次のこともできます。
      if [["$ variable" == 'April.xlsxの月のデータ']]; 次に、エコー '一致'; fi

      他の選択肢:
      [[«$変数»== 'April.xlsxのデータ']] && echo '一致' || エコー 'が一致しません'

      インターネットの一部の暗い地域では、[]の代わりに[[]]を使用することをお勧めします。数値を比較する場合は、次のようにします。((variable> = 3))&& echo '変数は3'以上|| echo '変数は3未満です'

      したがって、数字の場合:

      if((number!= 4)); 次に、echo "$ {number} is not 4"; それ以外の場合、echo "$ {number} is 4"; fi

  21.   セザールマテウス

    ディレクトリに特定のテキストがあるかどうかを検証して編集できるようにするコードを作成するにはどうすればよいですか。

    例:

    if(text1)

    何もしない

    ほかに

    text1をtext2に変更します

  22.   ミゲル

    質問ですが、ファイルが存在するかどうかを15秒ごとに確認するにはどうすればよいでしょうか。ありがとうございます。

  23.   河岸

    こんにちは、
    この:
    if [-w / home / Komun / Logs / ti]; その後
    ファイルが書き込み可能かどうかを確認します。 ただし、これはユーザーのアクセス許可に基づいています。 グループまたは他の人が権限を持っているかどうかを確認するために行うことはできますか?