Wir verwenden absolute und relative Pfade in der Konsole. Linux-Grundlagen: Einführung in Bash Was sind Inodes?

Nachdem Sie diesen Artikel gelesen haben, werden Sie herausfinden, was es ist bash(Standard-Linux-Befehlsinterpreter), erfahren Sie, wie Sie Standardbefehle verwenden: ls, vgl, mv...den Zweck von Inodes, harten und symbolischen Links und vielem mehr verstehen.

Dieses Tutorial richtet sich an Linux-Neulinge und an diejenigen, die ihr Verständnis der grundlegenden Linux-Prinzipien überprüfen oder verbessern möchten, z. B. das Kopieren und Verschieben von Dateien, das Erstellen von Links und die Verwendung von Standard-Linux-Befehlen sowie Umleitungen und Pipes. In diesem Artikel finden Sie viele Beispiele, die das vorgestellte Material erläutern. Für Anfänger werden die meisten Informationen neu sein, aber für fortgeschrittene Benutzer kann dieses Material ein hervorragendes Werkzeug sein, um vorhandenes Wissen und Fähigkeiten zusammenzufassen.

Einführung in Bash

Hülse

Wenn Sie Linux verwenden, wissen Sie, dass Sie nach der Anmeldung von einer Eingabeaufforderung für den Befehlsinterpreter begrüßt werden. Zum Beispiel dies:

\$

Wenn nach der Anmeldung die grafische Shell geladen wird, müssen Sie, um zum Befehlsinterpreter zu gelangen, einen Terminalemulator starten (gnome-terminal, xfce4-terminal, konsole, xterm, rxvt...) oder zu einem der virtuellen Terminals wechseln Beim Klicken StrgAltF1 oder StrgAltF2 usw.

Die Shell-Eingabeaufforderung auf Ihrem Computer kann von der Abbildung im Beispiel abweichen. Es kann den Benutzernamen, den Computernamen und den Namen des aktuellen Arbeitsverzeichnisses enthalten. Trotz all dieser Unterschiede heißt das Programm, das diese Einladung druckt, „ Hülse"(Shell), und höchstwahrscheinlich ist Ihre Befehls-Shell ein Programm namens bash.

Machst du Bash?

Sie können mit dem folgenden Befehl überprüfen, ob Bash ausgeführt wird:

\$ echo \$SHELL/bin/bash

Wenn Sie bei der Ausführung dieses Befehls eine Fehlermeldung erhalten oder die Ausgabe sich von der im Beispiel unterscheidet, verwendet Ihr System möglicherweise nicht Bash als Befehlsshell. Trotzdem wird der Großteil des Materials relevant sein, wir empfehlen Ihnen jedoch dennoch, auf Bash umzusteigen. Dies kann (sofern Bash auf dem System installiert ist) mit dem Befehl erfolgen:

\$ bash

Was ist Bash

