cd-Befehl Linux und Mystery Flags

cd-Befehl Linux und Mystery Flags

Plattform: CentOS 6.2Schale:tcsh

Ich spiele mit cdeinem BASH-Skript herum und bemerkte das wundersamecd -Möglichkeit, aber es blieben viele Fragen zurück …

  1. Warum das cd -? Ist das nicht redundant mit cd ..?

    BEARBEITEN
    [Wie FatalError anmerkt, bewirken diese beiden Befehle nicht dasselbe … die Antwort lautet also „nein“]

  2. Können Sie mit Flag weiter in Ihren Verlauf zurückgehen -, wie in einem Browser?

    Wenn ich z. B. eingebe cd -, gelange ich zu meinem vorherigen Verzeichnis, aber wenn ich den Befehl dann erneut eingebe, gelange ich zu dem Verzeichnis, aus dem ich gerade gekommen bin, wodurch eine Art Schleife entsteht.

    Wird eine Abkürzung für das Zurückgehen auf mehrere Ebenen unterstützt?

    BEARBEITEN
    Mir ist klar, dass ich mit zurückgehen kann cd .., aber ich hatte gehofft, dass dies ein Tor zu einem weniger wortreichen Deep Back sein könnte, z. B. cd -3vs. cd ../../../... hoffentlich verdeutlicht das, was ich frage …

    BEARBEITEN2
    Was das aktuelle Feedback betrifft, so ..ist es zwar ein spezielles Verzeichnis, aber ich sehe keinen Grund, warum die integrierte Funktion cddes Terminals nicht eine Abkürzung für ../../ ... ../eg verwenden könnte cd ..5oder warum die integrierte Funktion nicht auch einen Verlauf (wie auto pushd/ popd) haben könnte, der aktiviert und wie verwendet werden könnte cd -3. Ich verstehe, dass dies ein gewisses Sicherheits-/Datenschutzrisiko darstellen könnte, aber ich sehe nicht, wie es schlimmer sein könnte, als einen Befehlsverlauf zu speichern, was die meisten Shells/Terminals tun.

  3. Die Manpage für cd, die über man cdund zugänglich ist help cd(sie ist für beide Befehle gleich), listet nur -Ldie -PFlags auf.

    Wenn ich jedoch eingebe, cd --helpwird ausgegeben Usage: cd [-plvn][-|<dir>]..

    Gehe ich recht in der Annahme, dass die anderen Flags und die Option - (Zurück) nicht standardmäßig sind?

  4. Wofür sind die Flags -nund -v?

    Beide scheinen mich zu meinem Home-Verzeichnis zurückzuleiten, das ist alles, was ich durch Experimentieren herausfinden konnte.

Eine kurze Lektüre zu Webressourcen[1][2]bot genau die gleichen Informationen wie die Manpage und beantwortete meine Fragen nicht.

Hinweis: Die zweite oben genannte Linux-zentrierte Ressource cdhatte nur zwei Optionen (was derzeit offensichtlich nicht der Fall ist CentOS), daher meine Annahme, dass diese Funktionalität nicht standardmäßig sein könnte.

Antwort1

  1. cd -ist nicht dasselbe wie cd ... Der cd -Befehl geht an dievorherigeVerzeichnis, in dem Sie sich befanden. Wenn Sie sich beispielsweise in befinden /home/bobund dann ausführen cd /var/log, cd -gelangen Sie durch Ausführen zurück zu /home/bob. cd ..Andererseits gelangt man immer in das übergeordnete Verzeichnis.
  2. Wenn Sie einen solchen Verlauf aufbewahren möchten, empfehle ich Ihnen, sich Folgendes anzusehen: pushdund popdermöglicht Ihnen die Verwendung eines „Verzeichnisstapels“:

    user@host:/etc/init.d$ pushd /var/log
    /var/log /etc/init.d
    user@host:/var/log$ pushd /tmp
    /tmp /var/log /etc/init.d
    user@host:/tmp$ popd
    /var/log /etc/init.d
    user@host:/var/log$ popd
    /etc/init.d
    

    Was das Zurückgehen um mehrere Ebenen im Verzeichnisbaum betrifft, gibt es meines Wissens keine gängige Methode. ..Dies ist keine Funktion der Shell, sondern tatsächlich ein spezieller Verzeichnislink in *nix, der auf das übergeordnete Verzeichnis verweist.

  3. cdist ein integrierter Befehl, daher können seine Flags und Verwendung je nach Shell unterschiedlich sein. Aber im Allgemeinen sollten die Optionen cdauf basheinem System dieselben sein wie auf einem anderen System.

  4. Meine bashShell listet keines dieser Flags auf. Experimentieren Sie mit bashoder tcsh? Wenn Sie verwenden, tcshverwenden Sie im Wesentlichen einen völlig anderen Befehl. Sie möchten ihn also wahrscheinlich dort ausführen bashund damit herumspielen cd.

BEARBEITEN:

Laut der tcshManpage:

Mit -p wird der endgültige Verzeichnisstapel gedruckt, genau wie bei dirs. Die Flags -l, -n und -v haben auf cd dieselbe Wirkung wie auf dirs und implizieren -p.

(Wenn Sie die Einzelheiten lesen möchten, können Sie den Abschnitt darüber lesen dirs.) Es sieht so aus, als würde es im Wesentlichen dazu führen, dass der Verzeichnisstapel gedruckt wird, nachdem der Befehl ausgeführt wurde:

host:43> pushd /etc/init.d
/etc/init.d ~ 
host:44> pushd /var/log
/var/log /etc/init.d ~ 
host:45> pushd /tmp
/tmp /var/log /etc/init.d ~ 
host:46> cd -p
~ /var/log /etc/init.d ~ 
host:47> cd -v
0       ~
1       /var/log
2       /etc/init.d
3       ~
host:48> popd
/var/log /etc/init.d ~ 
host:49> cd -v
0       ~
1       /etc/init.d
2       ~

beide zeigen den Verzeichnisstapel, -vsind aber etwas leichter zu lesen. Die Spitze des Stapels (Element 0) ist das aktuelle Verzeichnis, und 1 ist das Verzeichnis, in das Sie gelangen, wenn Sie es popdeinmal ausführen, und so weiter.

verwandte Informationen