Überprüfen Sie mit der IF-Schleife, ob eine Datei oder ein Ordner vorhanden ist oder nicht (und mehr)

Ich habe nichts von gesetzt Bashund es ist so, dass ich beim Betreten der wundervollen Welt von Python diesen anderen Freund, der mir so sehr geholfen hat, ein wenig vergessen habe 🙂

Hier habe ich den Bash-Enthusiasten etwas gesagt, wie der Titel schon sagt ... Ich werde Ihnen zeigen, wie Sie überprüfen können, ob sich eine Datei oder ein Ordner im System befindet, indem Sie einfach Folgendes verwenden: if

Wir werden eine .sh-Datei erstellen und ihr Ausführungsberechtigungen erteilen. Dazu reicht es aus, den folgenden Befehl in ein Terminal zu schreiben:

Berühren Sie test.sh && chmod + x test.sh

Dadurch wurde die Datei erstellt (Berühren Sie test.sh) und geben Ihnen auch Ausführungsberechtigungen (chmod + x test.sh.)

Dann schreiben wir Folgendes hinein:

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

Was macht das?

Einfach 😀

In der ersten Zeile - » if [-d / opt /];

Hier fragen wir, ob das Verzeichnis / opt / existiert. Ja Verzeichnis / Ordner, weil die -d bedeutet Verzeichnis oder Ordner.
Falls es dann existiert, drucken wir im Terminal «Ja, es existiert.»(Dies ist Zeile 2 und 3)
Andernfalls und / opt / existiert NICHT, dann werden wir drucken «Nein, es existiert nicht»(Zeilen 4 und 5)
Dann schließen wir in der letzten Zeile (Nummer 6) das Wenn und das wars.

Verwandte Artikel:
Stellen Sie eine Netzwerkverbindung zwischen dem PC und den virtuellen Virtualbox-Maschinen her

Wenn Sie den Test durchführen, wird angezeigt, dass / opt / vorhanden ist.

Wenn Sie möchten, dass ich Ihnen den anderen Text (den nicht vorhandenen) zeige, ändern Sie / opt / für einen anderen Ordner, der in Ihrem System nicht vorhanden ist, z. B.: / Asd /

Wie Sie sehen können, hilft uns -d zu erkennen, ob das Verzeichnis vorhanden ist. Wenn wir nun -d in -f ändern, müssen wir die Existenz von Dateien überprüfen (-d = Verzeichnis, -f = Datei / Datei)

Zum Beispiel:

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

Hier ist die Liste der Optionen:

-d - »Überprüfen Sie, ob ein bestimmtes Verzeichnis vorhanden ist

-f - »Überprüfen Sie, ob eine bestimmte Datei vorhanden ist

-w - »Überprüfen Sie, ob eine bestimmte Datei Schreibberechtigungen hat

-x - »Überprüfen Sie, ob eine bestimmte Datei über Ausführungsberechtigungen verfügt.

Und nun, es gibt nicht viel mehr hinzuzufügen 🙂

Ich weiß, dass dies sehr nützlich und interessant für diejenigen sein wird, die gerne in Bash program programmieren

Grüße


Hinterlasse einen Kommentar

Ihre E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert mit *

*