Bash (ein Akronym für „ B unsern- A gewinnen Sch ell") ist der Standard-Befehlsinterpreter auf den meisten Linux-Systemen. Zu seinen Aufgaben gehört die Verarbeitung und Ausführung von Befehlen, mit denen der Benutzer den Computer steuert. Sobald Sie fertig sind, können Sie den Shell-Prozess beenden. Nach dem Drücken der Tasten StrgD, Mannschaften Ausfahrt oder Ausloggen Der Shell-Prozess wird beendet und Sie werden aufgefordert, Ihren Benutzernamen und Ihr Passwort erneut einzugeben.

Verwendung von „cd“

Beginnen wir mit der Navigation mit Bash Dateisystem. Geben Sie zunächst den folgenden Befehl ein:

$ CD/

Mit diesem Befehl haben wir bash angegeben, dass wir in das Stammverzeichnis verschieben möchten - / . Alle Verzeichnisse im System sind in einer Baumstruktur organisiert und / Dies ist sein Anfang (oder seine Wurzel). Team CD dient dazu, das aktuelle Arbeitsverzeichnis zu ändern.

Wege

Um herauszufinden, wo im Dateisystem drin ist dieser Moment Sie befinden sich im (aktuellen Arbeitsverzeichnis) Geben Sie Folgendes ein:

\$ pwd /

Im obigen Beispiel / - Befehlsargument CD- angerufen Weg. Dies ist der Speicherort im Dateisystem, den wir verschieben möchten. In diesem Fall / - Absoluter Pfad, das bedeutet, dass der Pfad relativ zum Stammverzeichnis ist.

Absolute Wege

Hier sind einige Beispiele für absolute Pfade

/dev /usr /usr/bin /usr/local/bin

Wie Sie vielleicht bereits bemerkt haben, haben alle diese Wege eines gemeinsam: Sie beginnen mit ihnen / . Durch Angabe des Pfads /usr/local/bin als Argument für den Befehl CD Wir sagen ihr, sie soll in das Stammverzeichnis gehen / , dann in das usr-Verzeichnis, dann nach lokal und bin. Absolute Pfade beginnen immer mit /

Relative Pfade

Der zweite Pfadtyp wird als relativ bezeichnet. Bash, Team CD und andere Befehle zählen diese Pfade relativ zum aktuellen Verzeichnis. Relative Pfade beginnen niemals mit / . Wenn wir uns zum Beispiel in /usr befinden

\$ cd /usr

Dann können wir über einen relativen Pfad zu /usr/local/bin gehen

\$ cd lokal/bin \$ pwd/usr/local/bin

Verwendung ".."

Relative Pfade können ein oder mehrere Verzeichnisse enthalten «..» . „..“ gibt das übergeordnete Verzeichnis unseres Arbeitsverzeichnisses an. Beispiel:

\$ pwd/usr/local/bin\$ CD.. \$ pwd/usr/local

Wie man sieht, das Team CD..„hebt uns auf eine höhere Ebene“.

Kann hinzufügen .. zum relativen Pfad. Dadurch können wir in ein Verzeichnis wechseln, das sich auf der gleichen Ebene befindet wie die, in der wir uns befinden. Beispiel:

\$ pwd/usr/local\$ cd ../share \$ pwd/usr/share

Beispiele mit relativen Pfaden

Relative Pfade können ziemlich schwierig sein. Hier sind einige Beispiele. Das Ergebnis der Ausführung der Befehle wird nicht angezeigt. Versuchen Sie mithilfe von Bash festzustellen, in welchem ​​Verzeichnis Sie sich befinden.

\$ cd /bin \$ cd ../usr/share/zoneinfo \$ cd /usr/X11R6/bin \$ cd ../lib/X11 \$ cd /usr/bin \$ cd ../bin/../bin

Arbeitsverzeichnis „.“

Bevor wir mit dem Reden über das Team fertig sind CD, es gibt noch ein paar Dinge, die es wert sind, erwähnt zu werden. Erstens gibt es ein weiteres spezielles Verzeichnis «.» , der auf das aktuelle Verzeichnis verweist. Dieses Verzeichnis wird zum Ausführen ausführbarer Dateien verwendet, die sich im aktuellen Verzeichnis befinden.

\$ ./myprog

IN letztes Beispiel myprog ist eine ausführbare Datei im aktuellen Verzeichnis, die zur Ausführung gestartet wird.

cd und das Home-Verzeichnis des Benutzers

Um zu Ihrem Home-Verzeichnis zu gelangen, müssen Sie etwas eingeben

\$ CD

Ohne ein Argument werden Sie mit cd in Ihr Home-Verzeichnis verschoben. Für den Superuser ist das Home-Verzeichnis normalerweise /root und für normale Benutzer- /home/Benutzername/. Was aber, wenn wir eine bestimmte Datei im Home-Verzeichnis angeben möchten? Zum Beispiel als Argument für das Programm 'myprog'? Du kannst schreiben:

\$ ./myprog /home/user/myfile.txt

Die Verwendung absoluter Pfade zu Dateien ist jedoch nicht immer praktisch. Der gleiche Vorgang kann mit durchgeführt werden ~ –Tilden:

\$ ./myprog ~/myfile.txt

~ – ein spezieller Name, der auf das Home-Verzeichnis des Benutzers in Bash verweist.

Home-Verzeichnisse anderer Benutzer

Was aber, wenn wir auf eine Datei im Home-Verzeichnis eines anderen Benutzers verweisen müssen? Dazu müssen Sie nach der Tilde den Namen dieses Benutzers angeben. Um beispielsweise auf die Datei fredsfile.txt zu verweisen, die sich im Home-Verzeichnis des Benutzers fred befindet:

\$ ./myprog ~fred/fredsfile.txt

Linux-Befehle

Einführung in ls

Sie kennen das Team wahrscheinlich bereits ls, das ohne Argumente aufgerufen wird und eine Liste der im Arbeitsverzeichnis gespeicherten Dateien anzeigt:

\$ cd /usr \$ ls X11R6 doc i686-pc-linux-gnu lib man sbin ssl bin gentoo-x86 include libexec portage share tmp distfiles i686-linux info local portage.old src

Wenn Sie die Option angeben -A können Sie alle Dateien sehen, auch die versteckten (deren Namen mit einem Punkt beginnen).

\$ ls -a. bin gentoo-x86 einschließen libexec portage share tmp .. distfiles i686-linux info local portage.old src X11R6 doc i686-pc-linux-gnu lib man sbin ssl

Detaillierte Verzeichnisliste

Nach dem Befehl selbst ls Als Argument können eine oder mehrere Dateien oder Verzeichnisse angegeben werden. Wenn Sie einen Dateinamen angeben, wird der Befehl ls zeigt nur Informationen zu dieser Datei an. Und wenn Sie den Verzeichnisnamen angeben, ls zeigt den gesamten Inhalt an. Möglichkeit '-l' Mannschaften ls kann sehr nützlich sein, wenn Sie neben Dateinamen (Dateirechte, Besitzername, Uhrzeit) auch detailliertere Informationen über sie erfahren möchten Letzte Bearbeitung Datei und deren Größe).

