Entweder hatte ich das vor 20 Jahren oder ich habe davon geträumt.
Grundsätzlich gilt:
Wenn wenn Typ blobblob
ich bekomme
blobblob: command not found
Fair genug.
Ich möchte, dass meine Shell, wenn sie diese Fehler erhält - Befehl nicht gefunden - prüft, ob ein Verzeichnis mit diesem Namen existiert ('blobblob') und ob es sich cd
um dieses Verzeichnis handelt.
Ich bin mir sicher, dass es einige Gründe gibt, dies nicht oder mit Vorsicht zu tun.
Ich denke nur, dass es ziemlich ordentlich wäre und ich würde es gerne versuchen, indem ich finde, wie irgendwo (wie hier!).
Ich habe keine Ahnung, wie man die Art von Shell-Programmierung macht, die dies implizieren könnte.
quelle
shopt -s autocd
an der Kommandozeile getippt, als es funktionierte. Jetzt kann ich einfach mit der Eingabe von Verzeichnisnamen beginnen und die automatische Vervollständigung verwenden. Dann drücke ich die Eingabetaste und die Shellcd
in das Verzeichnis. So cool !cd
ist nicht so schwer zu tippen, und die meisten Mechanismen zum Vervollständigen von Registerkarten sind intelligenter, wenn Sie ihnen mehr Kontext geben.autocd
shopt wurde in der Bash-Version 4 hinzugefügt. Daher ist es unter macOS (das noch die Bash-Version 3.xx hat) nur verfügbar, wenn eine alternative, neuere Bash installiert ist (z. B. über Homebrew).Das Dienstprogramm zum automatischen Überspringen bietet einen ähnlichen Mechanismus mit einer Liste der am häufigsten verwendeten Verzeichnisse. Es erfordert jedoch die zusätzliche Mühe des Tippens,
j
Spaceaber dies wird durch häufiges Erraten des richtigen Wertes ausgeglichen.Dies ist das DWIM am nächsten, das ich bisher verwendet habe.
quelle
Ich habe einmal ein nützliches Skript für einen ähnlichen Zweck erstellt, mit einer Funktion fcd für find-n-cd.
Sie tippen
fcd foo
und 3 Dinge können passieren:"no such directory " $1
Es ist insofern ähnlich, als Sie nicht den gesamten Pfad eingeben müssen, sondern die Funktion explizit aufrufen müssen.
Sie müssen
source
die Funktion (source fcd.sh
|. fcd.sh
) ausführen und können sie nicht als Skript aufrufen, dacd
dies sonst nur im Kontext des Skripts geschehen würde und Sie nach Abschluss sofort wieder in Ihrem Startverzeichnis wären.Da es mit funktioniert
locate
, ist es ziemlich schnell beim Auffinden von Verzeichnissen (aber nicht immer auf dem neuesten Stand).Leerzeichen in Verzeichnisnamen werden nicht ordnungsgemäß verarbeitet. Wenn Sie eine elegante Lösung für das Problem haben, würde ich mich freuen.
quelle
cd
automatisch, ohne einen Befehl einzugeben. Diese Antwort eignet sich besser für die Schnellnavigation im Terminal ./etc/bash.bashrc
Ubuntu gibt es einen,function command_not_found_handle
der so aussieht, als könnte er geändert werden.Das funktioniert auch,
..gegeben, dass Sie ein benutzerdefiniertes cdf.sh-Skript (unten) in der Shell eingerichtet haben. Bei einem Verzeichnis als Parameter gelangt dieses Skript nur zum übergeordneten Verzeichnis für das gefundene Verzeichnis. Fügen Sie die folgende Zeile in Ihre .bashrc- oder .zshrc-Datei ein.
Fügen Sie diesen Code in die Datei ~ / bin / cdf.sh ein, die Sie neu erstellen müssen.
quelle
Gib das in dein
~/.bashrc
quelle