Wie man prüft, ob eine Datei in Linux ausführbar ist

LinuxLinuxBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

In diesem Lab lernen Sie, wie Sie in Linux mit verschiedenen Methoden feststellen können, ob eine Datei ausführbar ist. Sie beginnen damit, den test-Befehl mit der Option -x zu verwenden, um die Ausführungsberechtigungen zu prüfen und zu verstehen, wie Sie den Exit-Status interpretieren können.

Als Nächstes werden Sie untersuchen, wie Sie den ls -l-Befehl verwenden können, um detaillierte Dateiberechtigungen anzuzeigen und das Ausführungsflag zu identifizieren. Schließlich lernen Sie, wie Sie den stat-Befehl verwenden können, um die Dateizugriffsinformationen zu untersuchen, was eine weitere Möglichkeit bietet, die Ausführbarkeit zu bestätigen.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/BasicSystemCommandsGroup(["Basic System Commands"]) linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux(("Linux")) -.-> linux/FileandDirectoryManagementGroup(["File and Directory Management"]) linux/BasicSystemCommandsGroup -.-> linux/echo("Text Display") linux/BasicSystemCommandsGroup -.-> linux/test("Condition Testing") linux/BasicFileOperationsGroup -.-> linux/ls("Content Listing") linux/BasicFileOperationsGroup -.-> linux/chmod("Permission Modifying") linux/FileandDirectoryManagementGroup -.-> linux/cd("Directory Changing") subgraph Lab Skills linux/echo -.-> lab-558712{{"Wie man prüft, ob eine Datei in Linux ausführbar ist"}} linux/test -.-> lab-558712{{"Wie man prüft, ob eine Datei in Linux ausführbar ist"}} linux/ls -.-> lab-558712{{"Wie man prüft, ob eine Datei in Linux ausführbar ist"}} linux/chmod -.-> lab-558712{{"Wie man prüft, ob eine Datei in Linux ausführbar ist"}} linux/cd -.-> lab-558712{{"Wie man prüft, ob eine Datei in Linux ausführbar ist"}} end

Prüfen der Ausführbarkeit mit test -x

In diesem Schritt lernen Sie, wie Sie mithilfe des test-Befehls mit der Option -x prüfen können, ob eine Datei ausführbar ist. Der test-Befehl ist ein integrierter Shell-Befehl, der bedingte Ausdrücke auswertet. Die Option -x prüft speziell auf die Ausführungsberechtigung.

Zunächst erstellen wir eine einfache Textdatei in Ihrem ~/project-Verzeichnis. Wir verwenden den echo-Befehl, um etwas Text in eine Datei namens my_script.sh zu schreiben.

echo "echo 'Hello from the script!'" > ~/project/my_script.sh

Jetzt prüfen wir, ob diese Datei ausführbar ist. Standardmäßig hat eine neu erstellte Datei auf diese Weise keine Ausführungsberechtigungen.

Verwenden Sie den test -x-Befehl, gefolgt vom Pfad zur Datei:

test -x ~/project/my_script.sh

Nachdem Sie diesen Befehl ausgeführt haben, sehen Sie keine Ausgabe, wenn der Test erfolgreich ist (das heißt, die Datei ist NICHT ausführbar). Wenn die Datei ausführbar wäre, würde test -x einen Status von 0 zurückgeben, was in der Shell-Skripting üblicherweise als "wahr" oder "erfolgreich" interpretiert wird, aber standardmäßig nichts auf dem Terminal ausgibt.

Um das Ergebnis des test-Befehls zu sehen, können wir den Exit-Status des vorherigen Befehls mit $? prüfen. Ein Exit-Status von 0 bedeutet, dass der Test wahr war (die Datei ist ausführbar), und ein nicht-null-Status (normalerweise 1) bedeutet, dass der Test falsch war (die Datei ist nicht ausführbar).

echo $?

Sie sollten eine Ausgabe von 1 sehen, was darauf hinweist, dass my_script.sh derzeit nicht ausführbar ist.

Jetzt machen wir die Datei mit dem chmod-Befehl ausführbar. chmod wird verwendet, um die Berechtigungen von Dateien und Verzeichnissen zu ändern. Wir verwenden +x, um die Ausführungsberechtigung für den Besitzer der Datei hinzuzufügen.

chmod +x ~/project/my_script.sh

Jetzt prüfen wir erneut die Ausführbarkeit:

test -x ~/project/my_script.sh

Und prüfen den Exit-Status:

echo $?

Diesmal sollte die Ausgabe 0 sein, was bestätigt, dass die Datei jetzt ausführbar ist.

Schließlich versuchen wir, das Skript auszuführen, um die Ausgabe zu sehen:

~/project/my_script.sh

Sie sollten sehen:

Hello from the script!

Dies bestätigt, dass Sie die Datei erfolgreich ausführbar gemacht und ausgeführt haben.

Prüfen der Berechtigungen mit ls -l

In diesem Schritt lernen Sie, wie Sie detaillierte Dateiberechtigungen mithilfe des ls -l-Befehls anzeigen können. Dieser Befehl liefert eine lange Listenansicht und zeigt verschiedene Attribute von Dateien und Verzeichnissen, einschließlich Berechtigungen, Eigentum, Größe und Änderungszeit.

Navigieren Sie in Ihr ~/project-Verzeichnis, wenn Sie nicht bereits dort sind. Sie können den cd-Befehl verwenden:

cd ~/project

Jetzt listen Sie die Dateien in diesem Verzeichnis mit dem ls -l-Befehl auf:

ls -l

Sie sollten eine Ausgabe ähnlich dieser sehen (die genauen Details wie Datum und Uhrzeit variieren):

-rwxr-xr-x 1 labex labex   30 <date> <time> my_script.sh

Lassen Sie uns den ersten Teil der Ausgabe, der die Dateiberechtigungen darstellt, analysieren: -rwxr-xr-x. Diese Zeichenkette aus zehn Zeichen sagt Ihnen viel darüber, wer was mit der Datei tun kann.

Das erste Zeichen gibt den Dateityp an:

  • -: Eine normale Datei (wie unsere my_script.sh)
  • d: Ein Verzeichnis
  • l: Ein symbolischer Link

Die nächsten neun Zeichen sind in drei Gruppen à drei Zeichen unterteilt und stellen die Berechtigungen für Folgende dar:

  1. Besitzer: Der Benutzer, der die Datei besitzt (in diesem Fall labex).
  2. Gruppe: Die Gruppe, der die Datei gehört (ebenfalls labex).
  3. Andere: Alle anderen Benutzer auf dem System.

Innerhalb jeder Gruppe von drei Zeichen werden die Berechtigungen wie folgt dargestellt:

  • r: Lesezugriff (erlaubt das Anzeigen des Dateiinhalts)
  • w: Schreibzugriff (erlaubt das Ändern oder Löschen der Datei)
  • x: Ausführungsberechtigung (erlaubt das Ausführen der Datei als Programm)
  • -: Gibt an, dass die Berechtigung nicht gewährt ist

Für -rwxr-xr-x bedeutet dies:

  • Der Besitzer (labex) hat rwx-Berechtigungen: Lesen, Schreiben und Ausführen.
  • Die Gruppe (labex) hat r-x-Berechtigungen: Lesen und Ausführen, aber nicht Schreiben.
  • Andere haben r-x-Berechtigungen: Lesen und Ausführen, aber nicht Schreiben.

Diese Ausgabe bestätigt, dass der Besitzer (labex) nach dem Verwenden von chmod +x im vorherigen Schritt jetzt die Ausführungsberechtigung (x) für my_script.sh hat.

Sie können auch ls -l verwenden, um die Berechtigungen von Verzeichnissen zu prüfen. Beispielsweise lassen Sie uns die Berechtigungen für das ~/project-Verzeichnis selbst betrachten:

ls -ld ~/project

Die Option -d teilt ls mit, das Verzeichnis selbst aufzulisten, nicht seinen Inhalt. Die Ausgabe könnte so aussehen:

drwxr-xr-x 2 labex labex 4096 <date> <time> /home/labex/project

Hier gibt das erste Zeichen d an, dass es sich um ein Verzeichnis handelt. Die Berechtigungen rwxr-xr-x bedeuten:

  • Der Besitzer (labex) hat Lese-, Schreib- und Ausführungsberechtigungen für das Verzeichnis. Bei einem Verzeichnis ermöglicht die 'Ausführungs'-Berechtigung Ihnen, in das Verzeichnis zu wechseln und auf seinen Inhalt zuzugreifen.
  • Die Gruppe (labex) und Andere haben Lese- und Ausführungsberechtigungen für das Verzeichnis, aber keinen Schreibzugriff.