Das folgende Beispiel zeigt die Verwendung der Option '-l' um Informationen zu Dateien anzuzeigen, die im Verzeichnis /usr gespeichert sind

\$ ls -l /usr drwxr-xr-x 7 root root 168 24. November 14:02 22. Dezember 20:57 doc -> share/doc drwxr-xr-x 62 root root 1856 27. Dezember 15:54 gentoo-x86 drwxr-xr-x 4 root root 152 12. Dezember 23:10 i686-linux drwxr-xr-x 4 Root Root 96 24. Nov. 13:17 i686-pc-linux-gnu drwxr-xr-x 54 Root Root 5992 24. Dez. 22:30 include lrwxrwxrwx 1 Root Root 10. 22. Dez. 20:57 Info -> Teilen/Info drwxr-xr -x 28 root root 13552 26. Dez. 00:31 lib drwxr-xr-x 3 root root 72 25. Nov. 00:34 libexec drwxr-xr-x 8 root root 240 22. Dez. 20:57 local lrwxrwxrwx 1 root root 9. Dez. 22 20 :57 man -> share/man lrwxrwxrwx 1 root root 11 8. Dez. 07:59 portage -> gentoo-x86/ drwxr-xr-x 60 root root 1864 8. Dez. 07:55 portage.old drwxr-xr-x 3 root root 3096 22. Dezember 20:57 sbin drwxr-xr-x 46 root root 1144 24. Dezember 15:32 share drwxr-xr-x 8 root root 328 26. Dezember 00:07 src drwxr-xr-x 6 root root 176 24. November 14: 25 ssl lrwxrwxrwx 1 root root 10. 22. Dezember 20:57 tmp -> ../var/tmp

In der ersten Spalte werden Informationen zu den Zugriffsrechten jeder Datei in der Liste angezeigt. (Etwas später werde ich erklären, welcher Buchstabe was bedeutet) Die nächste Spalte zeigt die Anzahl der Links zu jedem Element der Liste. Die dritte und vierte Spalte geben den Besitzer bzw. die Gruppe der Datei an. Die fünfte Spalte ist die Größe. Der sechste Wert ist der Zeitpunkt, zu dem die Datei zuletzt geändert wurde („Zeit der letzten Änderung“ oder „mtime“). Die letzte Spalte ist der Name der Datei oder des Verzeichnisses (Wenn es sich um einen Link handelt, dann nach dem „ –> „steht für den Namen des Objekts, auf das es sich bezieht).

