Erstellen Sie Verknüpfungen zu Verzeichnissen über das Terminal


4

Mein Problem ist: Wenn ich programmiere, arbeite ich in Ordnern, die sich in anderen Ordnern befinden, und es ist ein langer Weg, Folgendes einzugeben:

cd /folder1/folder2/.../folderN

Ich weiß, dass es möglich ist, mit eine Verknüpfung zu dem Ordner zu erstellen alias. So wäre es:

alias ep="cd /Users/thi/Dropbox/CurrentProject"

Meine Frage ist, wo soll ich diesen Alias ​​setzen? Drinnen /etc/bashrc? Oder soll ich eine Datei namens erstellen ~/.profileund dort ablegen? Wo soll ich es hinstellen?


Ich denke, was Sie auf die nächste Ebene bringen würde, ist das Erlernen der Shell-Vervollständigung. Die Vervollständigung von bash ist ziemlich einfach, aber zsh hat eine erweiterbare Vervollständigung. Zum Beispiel ls -l P/H/O/Cla<tab>erweitert aufls -l Projects/Home/OpenGL/Clams
Ɱark Ƭ

Antworten:


4

Ich behalte Aliase bei ~/.bash_profile.

Terminal und iTerm 2 öffnen standardmäßig neue Shells als Login-Shells. Wenn bash als interaktive Anmeldeshell aufgerufen wird, liest es, ~/.bash_profileaber nicht ~/.bashrc. Die Terminalemulatoren auf anderen Plattformen öffnen häufig neue Shells als Nicht-Login-Shells, sodass beispielsweise Bash-Reads ~/.bashrcaber nicht ausgeführt werden ~/.bash_profile. Benutzer von OS X verwenden häufig ~/.bash_profiledie persönliche Konfigurationsdatei ~/.bashrcfür andere Plattformen. Es ist jedoch auch möglich, ~/.bashrcvon ~/.bash_profileTerminal oder iTerm 2 zu beziehen oder diese anzuweisen, neue Shells als nicht angemeldete Shells zu öffnen.

Wenn beide ~/.profileund ~/.bash_profileexistieren, liest bash nur , ~/.bash_profilewenn es als interaktive Login - Shell aufgerufen wird. ~/.profilewird auch von anderen Shells und Programmen verwendet, die möglicherweise nicht die gleichen Konfigurationsoptionen wie bash verstehen.

/etc/bashrc gehört root und wird möglicherweise ersetzt, wenn Sie OS X aktualisieren.

Weitere Informationen finden Sie unter man bash|less +^INVOCATIONoder https://www.gnu.org/software/bash/manual/html_node/Bash-Startup-Files.html .


1

Normalerweise legen Sie Alias-Definitionen in derselben Datei ab wie Ihre $PATHDefinitionen, was wahrscheinlich der Fall ist ~/.bashrc.


Technisch gesehen ist ein Alias ​​keine Verknüpfung zu einem Ordner, sondern für jeden Shell-Befehl. So können Sie auch Dinge wie haben

alias heal='xattr -d com.apple.quarantine'
alias la='ls -lFa'
alias ll='ls -lF'
alias ls='ls -FG'
alias show-path='echo -e ${PATH//:/\\n}'

um dir das leben zu erleichtern. Aliase werden durch die Shell ersetzt, wenn Sie ausgeführt werden

heal downloadedFile.dmg

es wird erweitert zu

xattr -d com.apple.quarantine downloadedFile.dmg

und danach ausgeführt. Wenn Sie mehr Flexibilität bei den Parametern benötigen, sollten Sie sich die Shell-Funktionen ansehen (aber das sollte wahrscheinlich eine andere Frage sein).


1

Ich bin kein Experte in Bash, aber ich denke, Sie sollten Ihren Alias ​​in .bashrc in Ihrem Home-Verzeichnis setzen.


Das hat Patrix gesagt. ~ ist eine Shell-Verknüpfung für $ HOME.
Ɱark Ƭ

1

Diese Antwort ordentlich fasst zusammen , was im Idealfall in jedem gehört von ~/.bashrc, ~/.profile, und ~/.bash_profile. In Summe:

  • ~ / .bash_profile sollte sehr einfach sein und nur .profile und .bashrc laden (in dieser Reihenfolge)

  • ~ / .profile hat das Zeug, das NICHT spezifisch mit Bash zusammenhängt, wie Umgebungsvariablen (PATH und Freunde)

  • ~ / .bashrc bietet alles, was Sie von einer interaktiven Befehlszeile erwarten. Eingabeaufforderung, Variable EDITOR, Bash-Aliase für meine Verwendung

    Ein paar andere Anmerkungen:

  • Alles, was für grafische Anwendungen ODER für sh (oder als sh aufgerufene Bash) verfügbar sein soll, MUSS sich in ~ / .profile befinden

  • ~ / .bashrc darf nichts ausgeben

  • Alles, was nur für Login-Shells verfügbar sein sollte, sollte in ~ / .profile gespeichert werden

  • Stellen Sie sicher, dass ~ / .bash_login nicht vorhanden ist.


1

Die kurze Antwort lautet: (allgemein)

Fügen Sie es hinzu ~/.bash_profile

echo 'alias ep="cd $HOME/Dropbox/CurrentProject"' >> ~/.bash_profile

HINWEIS: Zwischen dem Alias ​​/ der Variablen und dem Gleichheitszeichen ("=") und dem Wert sollte kein Leerzeichen sein . Wenn Ihr Wert Leerzeichen enthält, sollte der gesamte Wert in Anführungszeichen gesetzt werden.

Eine bessere Antwort ist: (wahrscheinlich)

Versuchen Sie stattdessen, eine Umgebungsvariable festzulegen. Dies ist wahrscheinlich eher das, was Sie tatsächlich wollen.

echo 'export EP="$HOME/Dropbox/CurrentProject"' >> ~/.bash_profile
echo 'alias ep="cd $EP"' >> ~/.bash_profile

HINWEIS: Auf diese Umgebungsvariablen wird durch Voranstellen des Dollarzeichens ("$") zugegriffen . Bei der Definition sollte jedoch das Dollarzeichen ("$") weggelassen werden.

Eine alternative Antwort lautet: (möglicherweise)

Symbolische Links . AKA. Symlinks . {FKA. Aliase . (Mac OS)}. {BKA. Verknüpfungen . (Windows-Betriebssystem)}.

ln -s <dirA/subB/fileC_in> <dirX/subY/symbZ_out>

HINWEIS: Symlinks werden manchmal durch vorangestelltes kaufmännisches Und-Zeichen ("@") gekennzeichnet .


Bitte besuchen Sie den Website-Chat-Kanal , um die Sperre für diesen Beitrag und zukünftige Änderungen zu besprechen.
Ian C.
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.