Gibt es eine Möglichkeit, eine Art Alias festzulegen, sodass in folgenden Fällen Folgendes geschieht:
cd some/directory
vim .zshrc
Es tut vim ~/.zshrc
?
Antwort1
Die Antwort ist viel einfacher als Sie denken, denn Sie stellen die falsche Frage.
Wenn Sie eigentlich meinen: „Wie kann ich einen Alias erstellen, der es mir ermöglicht, ~/.zshrc
unabhängig von meinem aktuellen Arbeitsverzeichnis zu bearbeiten?“, dann lautet die Antwort einfach:
alias zshconfig="vim ~/.zshrc"
Dieses Beispiel stammt von mir ~/.zshrc
und ich verwende es oft.
Eine noch bessere Option, vorgeschlagen von@mateen-ulhaqin den Kommentaren unten, wäre:
alias zshrc="vim ~/.zshrc"
Mit anderen Worten: Versuchen Sie nicht, den Dateinamen oder den Pfad zum Dateinamen zu aliasen. Beides ist möglich, kann aber unvorhersehbare Nebenwirkungen haben, die Ihnen später Probleme bereiten, da@Michael-Homerhat darauf hingewiesen.
Da Sie aber wissen, dass Ihr bevorzugtes $EDITOR
ist vim
, benennen Sie einfach den vim
Aufruf dieser bestimmten Datei mit einem Alias, und schon sind Sie fertig. (Es ist viel sicherer, einer bestimmten Kombination von Befehlen und Argumenten einen Alias für eine ungewöhnliche Zeichenfolge zuzuweisen, die außerhalb des Kontexts weniger wahrscheinlich verwendet wird.)
Generell rate ich Ihnen jedoch, sich keine Gedanken über die Optimierung der Zwei-Zeichen-Sequenz zu machen ~/
, sondern sich stattdessen an das Eintippen zu gewöhnen. Machen Sie weiter ... strecken Sie Ihren linken kleinen Finger aus, als wären Sie Eddie Van Halen und üben Tonleitern. (Das wird Ihnen vim
dabei helfen, die Tasten zu meistern, da Sie sich wahrscheinlich daran gewöhnen sollten, die Taste mit dem kleinen Finger zu drücken Esc
!)
Mit zunehmender Tippfähigkeit entwickeln Sie ein Muskelgedächtnis für die ~/
Zeichenfolge, was Ihnen dabei hilft, diese Zeichenfolge zuverlässig einzugeben, wenn Sie auf Dateien in Ihrem Home-Verzeichnis verweisen. Sie tippen sie absichtlich schnell und nicht versehentlich ein.
Der Nachteil bei der Verwendung von Aliasnamen besteht darin, dass diese Sie zwar auf Ihrem Heimcomputer sehr beschleunigen, Sie jedoch verlangsamen, wenn Sie ssh
auf einen Remote-Docker-Container im privaten Subnetz eines Clients zugreifen müssen und feststellen, dass alle Ihre Aliase verschwunden sind.
Antwort2
Ich verstehe den Sinn nicht wirklich, aber ja. Was Sie tun, ist komplizierter, als einem Befehl einfach einen anderen Namen oder einige Standardargumente zu geben. Sie benötigen also eine Funktion, keinen Alias.
function vim {
if [[ $# -eq 1 && $1 == .zshrc && ! -e .zshrc ]]; then
set -- ~/.zshrc
fi
command vim "$@"
}
Erklärung: Wenn Sie ausführen vim
, wird die Funktion aufgerufen. In der letzten Zeile command vim …
wird der externe Befehl aufgerufen und "$@"
ihm werden die Argumente übergeben, die an die Funktion übergeben wurden. Wenn dazwischen genau ein Argument vorhanden ist und dieses Argument die genaue Zeichenfolge ist .zshrc
und im aktuellen Verzeichnis keine aufgerufene Datei vorhanden ist .zshrc
, wird die Befehlszeile durch ersetzt ~/.zshrc
. Passen Sie diese Bedingungen an, wenn sie nicht genau Ihren Wünschen entsprechen.
Antwort3
Vermutlich verwenden Sie zsh als Shell, wasverfügen über eine „globale Alias“-FunktionDamit können Sie Folgendes tun:
% alias -g .zshrc='~/.zshrc'
% echo .zshrc
/home/mwh/.zshrc
Das ist,überalldass das Wort .zshrc
in der Befehlszeile erscheint, wird es durch ersetzt ~/.zshrc
, das dann wie üblich der Tilde-Erweiterung unterliegt. Es muss ein eigenes Shell-„Wort“ sein, daher wird es nicht erweitert, wenn es nur eine Teilzeichenfolge eines längeren Namens ist. Dies funktioniert mit jedem Befehl.
Globale Aliase sind notorisch problematisch, da sie sich wirklich überall und unbemerkt erweitern. Sie könnten sie also beispielsweise rm .zshrc
in einem anderen Verzeichnis ausführen und sie würden Ihre eigenen Dotfiles ins Visier nehmen. Sie gelten auch innerhalb von Shell-Funktionen, sogar in bereits definierten. In diesem Fall ist es relativ unwahrscheinlich, dass es zu Problemen kommt, aber seien Sie sich des Potenzials bewusst. Sie können eine Datei im aktuellen Verzeichnis gezielt mit benennen ./.zshrc
oder die wörtliche Zeichenfolge mit \.zshrc
oder abrufen, indem Sie sie in Anführungszeichen setzen.