So zeigen Sie nur Verzeichnisse an

Manchmal ist es erforderlich, nur Informationen zu Verzeichnissen und nicht zu ihrem gesamten Inhalt anzuzeigen. Die Option hilft Ihnen bei der Bewältigung dieser Aufgabe '-D', wodurch der Befehl angewiesen wird, nur Informationen zu Verzeichnissen anzuzeigen. Beispiel:

\$ ls -dl /usr /usr/bin /usr/X11R6/bin ../share drwxr-xr-x 4 root root 96 18. Dezember 18:17 ../share drwxr-xr-x 17 root root 576 24. Dezember 09:03 /usr drwxr-xr-x 2 root root 3192 26. Dezember 12:52 /usr /X11R6/bin drwxr-xr-x 2 root root 14576 27. Dezember 08:56 /usr/bin

Rekursive Listen- und Inode-Informationen

Optionsaktion '-R' Gegenteil von Aktion '-D'. Es ermöglicht Ihnen, rekursiv Informationen zu Dateien anzuzeigen, die sich in einem Verzeichnis befinden. Zuerst wird der Inhalt des Verzeichnisses angezeigt Höchststufe, dann der Reihe nach der Inhalt aller Unterverzeichnisse und so weiter. Die Ausgabe dieses Befehls kann ziemlich lang sein, daher stellen wir kein Beispiel zur Verfügung, aber Sie können es selbst ausprobieren, indem Sie es eingeben Befehlszeilels -R' oder ' ls -Rl‘.

Und schließlich die Option '-ich' Wird zum Drucken der Inodes jedes Dateisystemobjekts verwendet.

\$ ls -i /usr 1409 892 Portage 36737 SSL 70744 Gentoo-x86 1585 Lib 5132 Portage. alte 784 tmp

Was sind Inodes?

Jedes Dateisystemobjekt (Datei, Verzeichnis...) hat seine eigene eindeutige Nummer, genannt Inode(Inode-Nummer). Diese Informationen mögen unbedeutend erscheinen, aber das Verständnis der Funktion von Inodes wird Ihnen helfen, viele Dateisystemvorgänge zu verstehen. Schauen wir uns zum Beispiel an «.» Und «..» wie die in jedem Verzeichnis vorhandenen Links. Um zu verstehen, was ein Verzeichnis ist «..» , ermitteln Sie den Inode des Verzeichnisses /use/local

\$ ls -id /usr/local 5120 /usr/local

Wie wir sehen können, ist der Inode des Verzeichnisses /usr/local 5120. Schauen wir uns nun an, welchen Inode das Verzeichnis /usr/local/bin/.. hat:

\$ ls -id /usr/local/bin/.. 5120 /usr/local/bin/..

Es stellt sich heraus, dass die Inodes der Verzeichnisse /usr/local und /usr/local/bin/.. gleich sind! Das bedeutet, dass der Inode 5120 mit zwei Namen referenziert wird: /usr/local und /usr/local/bin/. Das heißt, es handelt sich um zwei verschiedene Namen für dasselbe Verzeichnis. Jeder Inode zeigt auf einen bestimmten Ort auf der Festplatte.

Jedem Inode können mehrere Dateisystemobjektnamen zugeordnet sein. Die Anzahl der Dateisynonyme (Dateisystemobjekte, die auf denselben Inode verweisen) wird durch die Zahl in der zweiten Spalte der Befehlsausgabe angezeigt ls -l‘.

\$ ls -dl /usr/local drwxr-xr-x 8 root root 240 22. Dezember 20:57 /usr/local

Dieses Beispiel zeigt (zweite Spalte), dass das Verzeichnis /usr/local von 8 verschiedenen Dateisystemobjekten referenziert wird. Hier sind ihre Namen:

/usr/local /usr/local/. /usr/local/bin/.. /usr/local/games/.. /usr/local/lib/.. /usr/local/sbin/.. /usr/local/share/.. /usr/local/ src/..

mkdir

Schauen wir uns den Befehl an mkdir. Es wird zum Erstellen neuer Verzeichnisse verwendet. Das folgende Beispiel zeigt die Erstellung von drei neuen Verzeichnissen (tic, tac, toe) im Verzeichnis /tmp

