Mover arquivo para Lixeira no Snow Leopard do Terminal

14

O Snow Leopard permite aos usuários "Colocar de volta" arquivos que foram movidos para a Lixeira do Finder. No entanto, quando eu faço mv <file> ~/.Trash da linha de comando eu não recebo a opção "Colocar de volta".

Existe um comando nativo no Snow Leopard que move um arquivo para a lixeira enquanto ainda me permite "Colocar de volta"?

    
por matpie 05.03.2010 / 22:32

7 respostas

2

Quando você move um arquivo para a lixeira, o OS X atualiza o arquivo .DS_Store dentro de ~/.Trash com as informações "Colocar de volta". (Veja esta pergunta para mais detalhes )

Para atualizar isso, você também deve atualizar o arquivo .DS_Store quando mover um arquivo para o Lixo no Terminal.

    
por 05.03.2010 / 22:35
9

Eu recomendo instalar a gem do Ruby osx-trash .

Como?

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.
    
por 06.03.2010 / 05:24
2

No SDK do MacOSX, existem as funções FSPathMoveObjectToTrashSync e relacionado. Deve ser fácil escrever um script em Python (ou qualquer outro) em torno dele.

Editar : Apenas codifiquei. Pode ser encontrado aqui: rm-trash.py .

    
por 04.06.2012 / 20:51
2

Você quer o programa rmtrash .

Você pode usá-lo para adicionar itens ao Lixo como se fosse feito no buscador.

Edit: Eu tentei usar o rmtrash para excluir e recuperar. Funciona exatamente como excluir do localizador. Os arquivos exibidos na Lixeira podem ser arrastados e esvaziados exatamente da mesma maneira. Estou usando desde 06 anos.

    
por 06.03.2010 / 04:47
0

Depois de analisar as alternativas, descobri que:

  • O programa rmtrash move os arquivos para o diretório da lixeira sem usar a API do sistema, portanto, o arquivo .d_Store não será atualizado . Além disso, não aciona o som de reciclagem.
  • O script python invoca um método obsoleto no leão da montanha, que também não aciona o som de reciclagem.
  • O script ruby funciona, mas é sloooooow (como o da python).

Então eu escrevi meu próprio comando de lixo implementado no Nimrod linguagem de programação, então é rápido e aciona o som da lixeira em um processo em segundo plano. Isso significa que digitar o comando e executá-lo sairá imediatamente, pois não precisa esperar que o som seja reproduzido. O con é que você precisa compilar nimrod e, em seguida, este programa (sem binário, desculpe!).

PS: Para ser honesto, a melhor implementação seria o rmtrash usando a API oficial que estou usando da Nimrod, que é simples objetivo-c .

    
por 24.04.2013 / 09:08
0

Confira trash-cli . Funciona em plataforma cruzada, sem som de lixo e suporta Put Back.

Você pode instalá-lo com (requer Node.js ) :

$ npm install --global trash-cli

Como alternativa, se você não quiser usar o Node.js, poderá instalar o binário nativo osx-trash manualmente.

    
por 31.10.2015 / 11:20
-1

Eu tive o mesmo problema hoje e verifiquei também o programa rmtrash acima. Infelizmente todas as soluções vistas até agora movem arquivos para o diretório home .Trash.

O Finder, por outro lado, o move para diferentes pastas -Trash, com base no ponto de montagem do sistema de arquivos do arquivo.

Portanto, a solução mais fácil que posso criar (criada no 10.5.8. Para ser testada em versões mais recentes do OS X) é esta:

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

Aqui está o script de shell que eu criei para ele:

#!/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
    
por 13.08.2015 / 09:16