Zunächst einmal verwenden Sie $
nicht wenn Sie einen Alias anrufen. $
dient zum Erweitern einer Variablen (und ein paar andere Dinge, die für diese Frage nicht besonders relevant sind).
Aber zweitens funktionieren Aliase funktionieren ein bisschen wie Variablen, in dem Sinne, dass sie sich (auf die Gefahr hin, ein wenig zu vereinfachen) einfach zu einer Reihe von Wörtern erweitern. Du sagst, du möchtest myrm foo
machen , aber das würde zu mv /home/user/Trash/* foo
erweitert werden ,was keinen Sinn ergibt.
Eine einfache Lösung wäre, den Alias auf mv -t /home/user/Trash
zu definieren , was funktionieren würde, weil mv
unterstützt die
mv -t destination_dir file …Syntax als Alternative zur
mv file … destination_dirSyntax.
Größere Flexibilität erhalten Sie jedoch mit einer Shell-Funktion. Diese kombinieren die Flexibilität von Skripten mit dem (geringen) Overhead von Aliasen. Zum Beispiel
myrm() { mv "[email protected]" /home/user/Trash; }
wird myrm foo
verursachen zu interpretieren als mv foo /home/user/Trash
.
Die wahrscheinlich einfachere Lösung ist die Verwendung von trash-cli
Paket. Dann können Sie einfach alias myrm=trash
machen und dann trash foo
zu erreichen, was Sie wollen. Außer dass foo jetzt zu ~/. local/share/Trash
geht
Das Problem ist, mit mv
Sie müssen es wie mv source destination
verwenden .
Bei Ihrem Alias ist es umgekehrt mv destination source
.
Außerdem brauchen Sie das Sternchen *
nicht am Ende, weil es mit dem Ziel als Ordner funktioniert. Stellen Sie sicher, dass Ihr Ordner /home/user/Trash
existiert mit mkdir /home/user/Trash
.
Um Ihre Alias-Idee zu lösen, würde ich Ihnen empfehlen, sich diese Stackoverflow-Fragen anzusehen:
- https://stackoverflow.com/q/7131670/7311363
Dies wird zu dieser Lösung führen; fügen Sie dies bitte Ihrem ~/.bashrc
hinzu und mache source ~/.bashrc
nach dem Hinzufügen:
myrm() {
/bin/mv "[email protected]" /home/user/Trash/
}