\$ cd /tmp $ mkdir Tic Tac Toe

Standardbefehl mkdir Es kann keine verschachtelte Verzeichnisstruktur erstellt werden. Wenn Sie daher mehrere verschachtelte Verzeichnisse erstellen müssen ( wunderbar), dann müssen Sie diesen Befehl dreimal nacheinander aufrufen:

\$ mkdir won/der/ful mkdir: Verzeichnis „won/der/ful“ kann nicht erstellt werden: Keine solche Datei oder kein solches Verzeichnis \$ mkdir hat gewonnen \$ mkdir wow/der \$ mkdir won/der/ful

Sie können diesen Vorgang vereinfachen, indem Sie die Option hinzufügen '-P' zum mkdir-Befehl. Mit dieser Option können Sie eine verschachtelte Verzeichnisstruktur erstellen:

\$ mkdir -p easy/as/pie

Um mehr über die Funktionen dieses Dienstprogramms zu erfahren, lesen Sie die Hilfe, die vom Befehl aufgerufen wird Mann mkdir. Für fast alle Befehle in diesem Handbuch gibt es Hilfen (z. B Mann ls), außer CD, Weil es ist in Bash integriert (für solche Befehle heißt help so: Hilfe-CD)

berühren

Kommen wir zum Studium der Befehle vgl Und mv, wird zum Kopieren, Umbenennen und Verschieben von Dateien und Verzeichnissen verwendet. Aber vorher erstellen wir mit dem Befehl eine leere Datei im Verzeichnis /tmp berühren:

\$ cd /tmp \$ Berühre Copyme

Team berühren Aktualisiert die letzte Zugriffszeit der Datei (sechste Spalte der Befehlsausgabe). ls -l), wenn sie bereits existiert, oder erstellt eine neue leere Datei, wenn sie noch nicht existiert. Nach diesem Vorgang sollten wir eine leere Datei haben /tmp/copyme.

Echo

Da wir nun eine leere Datei haben, schreiben wir mit dem Befehl eine Textzeichenfolge hinein Echo, die das an sie übergebene Argument ausgibt Standardgerät Ausgabe (in unserem Fall Textterminal).

\$ echo „firstfile“ erste Datei

Um eine Zeile in unsere Datei zu schreiben, leiten wir die Befehlsausgabe dorthin um Echo:

\$ echo „firstfile“ > copyme

Zeichen > (mehr) weist die Shell an, die Ausgabe des Befehls links in die Datei umzuleiten, deren Name rechts steht. Wenn eine Datei mit demselben Namen nicht existiert, wird sie automatisch erstellt. Und wenn eine solche Datei bereits existiert, wird sie überschrieben (der gesamte Inhalt wird gelöscht, bevor unsere Zeile geschrieben wird). Team 'ls -l' zeigt, dass die Größe unserer Datei jetzt 10 Bytes beträgt – neun Bytes werden vom Wort „firstfile“ und ein Byte vom Zeilenvorschubzeichen belegt.

\$ ls -l copyme-rw-r--r-- 1 root root 10. Dez. 28 14:13 copyme

Katze und CP

Um den Inhalt einer Datei an das Terminal auszugeben, verwenden Sie den Befehl Katze:

\$ Katzenkopie erste Datei

Jetzt können wir beginnen, die grundlegende Funktionalität des Befehls zu analysieren vgl. Dieser Befehl benötigt zwei Argumente. Das erste ist der Name der vorhandenen Datei („copyme“), das zweite ist der Name der neuen Kopie, die wir erstellen möchten („copiedme“).

\$ cp copyme hat mich kopiert

Wir können sicherstellen, dass die neue Kopie der Datei eine andere Inode-Nummer hat (das bedeutet, dass wir tatsächlich eine neue separate Datei erhalten haben und nicht nur einen Link zur alten).

\$ ls -i copyme hat mich kopiert 648284 copyme 650704 copyme

mv

Jetzt verwenden wir den Befehl mv um die Datei umzubenennen („copiedme“ –> „movedme“). Die Inode-Nummer ändert sich nach diesem Vorgang nicht, nur der Dateiname ändert sich.

