Angenommen, Sie haben einen Alias go
, möchten aber, dass dieser in verschiedenen Verzeichnissen unterschiedliche Aktionen ausführt?
In einem Verzeichnis sollte es ausgeführt werden cmd1
, aber in einem anderen Verzeichnis sollte es ausgeführt werdencmd2
Übrigens, ich habe bereits einen Alias für den Wechsel zu den oben genannten Verzeichnissen. Ist es also möglich, die Aliaszuweisung an den go
Alias anzuhängen foo
?
alias "foo=cd /path/to/foo"
Arbeiten in Bash (?) Unter OSX.
Antworten:
Es ist nicht ganz sicher, wonach Sie fragen, aber ein Alias erweitert sich nur auf das, was sich im Alias befindet. Wenn Sie zwei Aliase haben, können Sie die verschiedenen Befehle, auch Aliase, anhängen.
In jeder anderen Situation können Sie eine Funktion in Ihrer angeben
.bashrc
Wenn Sie mehr Auswahlmöglichkeiten haben, können Sie besser eine Fallstruktur verwenden.
quelle
Ich habe das Gefühl, dass Sie sehr "verzeichnisorientiert" sind, und in diesem Fall passt dies möglicherweise besser zu Ihrer Mentalität.
(Um ehrlich zu sein, halte ich das für eine schlechte Idee. Sie möchten, dass Befehle global sind.)
In
.bashrc
setzenalias go="./.cmd"
(dannsource ~/.bashrc
).Schreiben Sie dann in jedes dieser Verzeichnisse ein Skript mit dem Namen
.cmd
, dann machen Siechmod +x .cmd
einfachgo
Ihr Ding.quelle
touch .TESTNO; echo 2 > .TESTNO
Wenn Sie sich das überlegen , müssen es keine Skripte sein, Sie können einfach eine Datei ( ) in jedes Verzeichnis einfügen und dann in Ihrer Funktion nach dieser Datei suchen und anhand der Testnummer die .TESTNO-Datei verzweigen enthält. Obwohl dies überhaupt nicht schwierig ist, können Sie dafür wahrscheinlich keinen Alias verwenden. Sie müssen eine Funktion verwenden.Ich arbeite an einem Projekt, das genau das erreicht. Probieren Sie es aus: localalias .
Hier ist eine Demo:
Witzigerweise habe ich das tatsächlich
go
als Beispiel in der Demo verwendet. Ich habe keine Verzeichniswechsel angezeigt (etwas, das ich an der Demo ändern sollte), aber die Funktionen mit demla
Befehl sind in der Tat lokal für das Verzeichnis, in dem sie definiert sind.quelle
Ähnliches, aber vorausgesetzt, "go" ist ein Befehl, von dem Sie eine andere Funktionalität in einem bestimmten Verzeichnis wünschen.
quelle
Wenn Sie Ihrem .bashrc die folgende Funktion hinzufügen
Jedes Mal, wenn Sie eine CD in ein Verzeichnis mit einer .aliases-Datei kopieren, wird diese gefunden.
Gehen Sie vorsichtig mit der Sicherheit um, wenn andere Benutzer Dateien auf Ihrem Computer erstellen können.
Mit diesem Trick werden Aliase nie entfernt, aber Sie können in der Funktion so viel Code schreiben, wie Sie möchten.
ondir nutzt diesen Trick und hat eine Menge Schnickschnack .
http://swapoff.org/ondir.html#download
quelle
.bashrc
. (Dies funktioniertcron
zum Beispiel nicht für).