Prima di tutto, non usi $
quando chiami un alias. $
serve per espandere una variabile (e poche altre cose che non sono particolarmente rilevanti per questa domanda).
Ma, in secondo luogo, gli alias funzionano un po 'come le variabili, nel senso che (a rischio di semplificare un po' troppo) si espandono semplicemente in un mucchio di parole. Dici che vuoi fare myrm foo
, ma si espanderebbe a mv /home/user/Trash/* foo
, il che non ha senso.
Una soluzione semplice sarebbe definire l'alias come mv -t /home/user/Trash
, che funzionerebbe perché mv
supporta il
mv -t destination_dir file …syntaxas un'alternativa al
mv file … destination_dirsintassi.
Ma puoi ottenere una maggiore flessibilità con una funzione shell. Questi combinano la flessibilità degli script con il (basso) sovraccarico degli alias. Ad esempio,
myrm() { mv "[email protected]" /home/user/Trash; }
causerà myrm foo
da interpretare come mv foo /home/user/Trash
.
Probabilmente la soluzione più semplice è usare trash-cli
pacchetto. Quindi puoi semplicemente fare alias myrm=trash
e poi trash foo
per realizzare ciò che vuoi. Tranne che foo ora andrà a ~/. local/share/Trash
Il problema è che con mv
devi usarlo come mv source destination
.
Con il tuo alias è viceversa mv destination source
.
Inoltre non è necessario l'asterisco *
alla fine, perché funziona con la destinazione come cartella. Assicurati che la tua cartella /home/user/Trash
esiste con mkdir /home/user/Trash
.
Per risolvere la tua idea di alias, ti consiglio di dare un'occhiata a queste domande sullo stackoverflow:
- https://stackoverflow.com/q/7131670/7311363
Questo porterà a quella soluzione; aggiungilo al tuo ~/.bashrc
e fai un source ~/.bashrc
dopo aver aggiunto:
myrm() {
/bin/mv "[email protected]" /home/user/Trash/
}