\$ mv hat mich kopiert und mich bewegt \$ ls -ich habe mich bewegt 648284 hat mich bewegt

Die Inode-Nummer ändert sich nur dann nicht, wenn die umbenannte Datei in dem Dateisystem verbleibt, in dem sich die Originaldatei befand. In einem der folgenden Teile dieses Tutorials werden wir uns den Aufbau von Dateisystemen genauer ansehen.

Team mv ermöglicht es Ihnen, Dateien nicht nur umzubenennen, sondern auch zu verschieben. Zum Beispiel, um eine Datei zu verschieben /var/tmp/myfile.txt zum Verzeichnis /Heimanwender Sie müssen den Befehl geben:

\$ mv /var/tmp/myfile.txt /home/user

Die Datei wird in das Home-Verzeichnis des Benutzers verschoben Benutzer auch wenn sie sich in einem anderen Dateisystem befindet (in diesem Fall wird die Datei an einen neuen Speicherort kopiert und anschließend das Original gelöscht). Wie Sie vielleicht schon erraten haben, ändert das Verschieben einer Datei in ein anderes Dateisystem ihren Inode. Dies liegt daran, dass jedes Dateisystem über einen eigenen Satz von Inodes verfügt.

Es ist zu beachten, dass die Möglichkeit besteht, dass die neu zugewiesene Inode-Nummer mit der alten übereinstimmt, diese ist jedoch äußerst gering.

Um mehrere Dateien gleichzeitig in ein Verzeichnis zu verschieben, müssen Sie Folgendes schreiben:

\$ mv /var/tmp/myfile1.txt /var/tmp/myfile2.txt /home/user \$ mv -t /home/user /var/tmp/myfile1.txt /var/tmp/myfile2.txt

Wenn Sie die Option hinzufügen '-v', ein Bericht über den durchgeführten Vorgang wird auf dem Bildschirm angezeigt:

\$ mv -vt /home/user /var/tmp/myfile1.txt /var/tmp/myfile2.txt„/var/tmp/myfile1.txt“ -> „/home/user/myfile1.txt“ „/var/tmp/myfile2.txt“ -> „/home/user/myfile2.txt“

Alle Dateien unter Linux haben eine bestimmte Adresse im Dateisystem, über die wir mit einem Dateimanager oder Konsolendienstprogrammen auf sie zugreifen können. Dies ist ein recht einfaches Thema, aber viele Anfänger haben damit Schwierigkeiten.

Im heutigen kurzen Artikel schauen wir uns an, wie der Pfad zu einer Linux-Datei lautet, was er sein kann, wie man ihn richtig schreibt und vieles mehr. Wenn Sie damit vorher Schwierigkeiten hatten, wird Ihnen nach der Lektüre des Artikels alles völlig klar sein.

Dateipfade unter Linux

Das Linux-Dateisystem unterscheidet sich stark von Windows. Wir werden uns nicht mit seiner Struktur befassen, das wurde früher gemacht. Wir werden uns auf die Arbeit mit Dateien konzentrieren.

Der wichtigste Unterschied besteht darin, dass die Dateiadresse nicht beim Laufwerk, zum Beispiel C:\ oder D:\ beginnt, wie es in Windows der Fall ist, sondern beim Root, dem Root-Systemverzeichnis, mit dem alle anderen verbunden sind. Seine Adresse - /. Und hier müssen wir über Adressen sprechen. Linux-Dateipfade verwenden den Schrägstrich „/“, um Verzeichnisse in der Adresse zu trennen. Dies unterscheidet sich von dem, was Sie unter Windows gewohnt sind – \.

Zum Beispiel, wenn in Windows voll der Pfad zur Datei auf dem Desktop wie folgt aussah: C:\Benutzer\Sergiy\Desktop\, dann wäre der Dateipfad unter Linux einfach /home/sergiy/desktop/. Damit ist bisher alles einfach und klar. Aber es treten noch weitere Probleme auf.

