Mover archivo a la Papelera en Snow Leopard desde la Terminal

13

Snow Leopard permite a los usuarios "Volver a colocar" archivos que se movieron a la Papelera desde Finder. Sin embargo, cuando lo hago mv <file> ~/.Trashdesde la línea de comando no obtengo la opción "Volver a poner".

¿Hay un comando nativo en Snow Leopard que mueva un archivo a la papelera mientras me permite "Volver a poner"?

matpie
fuente

Respuestas:

2

Cuando mueve un archivo a la papelera, OS X actualiza el .DS_Storearchivo dentro ~/.Trashcon la información "Volver a colocar". (Vea esta pregunta para más detalles )

Para actualizar esto, también deberá actualizar el .DS_Storearchivo cuando mueva un archivo a la Papelera en la Terminal.

Josh K
fuente
Gracias. No es lo que esperaba, pero es la verdad.
Matpie
9

Recomiendo instalar Ruby gem osx-trash .

¿Cómo?

sudo gem install osx-trash

¿Uso?

Usage: trash [OPTIONS] <file> [<file> ...]
       trash [-e | --empty]
       trash [-l | --list]
Specific options:
    -e, --empty                      Empty the trash
    -l, --list                       List items in the trash
    -h, --help                       Show this message
    -v, --version                    Show version

Manipulate to the Finder's trash.
hobodave
fuente
2
¡Agradable! Sin embargo, como se comunica con Finder, los archivos de basura con un comodín reproducen el sonido de basura de cada archivo.
Jari Keinänen
1
No creo que esto todavía funcione. De los documentos: osx-trash requiere Mac OS X 10.5, Leopard. Lo intenté y todo lo que obtengo esbash: trash: command not found
yourfriendzak
No funciona en OS X 10.9 hizo una pregunta fresca sobre cómo solucionarlo aquí superuser.com/questions/694433/...
simbo1905
2

En MacOSX SDK, están las funciones FSPathMoveObjectToTrashSyncy relacionadas. Debería ser fácil escribir un script de Python (o lo que sea) a su alrededor.

Editar : solo lo codifiqué. Se puede encontrar aquí: rm-trash.py .

Albert
fuente
FYI - FSPathMoveObjectToTrashSync está en desuso en 10.8 y de acuerdo con el documento, deberá usar trashItemAtURL: resultItemURL: error: en su lugar.
Lester Cheung
2

Desea el programa rmtrash .

Puede usarlo para agregar elementos a la Papelera como si se hiciera en el buscador.

Editar: acabo de intentar usar rmtrash para eliminar y recuperar. Funciona exactamente como eliminar del buscador. Los archivos aparecen en la Papelera, se pueden arrastrar y vaciar exactamente igual. Lo he estado usando desde '06 más o menos.

sal
fuente
Del código de rmtrash, parece que es equivalente a mv file ~/.Trash/. ¿Estás seguro de que puedes recuperar los archivos de esta herramienta?
Albert
0

Después de mirar las alternativas descubrí que:

  • El programa rmtrash mueve los archivos al directorio de la papelera sin usar la API del sistema, por lo que el archivo .DS_Store no se actualizará . Además, no activa el sonido de reciclaje.
  • El script de python invoca un método obsoleto en mountain lion que tampoco activa el sonido de reciclaje.
  • El script ruby ​​funciona, pero es sloooooow (como el de Python).

Entonces escribí mi propio comando de basura implementado en el lenguaje de programación Nimrod, por lo que es rápido y activa el sonido de la papelera en un proceso en segundo plano. Esto significa que escribir el comando y ejecutarlo sale inmediatamente ya que no necesita esperar a que suene el sonido. La desventaja es que necesita compilar nimrod y luego este programa (¡no hay binarios lo siento!).

PD: Para ser honesto, la mejor implementación sería la de rmtrash usando la API oficial que estoy usando de Nimrod, que es simplemente objetivo-c .

Grzegorz Adam Hankiewicz
fuente
0

Echa un vistazo trash-cli. Funciona multiplataforma, sin sonido de basura y admite Put Back.

Puede instalarlo con (requiere Node.js ) :

$ npm install --global trash-cli

Alternativamente, si no desea usar Node.js, puede instalar el binario nativo osx-trashmanualmente.

Sindre Sorhus
fuente
-1

Tuve el mismo problema hoy y verifiqué también el programa rmtrash dado anteriormente. Desafortunadamente, todas las soluciones vistas hasta ahora mueven archivos al .Trash del directorio de inicio.

El Finder, por otro lado, lo mueve a diferentes carpetas -Trash, según el punto de montaje del sistema de archivos del archivo.

Entonces, la solución más fácil que puedo encontrar (creada en 10.5.8. Para probar en las versiones más nuevas de OS X) es esta:

osascript -e 'tell application "Finder" to delete POSIX file "'FULL FILENAME HERE'"'

Aquí está el script de shell que creé para él:

#!/bin/bash
declare -a files
for f in "$@" ; do
    if [ -r "$f" ] ; then
        case "$f" in
        /*) ;;
        *) f="$( pwd )/$f" ;;
        esac
        files=("${files[@]}" "$f")
    else
        echo "Can't find '$f'" >&2
    fi
done
if [ ${#files[@]} -gt 0 ] ; then
    osascript -e '
    on run argv
        repeat with f in argv
            set x to (POSIX file f) as string
            tell application "Finder" to delete x
        end
    end
    ' "${files[@]}" > /dev/null
fi
Skeeve
fuente