Es común que al trabajar con la línea de comandos usemos el comando rm para borrar cosas. He notado que muchos prefieren irse al Finder y desde ahí borrar esas cosas para aprovechar la oportunidad de arrepentimiento que nos da la trash can (la famosa «papelera de reciclaje»).

Aunque no tengo problemas yo al usar el rm, a sabiendas de que no hay oportunidad de recuperar lo borrado, estuve considerando que, al final, el «bote de basura» es algo que incluso desde la línea de comandos vale la pena usar. Si ya está ahí, ¿por qué no usarlo?
Mi primera idea fue crear un alias para mv, ya que rm borra no mueve.
alias rmtrash='mv ? ~/.Trash'
Pero, si bien he colocado un «?» en esta explicación, a manera de comodín de lo que debiera ser el archivo o lista de archivos a borrar, tenía mis dudas de cómo expresarlo en el alias. El alias es como una macro sin parámetros que se expandirá, y la sintaxis de mv requiere que los objetos del movimiento sean el primer argumento. La versión GNU de mv permite usar un switch -t para indicar el directorio destino, lo que permitiría crear el alias como
alias rmtrash='mv -t ~/.Trash'
pero en BSD esto no es posible, por lo que la respuesta sería crear una función de usuario como
rmtrash() {
for f in "$@"; do
if [ -e "$f" ]; then
mv "$f" ~/.Trash/
else
echo "Archivo no encontrado: $f"
fi
done
}
y colocarla en .bash_profile. Una versión con confirmación interactiva podría ser:
rmtrash() {
for f in "$@"; do
if [ -e "$f" ]; then
read -p "¿Mover '$f' a la papelera? [s/N] " confirm
if [[ $confirm == [sS] ]]; then
mv "$f" ~/.Trash/
echo "Movido: $f"
else
echo "Saltado: $f"
fi
else
echo "Archivo no encontrado: $f"
fi
done
}
y, cualquiera que fuera la versión seleccionada, se invocaría:
rmtrash archivo1.txt archivo2.jpg carpeta/
Mientras pensaba, revisaba y decidía al respecto, supe que vía Homebrew era posible instalar una utilidad llamada Trash (fuente). Revisé mi instalación para validar si aparecía como ya instalada por requerimiento de alguna otra formula o cask previamente instalada con Homebrew, pero en el proceso descubrí que, efectivamente, existe un comando trash (ver man trash) que parece haber sido ya incluido desde macOS 14 «Sonoma«. Así que, bueno, ya no fue necesario crear un alias ni instalar una utilería externa, basta usar el comando trash en lugar de rm.
