En primer lugar, no usas $
cuando llamas a un alias. $
es para expandir una variable (y algunas otras cosas que no son particularmente relevantes para esta pregunta).
Pero, en segundo lugar, los alias funcionan un poco como variables, en el sentido de que (a riesgo de simplificar un poco) simplemente se expanden a un montón de palabras. Dices que quieres hacer myrm foo
,pero eso se expandiría a mv /home/user/Trash/* foo
,lo cual no tiene sentido.
Una solución simple sería definir el alias como mv -t /home/user/Trash
,que funcionaría porque mv
apoya el
mv -t destination_dir file …sintaxis una alternativa a la
mv file … destination_dirsintaxis.
Pero puede obtener una mayor flexibilidad con una función de shell. Estos combinan la flexibilidad de los scripts con la sobrecarga (baja) de los alias. Por ejemplo,
myrm() { mv "[email protected]" /home/user/Trash; }
causará myrm foo
para ser interpretado como mv foo /home/user/Trash
.
Probablemente la solución más fácil es usar trash-cli
paquete. Entonces puedes hacer alias myrm=trash
y luego trash foo
para lograr lo que quieres. Excepto que foo ahora irá a ~/. local/share/Trash
El problema es que con mv
tienes que usarlo como mv source destination
.
Con tu alias es viceversa mv destination source
.
Además, no necesita el asterisco *
al final, porque funciona con el destino como carpeta. Asegúrate de que tu carpeta /home/user/Trash
existe con mkdir /home/user/Trash
.
Para resolver su idea de alias, le recomiendo que eche un vistazo a estas preguntas de stackoverflow:
- https://stackoverflow.com/q/7131670/7311363
Esto conducirá a esa solución; por favor agregue esto a su ~/.bashrc
y haz un source ~/.bashrc
después de agregar:
myrm() {
/bin/mv "[email protected]" /home/user/Trash/
}