GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Tipps/Tricks zur Linux-Kommandozeilennavigation 3 - die CDPATH-Umgebungsvariable

Im ersten Teil dieser Serie haben wir die CD - besprochen Befehl im Detail, und im zweiten Teil haben wir uns ausführlich mit dem pushd befasst und popd Befehle sowie die Szenarien, in denen sie sich als nützlich erweisen.

In Fortsetzung unserer Diskussion über die Aspekte der Befehlszeilennavigation werden wir in dieser Anleitung den CDPATH besprechen Umgebungsvariable durch leicht verständliche Beispiele. Wir werden auch einige Vorabdetails zu dieser Variable besprechen.

Aber bevor wir fortfahren, ist es erwähnenswert, dass alle Beispiele in diesem Tutorial auf Ubuntu 14.04 mit Bash-Version 4.3.11(1) getestet wurden.

Die Umgebungsvariable CDPATH

Selbst wenn Ihre Befehlszeilenarbeit darin besteht, alle Vorgänge in einem bestimmten Verzeichnis durchzuführen – beispielsweise in Ihrem Home-Verzeichnis – müssen Sie beim Wechseln von Verzeichnissen auch absolute Pfade angeben. Stellen Sie sich zum Beispiel eine Situation vor, in der ich mich in /home/himanshu/Downloads befinde Verzeichnis:

$ pwd
/home/himanshu/Downloads

Und die Anforderung ist, zu /home/himanshu/Desktop zu wechseln Verzeichnis. Dazu muss ich normalerweise entweder Folgendes ausführen:

cd /home/himanshu/Desktop/

oder 

cd ~/Desktop/

oder

cd ../Desktop/

Wäre es nicht einfach, wenn ich einfach den folgenden Befehl ausführen könnte:

cd Desktop

Ja, das ist möglich. Und hier kommt die Umgebungsvariable CDPATH ins Spiel. Sie können diese Variable verwenden, um das Basisverzeichnis für die CD zu definieren Befehl.

Wenn Sie versuchen, ihren Wert auszudrucken, werden Sie sehen, dass diese env-Variable standardmäßig leer ist:

$ echo $CDPATH
$

Betrachten wir nun den Fall, den wir bisher besprochen haben, verwenden wir diese Umgebungsvariable, um /home/himanshu zu definieren als Basisverzeichnis für den cd-Befehl.

Der einfachste Weg, dies zu tun, ist:

export CDPATH=/home/himanshu

Und jetzt kann ich das tun, was ich früher nicht konnte - innerhalb von /home/himanshu/Downloads führen Sie cd Desktop aus Befehl erfolgreich.

$ pwd
/home/himanshu/Downloads
$ cd Desktop/
/home/himanshu/Desktop
$

Das bedeutet, dass ich jetzt eine CD in ein beliebiges Verzeichnis unter /home/himanshu machen kann ohne explizit /home/himanshu anzugeben oder ~ oder ../ (oder mehrere ../ ) im cd-Befehl.

Zu beachtende Punkte

Sie wissen jetzt also, wie wir die CDPATH-Umgebungsvariable verwendet haben, um einfach zu/von /home/himanshu/Downloads zu wechseln von/nach /home/himanshu/Desktop . Stellen Sie sich nun eine Situation vor, in der sich im /home/himanshu/Desktop befindet enthält ein Unterverzeichnis namens Downloads , und zu letzterem möchten Sie wechseln.

Aber plötzlich merkt man, dass man einen CD-Desktop macht führt Sie zu /home/himanshu/Desktop . Um sicherzustellen, dass dies nicht passiert, tun Sie Folgendes:

cd ./Downloads

Obwohl der oben genannte Befehl an sich kein Problem darstellt, ist dies ein zusätzlicher Aufwand für Sie (so gering er auch sein mag), insbesondere wenn Sie bedenken, dass Sie dies jedes Mal tun müssen, wenn eine solche Situation auftritt. Eine elegantere Lösung für dieses Problem kann darin bestehen, die CDPATH-Variable ursprünglich folgendermaßen zu setzen:

export CDPATH=".:/home/himanshu"

Das heißt, Sie teilen dem cd-Befehl mit, dass er zuerst im aktuellen Arbeitsverzeichnis nach dem Verzeichnis suchen und dann versuchen soll, /home/himanshu zu durchsuchen Verzeichnis. Ob Sie möchten, dass sich der cd-Befehl so verhält, hängt natürlich ganz von Ihren Vorlieben oder Anforderungen ab. Meine Idee hinter der Diskussion dieses Punktes war, Sie wissen zu lassen, dass diese Art von Situation auftreten kann.

Wie Sie inzwischen verstanden haben, sind nach dem Setzen der CDPATH-env-Variable ihr Wert - oder die darin enthaltenen Pfade - die einzigen Stellen auf dem System, an denen der cd-Befehl nach Verzeichnissen sucht (mit Ausnahme natürlich der Szenarien, in denen in Sie verwenden absolute Pfade). Es liegt also ganz bei Ihnen, sicherzustellen, dass das Verhalten des Befehls konsistent bleibt.

