Ich suche nach einer Möglichkeit, den folgenden Alias für jeden Dateinamen zu verwenden.
alias dim='cd /home/jason/Documents; vim *the desired file*; cd'
Ich frage mich, ob es eine Möglichkeit gibt, diesen Alias so zu ändern, dass ich einen beliebigen Dateinamen als solchen eingeben kann:
dim *the desired file*
Und trotzdem das gleiche Ergebnis erzielen. Grundsätzlich gibt es eine Möglichkeit, alles, was nach dem Aliasnamen eingegeben wird, in den Alias selbst aufzurufen? Etwas wie:
alias dim='cd /home/jason/Documents; vim <what is typed after alias>; cd'
Antworten:
Nein, das können Sie nicht mit Shell-Aliasen tun. Sie müssen eine Funktion verwenden.
Hier ist eine einfache Funktion, um die Arbeit zu erledigen:
Die Funktion verwendet
dim
einen Dateinamen als Argument. Sie können dieses Code-Snippet am Ende Ihrer~/.bashrc
Datei einfügen und dann wie folgt ausführen:Ersetzen Sie
file.txt
durch einen beliebigen Dateinamen.Um es von der aktuellen Shell-Sitzung aus auszuführen, muss
source
die~/.bashrc
Datei zuerst:quelle
$1
gibt den ersten Positionsparameter oder das erste Argument für die Funktion an. Denken Sie daran, um eine Funktion oder ein Skript einzugeben. Wie alle Programmiersprachen wirdbash
auch dies verwendet Finden Sie zahlreiche Ressourcen dazu auf Google ..Verwenden Sie stattdessen keine Aliase, sondern Funktionen.
Von der Bash-Manpage :
Ihre Funktion könnte also sein:
quelle
cd
, um Sie in Ihr Home-Verzeichnis zu bringen;cd ..
geht eine Ebene höher.cd -
bringt Sie zum vorherigen Verzeichnis, aus dem Sie herausgearbeitet habencd
.$*
ist wie$1 $2 $3...
nur die ganze Liste an vim zu geben, nicht das erste Argument, das Sie eingeben. Und wie Chriki sagte,cd -
wird zum vorherigen Verzeichnis zurückkehren (dem, das Sie waren, als Sie die Funktion aufgerufen haben).