Das Verständnis der ls -l-Ausgabe ist grundlegend für die Arbeit mit Dateien und Berechtigungen in Linux.

Prüfen des Dateizugriffs mit stat

In diesem Schritt verwenden Sie den stat-Befehl, um detaillierte Informationen über eine Datei zu erhalten, einschließlich ihrer Zugriffs-, Änderungs- und Statusänderungszeiten sowie ihrer Berechtigungen in einem strukturierterem Format als ls -l.

Der stat-Befehl zeigt den Dateistatus an. Er kann besonders nützlich für Skripte sein oder wenn Sie genaue Zeitstempel benötigen.

Lassen Sie uns stat auf die my_script.sh-Datei anwenden, die Sie in den vorherigen Schritten erstellt haben. Stellen Sie sicher, dass Sie sich im ~/project-Verzeichnis befinden oder geben Sie den vollen Pfad zur Datei an.

stat ~/project/my_script.sh

Sie werden eine Ausgabe ähnlich dieser sehen:

  File: /home/labex/project/my_script.sh
  Size: 30              Blocks: 8          IO Block: 4096   regular file
Device: <device_id>     Inode: <inode_number>  Links: 1
Access: (<permissions>/-rwxr-xr-x)  Uid: ( 5000/   labex)   Gid: ( 5000/   labex)
Access: <date> <time>.<nanoseconds> +<timezone_offset>
Modify: <date> <time>.<nanoseconds> +<timezone_offset>
Change: <date> <time>.<nanoseconds> +<timezone_offset>
 Birth: -

Lassen Sie uns einige Schlüsselzeilen in der Ausgabe betrachten:

  • File: Der Name und der Pfad der Datei.
  • Size: Die Größe der Datei in Bytes.
  • Access: (<permissions>/-rwxr-xr-x): Diese Zeile zeigt die Dateiberechtigungen sowohl im oktalen Format (z.B. 0755, was rwxr-xr-x entspricht) als auch im symbolischen Format, wie Sie es von ls -l kennen, an. Sie zeigt auch die Benutzer-ID (Uid) und Gruppen-ID (Gid) des Dateibesitzers und der Gruppe an.
  • Access: Der Zeitpunkt des letzten Zugriffs (Lesen) auf die Datei.
  • Modify: Der Zeitpunkt der letzten Änderung des Dateiinhalts.
  • Change: Der Zeitpunkt der letzten Änderung der Dateimetadaten (z.B. Berechtigungen, Eigentum usw.).
  • Birth: Die Erstellungszeit der Datei (möglicherweise nicht auf allen Dateisystemen verfügbar).

Der stat-Befehl bietet im Vergleich zu ls -l eine detailliertere Ansicht der Dateiinformationen. Er ist besonders hilfreich, wenn Sie Zeitstempel oder die numerische Darstellung der Berechtigungen untersuchen müssen.

Sie können auch stat auf Verzeichnisse anwenden:

stat ~/project

Die Ausgabe wird ähnlich sein, aber der File-Typ wird anzeigen, dass es sich um ein Verzeichnis handelt.

Experimentieren Sie mit stat auf verschiedenen Dateien und Verzeichnissen in Ihrem ~/project-Verzeichnis, um die Unterschiede in der Ausgabe zu sehen.

Zusammenfassung

In diesem Lab haben Sie gelernt, wie Sie prüfen können, ob eine Datei in Linux ausführbar ist, indem Sie den test -x-Befehl verwenden. Sie haben eine einfache Skriptdatei erstellt, test -x verwendet und den Exit-Status (echo $?) überprüft, um ihren anfänglichen nicht ausführbaren Zustand (Exit-Status 1) zu bestätigen. Anschließend haben Sie chmod +x verwendet, um Ausführungsberechtigungen hinzuzufügen und die Änderung mit test -x und echo $? verifiziert, wobei Sie einen Exit-Status von 0 beobachtet haben.

Sie haben auch alternative Methoden zur Prüfung von Dateiberechtigungen untersucht. Mit ls -l haben Sie gelernt, die Berechtigungszeichenkette, insbesondere das 'x'-Zeichen, zu interpretieren, um ausführbare Dateien zu identifizieren. Schließlich haben Sie den stat-Befehl verwendet, um detaillierte Dateiinformationen, einschließlich Zugriffsberechtigungen, anzuzeigen, was eine weitere Möglichkeit bietet, die Ausführbarkeit zu bestätigen.