Mover arquivo para o Lixo no Snow Leopard do Terminal


13

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

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

Respostas:


2

Quando você move um arquivo para a lixeira, o OS X atualiza o .DS_Storearquivo ~/.Trashcom as informações "Retornar". (Veja esta pergunta para mais detalhes )

Para atualizar isso, você também precisará atualizar o .DS_Storearquivo quando mover um arquivo para o Lixo no Terminal.


Obrigado. Não é o que eu estava esperando, mas é a verdade.
matpie

9

Eu recomendo instalar o Ruby gem osx-trash .

Quão?

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.

2
Agradável! No entanto, ao se comunicar com o Finder, os arquivos da lixeira com um curinga reproduzem o som da lixeira de cada arquivo.
Jari Keinänen 20/03/11

1
Eu não acho que isso ainda funcione. Na documentação: o osx-lixo requer o Mac OS X 10.5, Leopard. Eu tentei e tudo que eu vejo ébash: trash: command not found
yourfriendzak

Não funciona no OS X 10.9 pediu uma nova pergunta sobre como corrigi-lo aqui superuser.com/questions/694433/...
simbo1905

2

No MacOSX SDK, existem as funções FSPathMoveObjectToTrashSynce os relacionados. Deve ser fácil escrever um script Python (ou o que seja) ao seu redor.

Edit : Apenas codificado. Pode ser encontrado aqui: rm-trash.py .


FYI - FSPathMoveObjectToTrashSync foi descontinuado na versão 10.8 e de acordo com o documento, você precisará usar trashItemAtURL: resultItemURL: error: em vez disso.
Lester Cheung

2

Você deseja o programa rmtrash .

Você pode usá-lo para adicionar itens ao Lixo como se tivesse sido feito no localizador.

Edit: Eu apenas tentei usar o rmtrash para excluir e recuperar. Funciona exatamente como excluir do localizador. Os arquivos são exibidos na Lixeira, podem ser arrastados e esvaziados exatamente da mesma maneira. Utilizado desde 2006 ou mais.


A partir do código do rmtrash, parece que é apenas equivalente a mv file ~/.Trash/. Você tem certeza de que pode recuperar os arquivos desta ferramenta?
Albert

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, para que o arquivo .DS_Store não seja atualizado . Além disso, não aciona o som da reciclagem.
  • O script python invoca um método obsoleto no leão da montanha que também não aciona o som da reciclagem.
  • O script ruby ​​funciona, mas é sloooooow (como o python).

Então, eu escrevi meu próprio comando lixeira implementado na linguagem de programação Nimrod, 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 sai imediatamente, pois não é necessário aguardar a reprodução do som. O truque é que você precisa compilar o nimrod e, em seguida, este programa (sem desculpas binárias!).

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


0

Confira trash-cli. Ele funciona em várias plataformas, 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-trashmanualmente.


-1

Hoje tive o mesmo problema e verifiquei também o programa rmtrash fornecido acima. Infelizmente, todas as soluções vistas até agora movem os arquivos para o diretório .Trash do diretório inicial.

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

Portanto, a solução mais fácil que eu consegui (criada em 10.5.8. Para testar em versões mais recentes do OS X) é a seguinte:

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

Aqui está o script de shell que 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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.