Tout d'abord, vous n'utilisez pas $
lorsque vous appelez un alias. $
sert à développer une variable (et quelques autres éléments qui ne sont pas particulièrement pertinents pour cette question).
Mais, deuxièmement, les alias fonctionnent un peu comme des variables, dans le sens où elles (au risque de simplifier un peu) ne font que se développer en un tas de mots. Vous dites que vous voulez faire myrm foo
, mais cela s'étendrait à mv /home/user/Trash/* foo
, ce qui n'a aucun sens.
Une solution simple serait de définir l'alias comme étant mv -t /home/user/Trash
, ce qui fonctionnerait car mv
prend en charge le
mv -t destination_dir file …syntaxe comme alternative à la
mv file … destination_dirsyntaxe.
Mais vous pouvez obtenir une plus grande flexibilité avec une fonction shell. Ceux-ci combinent la flexibilité des scripts avec la (faible) surcharge des alias. Par exemple,
myrm() { mv "[email protected]" /home/user/Trash; }
causera myrm foo
être interprété comme mv foo /home/user/Trash
.
La solution probablement la plus simple consiste à utiliser trash-cli
forfait. Ensuite, vous pouvez simplement faire alias myrm=trash
puis trash foo
pour accomplir ce que vous voulez. Sauf que foo ira maintenant à ~/. local/share/Trash
Le problème est, avec mv
vous devez l'utiliser comme mv source destination
.
Avec votre alias c'est l'inverse mv destination source
.
De plus, vous n'avez pas besoin de l'astérisque *
à la fin, car cela fonctionne avec la destination comme un dossier. Assurez-vous que votre dossier /home/user/Trash
existe avec mkdir /home/user/Trash
.
Pour résoudre votre idée d'alias, je vous recommande de jeter un œil à ces questions de stackoverflow :
- https://stackoverflow.com/q/7131670/7311363
Cela conduira à cette solution; veuillez l'ajouter à votre ~/.bashrc
et faites un source ~/.bashrc
après avoir ajouté :
myrm() {
/bin/mv "[email protected]" /home/user/Trash/
}