Wenn es ein Bash-Skript gibt, das den cd-Befehl mit relativen Pfaden verwendet, ist es besser, zuerst die CDPATH-Umgebungsvariable zu löschen oder zu deaktivieren, es sei denn, Sie sind damit einverstanden, in unvorhergesehene Probleme zu geraten. Alternativ, anstatt den Export zu verwenden Befehl auf dem Terminal zum Festlegen von CDPATH, können Sie die Umgebungsvariable in Ihrer .bashrc festlegen Datei, nachdem Sie auf interaktive/nicht interaktive Shells getestet haben, um sicherzustellen, dass die Änderung, die Sie vornehmen möchten, nur in interaktiven Shells widergespiegelt wird.

Die Reihenfolge, in der Pfade im Wert der Umgebungsvariablen erscheinen, ist ebenfalls wichtig. Zum Beispiel, wenn das aktuelle Verzeichnis vor /home/himanshu aufgeführt ist , dann sucht der cd-Befehl zunächst nach einem Verzeichnis im aktuellen Arbeitsverzeichnis und wechselt dann zu /home/himanshu . Wenn der Wert jedoch "/home/himanshu:." ist dann wird die erste Suche in /home/himanshu durchgeführt und danach das aktuelle Verzeichnis. Unnötig zu erwähnen, dass dies Auswirkungen auf den cd-Befehl hat und Probleme verursachen kann, wenn Sie die Reihenfolge der Pfade nicht kennen.

Denken Sie immer daran, dass die Umgebungsvariable CDPATH, wie der Name schon sagt, nur für den Befehl cd funktioniert. Das bedeutet, dass Sie sich innerhalb von /home/himanshu/Downloads befinden Verzeichnis können Sie cd Desktop ausführen Befehl, um zu /home/himanshu/Desktop zu wechseln Verzeichnis, aber Sie können kein ls ausführen . Hier ist ein Beispiel:

$ pwd
/home/himanshu/Downloads
$ ls Desktop
ls: cannot access Desktop: No such file or directory
$

Es könnte jedoch einige einfache Problemumgehungen geben. Beispielsweise können wir auf folgende Weise mit minimalem Aufwand erreichen, was wir wollen:

$ cd Desktop/;ls
/home/himanshu/Desktop
backup backup~ Downloads gdb.html outline~ outline.txt outline.txt~

Aber ja, es gibt möglicherweise nicht für jede Situation eine Problemumgehung.

Ein weiterer wichtiger Punkt:Wie Sie vielleicht bemerkt haben, erzeugt der Befehl bei Verwendung des cd-Befehls mit gesetzter CDPATH-Umgebungsvariable den vollständigen Pfad des Verzeichnisses, zu dem Sie wechseln, in der Ausgabe. Unnötig zu erwähnen, dass nicht jeder diese Informationen jedes Mal haben möchte, wenn er den cd-Befehl auf seinem Computer ausführt.

Um sicherzustellen, dass diese Ausgabe unterdrückt wird, können Sie den folgenden Befehl verwenden:

alias cd='>/dev/null cd'

Der oben erwähnte Befehl schaltet die Ausgabe stumm, wenn der cd-Befehl erfolgreich ist, lässt aber zu, dass Fehlermeldungen ausgegeben werden, wenn der Befehl fehlschlägt.

Falls Sie schließlich auf ein Problem stoßen, bei dem Sie nach dem Festlegen der CDPATH-Umgebungsvariable die Tab-Vervollständigungsfunktion der Shell nicht verwenden können, können Sie versuchen, die Bash-Vervollständigung zu installieren und zu aktivieren – mehr dazu hier.

Schlussfolgerung

Die CDPATH-Umgebungsvariable ist ein zweischneidiges Schwert – wenn sie nicht mit Vorsicht und vollständigem Wissen verwendet wird, kann sie Sie in einige komplexe Fallen führen, deren Lösung viel Ihrer kostbaren Zeit in Anspruch nehmen kann. Das bedeutet natürlich nicht, dass Sie es nie versuchen sollten; Bewerten Sie einfach alle verfügbaren Optionen und wenn Sie zu dem Schluss kommen, dass die Verwendung von CDPATH eine große Hilfe wäre, dann machen Sie weiter und verwenden Sie es.

Haben Sie CDPATH wie ein Profi verwendet? Hast du noch mehr Tipps zu teilen? Bitte teilen Sie Ihre Gedanken in den Kommentaren unten mit.


Linux
  1. Generieren Sie Passwörter auf der Linux-Befehlszeile

  2. 8 Tipps für die Linux-Kommandozeile

  3. Verwenden der Kraft in der Linux-Befehlszeile

  4. Haben Sie eine Kuh an der Linux-Befehlszeile

  5. Boxen Sie sich auf der Linux-Befehlszeile ein

Tipps zur Verwendung des Top-Befehls unter Linux

3 Passwort-Manager für die Linux-Kommandozeile

5 interessante Kommandozeilen-Tipps und Tricks in Linux – Teil 1

Tipps und Tricks zur Linux-Befehlszeilennavigation - Teil 1

Meistern Sie die Linux-Befehlszeile

19 Nützliche Tipps und Tricks für die Linux-Befehlszeile