it-swarm.com.de

Wie aktualisiere ich das Verzeichnis in BASH?

Ich habe ein Verzeichnis, das vom Compiler erzeugte Dateien enthält. Während jeder Neuerstellung wird dieses Verzeichnis bereinigt und nach dem Erstellungsprozess gibt ls eine leere Ausgabe aus. Nachdem ich cd aus dem Verzeichnis und dann wieder zurück bin, funktioniert es richtig. Die Fragen sind:

  1. Gibt es eine andere, elegantere Möglichkeit, ein Verzeichnis zu aktualisieren?
  2. Was passiert eigentlich, wenn Dateien gelöscht und neu erstellt werden? Warum muss ich cd angeben, um den tatsächlichen Verzeichnisinhalt zu sehen?
21
Roman

Ihr Skript entfernt höchstwahrscheinlich das Verzeichnis und nicht nur die Dateien, die sich dort befinden. Wenn Sie also cd haben und das Verzeichnis entfernt wird, führen Sie ls in einem Verzeichnis aus, das nicht wirklich existiert.

Durch cd .. und cd (directory) bewegen Sie sich nach oben und zurück in das (neu erstellte) Verzeichnis, und die Dateien sind dort, wie Sie es erwarten.

Die beste Alternative besteht darin, anstelle von cd in das Verzeichnis und aus dem Verzeichnis heraus den Verzeichnisnamen zu Ihrem ls-Befehl hinzuzufügen und ihn im übergeordneten Verzeichnis auszuführen. Also ls YourSubdirectory statt nur ls.

10
Kent

Es gibt noch einen kürzeren Weg: cd .

42
wjr

Es sieht seltsam aus, ist aber kurz und aktualisiert das Verzeichnis:

cd `pwd`

Beachten Sie, dass dies Back Ticks sind, keine einfachen Anführungszeichen um die pwd

10
user339088

erstellen Sie einen Alias ​​refresh = "cd .. && cd -", der ein Verzeichnis aufruft und dann erneut in das vorherige Verzeichnis wechselt

wenn Sie sicher sind, dass Sie wieder eine Auflistung benötigen, können Sie haben

alias refresh="cd .. && cd - && ls -lrt"

sobald der AILAS erstellt ist, speichern Sie den Alias ​​in Ihrer ~/.bashrc-Datei, indem Sie dies tun

alias | grep refresh >> ~/.bashrc

damit es beim nächsten Login zur Verfügung steht.

2
SK176H

Was @Kent gesagt hat oder: Entferne nicht das Verzeichnis, sondern nur den Inhalt. Auf diese Weise kannst du im Verzeichnis bleiben (ohne "cd .. && cd -") und "ls" macht das, was du erwartet hast.

2
ckujau

Es wäre besser, wenn Sie das Verzeichnis nicht entfernen würden, aber anstelle von cd ..; cd - könnten Sie auch cd $PWD verwenden.

2
Teddy