Im Operationssaal Linux-System Es kann mehrere Arten von Dateipfaden geben. Schauen wir uns an, welche Pfade es unter Linux gibt:

  • Vollständiger, absoluter Linux-Pfad vom Dateisystem-Root- Sie haben diesen Pfad bereits im obigen Beispiel gesehen, er beginnt beim Stammverzeichnis „/“ und beschreibt den gesamten Pfad zur Datei;
  • Relativer Linux-Pfad- Dies ist der Pfad zur Datei relativ zum aktuellen Ordner; solche Pfade führen oft zu Verwirrung.
  • Pfad relativ zum Home-Ordner des aktuellen Benutzers.- Pfad im Dateisystem, jedoch nicht vom Stammverzeichnis, sondern vom Ordner des aktuellen Benutzers.

Schauen wir uns nun genauer an, wie diese Pfade unter Linux aussehen, und schauen wir uns auch ein paar Beispiele an, um es völlig klar zu machen. Für die Demonstration verwenden wir das Dienstprogramm ls, mit dem der Inhalt von Verzeichnissen angezeigt werden kann.

Wir haben zum Beispiel ein Verzeichnis wie dieses in unserem Home-Ordner mit vier Dateien darin:

So sieht der vollständige Linux-Pfad zu einer der Dateien aus:

ls /home/sergiy/tmp/file1

Dies ist bereits ein relativer Linux-Pfad, der im Home-Ordner beginnt und die Bezeichnung ~/ hat. Beachten Sie, dass nicht ~, sondern ~/. Dann können Sie Unterordner angeben, in unserem Fall tmp:

Nun, oder der Dateipfad unter Linux, relativ zum aktuellen Ordner:

Der erste Link zeigt auf den aktuellen Ordner (.), der zweite (..) zeigt auf einen höheren Ordner. Das öffnet noch mehr reichlich Möglichkeiten um durch Kataloge zu navigieren. Um beispielsweise auf eine Datei im aktuellen Ordner zu verweisen, können Sie das folgende Konstrukt verwenden:

Beim Anzeigen des Inhalts einer Datei ist dies nutzlos. Aber es ist sehr wichtig, wenn das Programm ausgeführt wird. Da das Programm zunächst durchsucht wird PATH-Umgebung, und nur dann in diesem Ordner. Wenn Sie also ein Programm ausführen müssen, das sich im aktuellen Ordner befindet und genau den gleichen Namen hat wie das Programm im Verzeichnis /bin, müssen Sie ohne expliziten Link nach der Datei im aktuellen Ordner suchen. nichts wird funktionieren.

Solche Konstrukte können beim Kompilieren von Programmen recht häufig auftreten. Sie können alle diese Symbole und Linux-Dateipfade nicht nur im Terminal, sondern auch in jedem verwenden Dateimanager, was sehr praktisch sein kann.

Aber das Linux-Terminal bietet noch mehr Möglichkeiten. Sie können einfache Platzhalterzeichen direkt in Datei- oder Verzeichnisadressen verwenden. Sie können beispielsweise alle Dateien auflisten, die mit f beginnen:

Oder Sie können sogar nicht nur im tmp-Ordner suchen, sondern in jedem Unterordner Ihres Home-Ordners:

Und das alles wird funktionieren, vielleicht ist es nicht immer notwendig und praktisch. Aber in bestimmten Situationen kann es sehr hilfreich sein. Diese Funktionen werden auf der Bash-Shell-Ebene implementiert, sodass Sie sie in jedem Befehl verwenden können. Die Shell prüft, wie viele Dateien gefunden wurden und ruft für jede Datei einen Befehl auf.

Schlussfolgerungen

Das ist alles. Jetzt wissen Sie alles, was Sie brauchen, um nicht nur den Pfad richtig zu schreiben Linux-Datei, sondern führen auch komplexere Aktionen aus, z. B. das Suchen nach Dateien oder das Navigieren durch Verzeichnisse mit dem Befehl cd. Wenn Sie Fragen haben, stellen Sie diese in den Kommentaren!

Zusammenhängende Posts:


Ich habe kürzlich Befehle zum Navigieren in Verzeichnissen im Terminal beschrieben Linux. Also beschloss ich, die Geschichte über die Befehle in der Konsole fortzusetzen. Die Bewegungen scheinen also geklärt zu sein. Nun möchte ich mir etwas genauer ansehen, welche Verzeichnispfade es in der Konsole gibt.