*

  1. Verantwortlich für die Daten: Miguel Ángel Gatón
  2. Zweck der Daten: Kontrolle von SPAM, Kommentarverwaltung.
  3. Legitimation: Ihre Zustimmung
  4. Übermittlung der Daten: Die Daten werden nur durch gesetzliche Verpflichtung an Dritte weitergegeben.
  5. Datenspeicherung: Von Occentus Networks (EU) gehostete Datenbank
  6. Rechte: Sie können Ihre Informationen jederzeit einschränken, wiederherstellen und löschen.

  1.   Hugo sagte

    Ein anderer Weg, es ohne zu tun, wenn ... dann ... sonst:

    test -f /etc/hosts && elcomando

    Oder auch

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

    Usw.

    1.    KZKG ^ Gaara sagte

      Richtig 😀
      … O_O… Bist du Hugo, Hugo aus Kuba? … Mit Windows8, WTF !!!

      1.    Hugo sagte

        Nun ja, ich mache mich mit diesem Betriebssystem vertraut und wenn ich ehrlich sein muss, ist das einzige, was ich nützlich gefunden habe, der Kopiermanager, ansonsten empfinde ich es persönlich als schmerzhaft, insbesondere die Hybridschnittstelle und die U-Bahn-Anwendungen. Ich mag es weniger als das Vista und das 7 (wenn auch etwas effizienter als diese), was mir auch nicht gefallen hat. Ich benutze es nur, um NFS13 und Skyrim zu spielen, aber dieses Betriebssystem benötigt so viel Platz, dass ich meine Linux-Partition [snif] löschen musste.

        Zu Ihrer Beruhigung werde ich Ihnen jedoch mitteilen, dass ich vorgestern die Arch ISO für Januar heruntergeladen habe und beabsichtige, sie in ihrer x86-64-Version zu testen, sobald ich das Repo erhalte (oder?) habe es?). Jetzt, da ich gesehen habe, dass standardmäßig signierte Pakete verwendet werden, habe ich mehr Selbstvertrauen beim Tauchen.

        Und mein Vater sagte mir auch, dass er mir ein Sony Xperia schicken würde, das ich nutzen möchte, um etwas Programmieren für Android zu lernen, was ein ausstehender Wunsch war. So beruhige dich, ich bin noch nicht auf die dunkle Seite der Macht gegangen, buahahahaha 😉

  2.   Patz sagte

    Mann Test

    1.    MSX sagte

      Sure.

  3.   RAW-Basis sagte

    Wenas! ..

    Wir könnten das gleiche machen .. ..aber das Verzeichnis wird als Parameter übergeben ..

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

    Und wir nennen es:

    ./test.sh / opt /

    Gruß..

  4.   Savo sagte

    IF ist kein Zyklus xD

  5.   Gregory Schwerter sagte

    Es passt zu mir wie ein Handschuh für ein Drehbuch, das ich mache. Ist es gültig, Platzhalter zu verwenden? Um beispielsweise herauszufinden, ob .mp4s vorhanden sind, führen Sie etwas darauf aus.

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

    1.    RAW-Basis sagte

      Ja, es ist absolut gültig.

      Auch durch Parameter .. "* .mp4"

      1.    RAW-Basis sagte

        Zum Beispiel

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

        Wenn Sie es nennen: ./test.sh * .mp4

        Wenn MP4-Dateien gefunden werden, werden sie gelöscht, aber die Dateien in diesem Verzeichnis werden nicht aufgelistet.

        1.    Gregory Schwerter sagte

          Danke für das Feedback und die Tipps! 🙂

        2.    Joaquin sagte

          Du hast das f xD verpasst

          rm -rf $ 1

          Das ist aufregender!

        3.    b1tblau3 sagte

          Wunderbar !!!, Jeden Tag, an dem ich mich mehr in Linux verliebe, wurde Windows in eine dunkle Ecke meiner Festplatte verbannt, die bald gelöscht wird, um dem Licht von Linux Platz zu machen.

          1.    RAW-Basis sagte

            Ausgezeichnet! .. ..dann machen Sie den nächsten Schritt .. und holen Sie es raus ..

            Vor 6 Monaten ca. Ich habe nur GNU / Linux auf allen meinen Maschinen und ich brauche nicht mehr .. ..nicht W $ .. oder Wein .. ..und ich bin mehr als glücklich so ..

            Und ich infiziere meine Umgebung ... da mich jeder mit meinem Arch sieht, schnell, effizient und glücklich ... und sie bitten mich, Linux zu installieren ... ja! ... 😀

        4.    Inukaze sagte

          Sie können sie auch auf verschiedene Erweiterungen überprüfen, Sie können so etwas wie verwenden

          #! / Bin / bash
          Verzeichnis = $ HOME / Downloads

          if [$ Directory]; dann
          echo "Hier ist eine Liste der Dateitypen:"
          echo "mp1, mp2, mp3, mp4, wav, flac, flaad, aud, midi"
          ls {* .mp?, *. wav, *. fla, *. aud * .midi}
          fi

          Mit {} können Sie in diesem Fall mehrere Erweiterungen angeben, indem Sie "?" ist ein Platzhalter, mit dem Sie "Beliebiges Zeichen" nehmen können.

          Ich hoffe, dass Sie lernen,

        5.    pedro sagte

          Ich empfehle den Befehl find [Verzeichnis] ​​[Suchmuster] –exec [Befehl] {} \

      2.    Carlos sagte

        Es funktioniert nicht, ich lege diese Dateien in das Verzeichnis:
        AB20160420.TXT
        AB20160421.TXT
        AB20160422.TXT
        AB20160423.TXT
        AB20160424.TXT
        AB20160425.TXT
        search.sh

        #! / Bin / bash
        PFAD = / tmp / TEST
        cd $ ROUTE
        ls -la | awk '{print »« $ 9}'
        wenn [[-f AB.TXT]]; dann
        echo »Geben Sie die IF ein, wenn AB vorhanden ist
        .TXT "
        fi
        if [-f AB20160422.TXT]; dann
        Echo "Eingabe für eine bestimmte AB-Datei"
        fi

        wenn ich [-f AB setze.TXT] gibt einen Fehler aus
        wenn ich [[-f AB
        .TXT]] gibt keinen Fehler aus, kann die Datei jedoch nicht finden
        Es funktioniert nur, wenn ich eine bestimmte Datei eingefügt habe, zum Beispiel:
        if [-f AB20160422.TXT]; dann

        Ich kann es nicht mit Platzhaltern * zum Laufen bringen oder?

        1.    pedro sagte

          #! / usr / bin / env bash
          #.Kodierung = utf-8.

          KONTSTANTEN

          EXIT_OK = 0
          EXIT_BAD = 66

          BOLD = »\ 033 [1m»
          NC = »\ 033 [0m»
          ROT = »\ 033 [31m»

          wenn [! "$ 1"];
          dann
          Echo "Parameter fehlt"
          Beenden Sie $ EXIT_BAD
          fi

          CD "$ 1"

          files = »ls -h1 $ 1»

          für Datei in $ ($ files); tun
          echo -e "Mit $ BOLD $ file $ nc können Sie hier alles machen"
          erledigt

          Beenden Sie $ EXIT_OK

  6.   MSX sagte

    @KZ, erzähl mehr darüber: "Und das liegt daran, dass ich in die wundervolle Welt von Python eintrete"!

    1.    KZKG ^ Gaara sagte

      HAHAHAHA nah ... Stück für Stück 🙂
      Ich bin noch ein Neuling in Python, ich habe kaum Zeit, Stunden und Stunden dafür zu investieren, also bin ich langsam, ja, langsam, aber sicher in meinem Lernen 😀

  7.   Audoban sagte

    Vielen Dank. Erst gestern habe ich darüber nachgedacht, wie das geht.

  8.   Reichsk sagte

    das mit ncurses ist toll 🙂

  9.   Jazeco sagte

    in einem Wort ... AUSGEZEICHNET!
    Lange Zeit perfektionierte ich ein Skript, um Downloads aus dem Internet durchzuführen, aber ich hatte das Problem, dass es die angeforderten Dateien 1 und erneut herunterlud, ohne die Existenz 1ro überprüfen zu können.
    Sehr gutes Tuto.

  10.   Zulan sagte

    Ein enormer Beitrag, hier aus Chile, wird geschätzt.
    Jeden Tag überrascht mich mehr LINUX angenehm,
    Es lebe die freie Software MIERDAAAA.

  11.   David sagte

    dienen für
    Überprüfen Sie, ob eine Datei aus einem Verzeichnis stammt

  12.   Hainher sagte

    Wenn ich die Existenz einer Datei in einem Pfad «/ tmp / receive» überprüfen möchte, führen Sie einen Befehl aus. Wie wäre das?

    Ich werde sehr dankbar sein

    Grüße

  13.   John sagte

    Lieber, und um durch IF festzustellen, ob die Datei vollständig ausgefüllt ist ???. Ich frage dies, denn wenn Sie die Datei für eine Übertragung füllen, kann es sogar mit der Hälfte der Daten dauern.

    Grüße und vielen Dank für Ihre Antwort.

  14.   Inukaze sagte

    Nun, ich denke, Sie sollten auch ein Beispiel hinzufügen, wie zum Beispiel "Überprüfen Sie, ob es keine" Datei "oder" Verzeichnis "gibt

    Um zu überprüfen, ob es NICHT existiert, verwenden Sie beispielsweise eine Variable->

    Ein Verzeichnis

    #! / Bin / bash
    Verzeichnis = »$ HOME / Testverzeichnis»
    Datei = »$ HOME / Testdatei»

    wenn [! -d "$ Directory"]; dann
    echo "Es gibt kein $ Directory"
    echo "Erstellen ->" $ Verzeichnis "
    mkdir "$ Directory"
    sonst
    echo "Verzeichnis" $ Verzeichnis "existiert bereits
    fi

    wenn [! -d "$ File"]; dann
    echo "Datei $ existiert nicht"
    Echo "Erstellen ->" $ Datei "
    Berühren Sie "$ File"
    sonst
    Echo "Datei" $ Datei "existiert bereits
    fi

    1.    Katekyo sagte

      Wenn Sie das mkdir ausführen, überprüfen Sie später, ob das Terminal es erstellen kann, da es die Bälle zerbrechen kann, wenn es sich um einen Ordner als Root oder System handelt

  15.   Julius vinachi sagte

    Grüße KZKG ^ Gaara eine Abfrage wie ich es tun würde um Curl zu benutzen. Ich würde gerne wissen, wie ich von der Konsole aus eine URL anpinge, um zu sehen, ob sie beispielsweise verfügbar ist http://portal.com/directorio/archivo1.php Wo Datei1 die Besuchs-IPs speichert, muss ich zur Überwachung eines Teams diese PIN jede halbe Stunde erstellen, damit ich über die öffentliche IP informiert bin, da sie sich von Zeit zu Zeit ändert und ich keine Verbindung über ssh herstellen kann.

    Grüße danke im Voraus Gott segne dich.

    1.    KZKG ^ Gaara sagte

      Hallo,

      Zunächst müssen Sie sagen, dass die IP-Variable (zum Beispiel) der Inhalt dieser Datei ist. Dazu müssen Sie:
      1. Laden Sie die Datei herunter
      2. Sehen Sie sich den Inhalt an und holen Sie sich die IP von dort
      3. Diese IP ist die Variable

      Zum Beispiel:
      Hier laden wir die Datei herunter - »wget http://portal.com/directorio/archivo1.php -o Datei.html
      Dann weisen wir einer Variablen ihren Inhalt zu: - »: $ {IP: =` cat file.html`}
      .. vorausgesetzt, der Inhalt dieser Datei hat nur die IP, wenn nicht, müssten Sie mit grep, awk oder head arbeiten.

      Sobald Sie bereits die IP als Variable haben, ist der Rest die einfachste Sache der Welt 🙂

      Wenn Sie möchten, schreiben Sie mir per E-Mail (kzkggaara[at]desdelinux[dot]net) Ich helfe Ihnen gerne weiter

      1.    Julius vinachi sagte

        Vielen Dank kzkggaara sehr dankbar.

  16.   Natalia sagte

    Hallo, ich verstehe nicht viel über Computer und weiß nicht, ob dieser Eintrag mit dem Problem zusammenhängt, das ich habe.

    Ich kommentiere, falls Sie mich lesen, obwohl der Beitrag von vor einem Jahr ist:
    Es stellt sich heraus, dass ich auf meinem Desktop einen Ordner zum Speichern einiger Videos erstellt habe. Nun, ich habe diese Videos gelöscht, weil ich sie nicht mehr brauchte, und jetzt sagt mir dieser Ordner, dass sie nicht existieren (obwohl sie auf meinem Desktop sichtbar sind).

    - Das ist das erste Problem, das ich habe:
    Ich kann den Ordner nicht löschen.

    - Zweites Problem und ich denke wichtiger:
    Beim Versuch, den Ordner zu löschen, habe ich einen PHOTOS-Ordner abgelegt. Wenn ich jetzt den Ordner "existiert nicht" öffne, ist er leer und die FOTOS fehlen.

    Wie kann ich die Fotos wiederherstellen? Ich habe die Option im Ordner "Versteckte Dokumente anzeigen" angegeben, aber der Ordner "FOTOS" wird nicht angezeigt.

    Ich hoffe du kannst wissen wie es gelöst wird.
    Danke.

    1.    valdo sagte

      Es gibt zwei Benutzer, die die Hauptbenutzer sind: root und your_user (z. B. natalia). Sie haben beide persönliche Ordner. your_user in / home und root in / (root-Verzeichnis). Klicken Sie mit der rechten Maustaste auf den Ordner, um zu sehen, wem er gehört. Wenn es sich bei Ihrem Dateimanager um ein Root-Verzeichnis handelt, das je nach verwendeter Umgebung sudo oder gksu oder kdesu verwendet, gehen Sie zum Stammverzeichnis -> root -> Desktop. Dort finden Sie wahrscheinlich die Fotos und können den Ordner löschen. Einige Distributionen, wenn Sie nicht der Eigentümer der Datei oder des Verzeichnisses sind und keine Zugriffsberechtigungen haben, weisen darauf hin, dass Verzeichnis / Datei nicht vorhanden ist. Wenn Sie der Eigentümer sind und kein Root sind, machen Sie dasselbe mit dem Dateimanager mit sudo usw. und gehen Sie zum Stammverzeichnis -> / home -> personal_folder -> Desktop und prüfen Sie, ob die Fotos vorhanden sind und ob Sie sie löschen können der Ordner.
      Wenn dies nicht funktioniert, müssen Sie andere Optionen vom Terminal (Konsole) aus sehen.

  17.   Pedro Manuel Aguayo Munoz sagte

    Hallo, wie geht es dir? Ich mache einen Job in Bash und möchte wissen, wie ich überprüfen kann, ob beispielsweise ein Verzeichnis über die Tastatur eingegeben wurde

    #! / Bin / bash
    Route lesen
    #Enter ~ / Desktop
    #Dann versuche ich, in diesem Verzeichnis zu navigieren
    cd $ path
    # Ich erhalte die folgende Bash-Nachricht: cd: ~ / Desktop: Die Datei oder das Verzeichnis existiert nicht

    Meine Frage ist, was kann ich tun, damit ich es über die Tastatur eingebe und es als Verzeichnispfad nehme?

  18.   Miguel sagte

    Und wie kann ich wissen, ob eine Gruppe existiert?

  19.   Heide sagte

    Gut, ich habe ein Problem in meinem Canaima, wenn ich den Knopf Cunaguaro drücke. Es heißt, dass es keine Datei oder kein Verzeichnis gibt, wie es zur Lösung dieses Problems tun würde, und der Rest öffnet Cunaguaro nicht. Bitte danke.

  20.   Carlos sagte

    Wie macht man das if in BASH, wenn der Dateiname Leerzeichen enthält?
    Zum Beispiel:
    April data.xlsx

    Um zu fragen, ob die Datei existiert

    1.    Manuel Alcocer Jimenez sagte

      Carlos, so:

      if [["$ variable" == Daten \ Monat \ von \ April.xlsx]]; dann echo 'match'; fi

      Sie können auch:
      if [["$ variable" == 'Daten für den Monat April.xlsx']]; dann echo 'match'; fi

      Eine andere Option:
      [["$ Variable" == 'Daten für April.xlsx']] && echo 'Übereinstimmungen' || Echo 'stimmt nicht überein'

      In einigen dunklen Bereichen des Internets wird empfohlen, [[]] anstelle von [] zu verwenden. Wenn Sie Zahlen vergleichen möchten, gilt Folgendes: ((Variable> = 3)) && echo 'Variable ist größer oder gleich 3' | | echo 'Variable ist kleiner als 3'

      Daher für Zahlen:

      if ((number! = 4)); dann echo "$ {number} ist nicht 4"; sonst echo "$ {number} is 4"; fi

  21.   Cäsar Matheus sagte

    Wie können Sie einen Code erstellen, um zu überprüfen, ob das Verzeichnis einen bestimmten Text enthält, um ihn bearbeiten zu können?

    Beispiel:

    if (text1)

    nichts tun

    sonst

    Ändern Sie text1 in text2

  22.   Miguel sagte

    eine Frage, wie wäre es, alle 15 Sekunden zu überprüfen, ob die Datei existiert oder nicht, danke.

  23.   Flussufer sagte

    Hallo,
    diese:
    if [-w / home / Komun / Logs / ti]; dann
    Finden Sie heraus, ob die Datei beschreibbar ist. Es basiert jedoch auf Benutzerberechtigungen. Kann man herausfinden, ob die Gruppe oder die anderen Berechtigungen haben?