Kann ich die Eingabe von "cd" in einige bekannte Verzeichnisse verkürzen?

11

Ich öffne ein Terminal und kopiere dann viel in dasselbe Verzeichnis, dessen Pfad sehr lang ist.

Das bedeutet, dass ich viel cd'ing und die Registerkarte benutze, um die Dinge viel zu beschleunigen.

Es wäre großartig, wenn ich eine Art Link zu diesem Verzeichnis und dann einfach eine CD dazu hätte, damit ich schnell im tief verschachtelten Verzeichnis wäre.

Ist das möglich?

Breako Breako
quelle
1
Ich habe mehrere (Bash-) Skripte, die kleine (verwandte) Aufgaben erledigen, wie das CD-Arbeiten an einem Github-Projekt und das Ausführen git status. Ich habe auch einige Aliase in meinem .bash_profile. Nicht genau das, wonach Sie fragen, aber verwandt.
Keyser

Antworten:

24

Hier ist der Weg, um häufig mit komplexen Pfaden umzugehen cd.

mkdir ~/Links
ln -s /complexpath/there ~/Links

Dadurch wird die symbolische Verknüpfung erstellt

~/Links/there

Um dieses neue LinksVerzeichnis effizient zu nutzen, wenn Ihre Anmeldeshell bash nur diesen Befehl in Ihr Verzeichnis enthält ~/.profile(der von allen Bourne-Shells verwendet bashwird ksh, zsh…):

CDPATH=~/Links:.
export CDPATH

Dies bedeutet, dass cdIhre Shell für jeden in 2 Verzeichnissen nach einem lokalen Pfadnamen sucht:

~/Links
.

Sie müssen Ihre Sitzung nicht neu starten, um sie zu testen. Führen Sie einfach Folgendes aus:

. ~/.profile

was bedeutet, lesen Sie einfach meine ~/.profile. (Sie müssen es nicht in Ihr ~/.bashrcVerzeichnis einfügen, da Sie nicht dieselbe Variableninitialisierung wiederholen müssen, wenn Sie es nicht ändern.)

Sobald Sie es getestet haben, können Sie Ihre Sitzung neu starten;).

Von nun an müssen Sie jedes Mal, wenn Sie zu möchten, Folgendes eingeben there:

cd there
Dan
quelle
Dies ist die eleganteste allgemeine Lösung, die ich je gesehen habe. Ich mache normalerweise Aliase für gängige Ziele (wie Aliasing cdorafür cd $ORACLE_HOMEund so ...)
bmike
Würde sich jemand für ein einfaches Äquivalent über die Finder-Oberfläche interessieren?
Dan
11

Das Definieren eines Alias ​​ist eine sehr einfache Möglichkeit, eine kurze Abkürzung für einen längeren Befehl zu verwenden. Sobald Sie Ihre Aliase richtig eingestellt haben, können Sie einen Abschnitt in Ihrer .bashrc-Datei (oder einer anderen Startdatei) erstellen, damit Sie diese Aliase nicht für jede neue Shell, die Sie starten, erneut eingeben müssen:

in .bashrc:

alias ws4='ssh qsv-rhws4'
alias httpdlog='cd /var/log/httpd/'
alias EC2='ssh -i BMTestEC2.pem [email protected]'

etc.

Melden Sie sich ab und wieder an (oder führen Sie es einfach aus . ~/.bashrc), und jetzt können Sie einfach eingeben httpdlogund die CD wird ausgeführt. Oder ws4und es führt tatsächlich den Befehl ssh usw. aus.

Dadurch entfällt die Notwendigkeit, (eine große Anzahl) leere Links zu erstellen, die dazu führen, dass auch Ihr Home-Verzeichnis wie ein Chaos aussieht.

Dromendokter
quelle
10

Versuchen Sie es mit Autojump oder z .

Nachdem Sie eines der beiden installiert haben, sind Sie cdwie gewohnt unterwegs und sie lernen Ihre am häufigsten besuchten Verzeichnisse kennen und können zu ihnen wechseln, indem Sie nur einen Teil des Pfads eingeben:

$ cd /very/long/path/foobar
$ cd
$ z foobar
$ echo $PWD
/very/long/path/foobar

Ich bevorzuge z der beiden.

Tyilo
quelle
Ich weiß nichts über Autojump, aber das 'z'-Skript rockt!
Kris
7

Ich empfehle fasd, das Autojump und z ähnelt, aber meiner Meinung nach besser ist. Von der Website:

Fasd (ausgesprochen ähnlich wie "schnell") ist ein Befehlszeilen-Produktivitätssteigerer. Fasd bietet schnellen Zugriff auf Dateien und Verzeichnisse für POSIX-Shells. Es ist von Tools wie Autojump, Z und V inspiriert. Fasd verfolgt Dateien und Verzeichnisse, auf die Sie zugegriffen haben, sodass Sie sie schnell in der Befehlszeile referenzieren können.

Der Name fasd stammt aus den vorgeschlagenen Standardaliasnamen f (Dateien), a (Dateien / Verzeichnisse), s (Anzeigen / Suchen / Auswählen), d (Verzeichnisse).

Fasd ordnet Dateien und Verzeichnisse nach "Häufigkeit", dh nach "Häufigkeit" und "Aktualität". Der Begriff "Häufigkeit" wurde zuerst von Mozilla geprägt und in Firefox verwendet (Link).

Chauncey Garrett
quelle
4

Alternativ können Sie einen Alias ​​erstellen. Wirf das Folgende in so etwas wie .bashrc oder .aliases

alias shortcut='cd ~/path/to/deep/deep/deep/directory/'

Stellen Sie dann sicher, dass die Datei, in der sie sich befindet, sourced ist. Meine Aliase befinden sich in .bashrc, das ich mit dieser Zeile in .bash_profile bezeichne: source ~/.bashrc

Amory
quelle
2

Das Hinzufügen von praktischen Symlinks ist für ein oder zwei spezielle Verzeichnisse in Ordnung, aber sehr schnell wird es schwierig, sie zu verwalten. Eine weitaus bessere Lösung besteht darin , die Umgebungsvariable CDPATH, die für bashund andere Shells verfügbar ist, nur für diesen Zweck zu verwenden.

CDPATHist eine durch Doppelpunkte getrennte Liste (wie PATH) von Orten, an denen nach einem Verzeichnisnamen gesucht werden soll. Es kann sowohl absolute als auch relative Pfadnamen enthalten. Ich habe meine auf so etwas eingestellt export CDPATH=".:..:$HOME/work/repos:$HOME/projects:<etc>".

Mit dieser Einstellung kann ich cd pdftools von überall aus tippen und es wird mich dorthin führen ~/projects/pdftools. (Mit einem Symlink müsste ich eingeben, cd ~/pdftoolswenn ich nicht in meinem HOME-Verzeichnis wäre.) Ich kann auch eine Verknüpfung zu Unterverzeichnissen herstellen : cd pdftools/bin.

Die ..in meinem CDPATHlässt mich geben cd sisterdirstatt cd ../sisterdirusw. Wie Sie erwarten können, wenn ich neue Verzeichnisse erstellen überall in CDPATHsie automatisch gefunden werde cd- keine Notwendigkeit, neue Symlinks oder Aliase zu erstellen.

Diese Funktion wird noch besser, wenn Sie die bash_completionverteilte Datei verwenden, z. B. mit Debian-Systemen. Es wurde nicht mit meiner OS X-Box geliefert, daher habe ich eine Kopie abgerufen und es funktioniert einwandfrei. (Holen Sie es mit brew, oder es einfach manuell herunterladen von hier .) Diese Datei definiert Erweiterungen Commandline Abschluss, so dass ich geben kann cd pdf<TAB>und das pdftoolsVerzeichnis gefunden wird und aus expandiertem überall auf CDPATH.

alexis
quelle
1

Sicher: Erstellen Sie eine symbolische Verknüpfung

ln -s /some/really/long/path/to/somewhere/ ~/shortcut
cd ~/shortcut
dstarh
quelle
1

Ich mag es, Bashmarks zu verwenden, um einfach "Lesezeichen für Verzeichnisse" im laufenden Betrieb zu erstellen.

Siehe die Readme-Datei unter: https://github.com/huyng/bashmarks

Hinweis: Sie müssen git installiert haben, um den dreistufigen Installationsprozess von bashmark zu verfolgen: http://git-scm.com/download/mac

Viel Glück!

Kye Hittle
quelle
1

Alternativ können Sie auch versuchen, eine Fischschale zu installieren.

http://fishshell.com/

Dies hat eine ausgezeichnete Vorhersage für Befehle. Außerdem können Sie auf intelligente Weise Groß- und Kleinschreibung beachten, ohne Fehler zu machen.

Der Nachteil von Fischen ist, dass sie eine eigene Skriptsprache haben und nicht mit Bash kompatibel sind.

kumar0us
quelle
1

Ich tippe nur "cd" ein und ziehe den Ordner aus dem Finder in das Terminal, das den vollständigen Pfad einfügt. Vielleicht nicht ganz so elegant, funktioniert aber für alle Ordner gegen ein paar vorgespeicherte Verknüpfungen?

Ewan Makepeace
quelle