Schauen wir uns zunächst die bekanntesten Pfade zu unseren Dateien und Verzeichnissen an, nämlich absolute Pfade. Öffnen Sie ein Terminal und geben Sie einen Befehl ein, der den vollständigen Pfad zu Ihrem Home-Verzeichnis anzeigt. Ich habe kürzlich hier über dieses Team gesprochen. Eingeben pwd:


:~$pwd
/home/dante


Wie Sie sehen können, zeigte dieser Konsolenbefehl den vollständigen Pfad beginnend mit dem Stammverzeichnis an. Ich habe diese Art der Bewegung durch Verzeichnisse erst kürzlich beschrieben, diese Bewegung unter Verwendung eines absoluten Pfades. Dies sind jedoch nicht alle Möglichkeiten, sich durch die Kategorien unseres Betriebssystems zu bewegen. IN Betriebssystem Linux Es besteht auch die Möglichkeit, relative Pfade zu verwenden.

Relative Pfade in der Konsole zählen Kategorien relativ zu der Kategorie, in der Sie sich befinden. Sie können mit verwendet werden ".." zwei Punkte vor dem Ordner angezeigt, zu dem wir wechseln möchten. Gehen wir irgendwo in unserem Betriebssystem hin. Zum Beispiel in einem Ordner usr und prüfen Sie den Inhalt mit dem Team ls.

dante@dante-1001PXD:~$ cd /usr
dante@dante-1001PXD:/usr$ ls

dante@dante-1001PXD:/usr$

Hier sehen wir eine Liste der verfügbaren Verzeichnisse. Gehen wir nun in das Verzeichnis „ Aktie».

dante@dante-1001PXD:~$ cd /usr/share


So, jetzt sind wir in der Kategorie /usr/share wie wir sehen. Gehen wir nun zu einer Kategorie über, die auf derselben Ebene liegt wie die Kategorie, in der wir uns befinden. Zum Beispiel in der Kategorie „ lokal" Dies kann mit einem absoluten Pfad wie diesem erfolgen.

dante@dante-1001PXD:~$ cd /usr/local

dante@dante-1001PXD:/usr/share$ pwd
/usr/share
dante@dante-1001PXD:/usr/share$


Wie Sie sehen, habe ich Ihnen in der Konsole den vollständigen Pfad zu dem Ort angezeigt, an dem Sie sich befinden. Wir wissen, dass das Verzeichnis „ lokal„ liegt auf der gleichen Ebene wie das Verzeichnis „ Aktie” und wir können einen Befehl wie diesen verwenden.

dante@dante-1001PXD:/usr/share$ cd ../local
dante@dante-1001PXD:/usr/local$


Wie Sie sehen, ist der Abfragebefehl viel einfacher geworden. Dies ist jedoch nur möglich, wenn Sie sich Verzeichnisse merken, die sich auf derselben Ebene wie Ihr Arbeitsverzeichnis befinden, und ich erinnere mich nicht immer an andere Verzeichnisse in der Konsole.

Um in das nächste Verzeichnis zu wechseln, geben Sie einfach den Befehl Ihres Arbeitsverzeichnisses in die Konsole ein. Verwenden Sie für diese Zwecke stattdessen ".." zwei Punkte, "." einen Punkt und Sie bewegen sich relativ zu dem Verzeichnis in der Konsole, in dem Sie sich gerade befinden. Kehren wir zum Verzeichnis zurück /usr und schauen wir uns noch einmal an, was da ist.

dante@dante-1001PXD:/usr/local$ cd /usr
dante@dante-1001PXD:/usr$ ls
Bin-Spiele beinhalten lib local sbin share src
dante@dante-1001PXD:/usr$


Gehen wir nun in das Verzeichnis „ Aktie» relativ zu dem Verzeichnis, in dem wir uns gerade befinden. Geben Sie dazu in die Konsole ein

dante@dante-1001PXD:/usr$ cd ./local
dante@dante-1001PXD:/usr/local$


Wie Sie sehen, kann die Verwendung relativer Pfade die Anzahl der in die Konsole eingegebenen Befehle erheblich reduzieren Linux.