Eu faço muito trabalho terminal e hoje tive a experiência de digitar
rm fileInQuestion.txt
Antes de descobrir que eu realmente precisava do fileInQuestion.txt. Se eu tivesse excluído a GUI, teria tirado do lixo. Gostaria de saber se é possível sobrecarregar 'rm' no Terminal de forma que ele envie os arquivos para a Lixeira na saída.
macos
command-line
Joe
fonte
fonte
Respostas:
Eu não aconselharia aliasing
rm
paramv
que você pode adquirir o hábito derm
arquivos não apagar de forma permanente e, em seguida, executar em problemas em outros computadores ou sob outras contas de usuário quando ele não excluir permanentemente.Eu escrevi um conjunto de
bash
scripts que adicionar mais ferramentas X-like linha de comando do Mac OS (para além de uma série dos internos comoopen
,pbcopy
,pbpaste
, etc.), o mais importantetrash
. Minha versãotrash
fará todas as coisas corretas que o aliasingrm
não fará (e espero que nada de ruim, mas eu as uso em meus próprios Macs há alguns anos sem dados perdidos), incluindo: renomear o arquivo como o Finder faz se um arquivo com o mesmo nome já existir, coloque os arquivos na pasta Lixeira correta em volumes externos; ele também possui algumas características adicionais, como: tenta usar o AppleScript quando disponível, para que você tenha um som agradável do lixo e tal (mas não o exige, para que você ainda possa usá-lo via SSH quando nenhum usuário estiver logado); dê a você o tamanho da lixeira em todos os volumes.Você pode pegar meu pacote tools-osx do meu site ou a versão mais recente e melhor do repositório GitHub .
Há também um
trash
comando desenvolvido por Ali Rantakari , mas eu mesmo não testei.fonte
trash
Rantakari há um bom tempo e posso realmente atestar isso. Ele é compilado como Objective-C e usa APIs padrão do sistema de arquivos e, se falhar (por exemplo, o usuário não possui direitos suficientes), chama o Finder para lixeira dos arquivos (solicitando efetivamente a autenticação). Você pode ler mais informaçõestrash
em hasseg.org/blog .brew install trash
.trash
comando disponível no Homebrew é de Alai Rantakari (veja abrew
fórmula ).brew remove trash
e depoisbrew install trash
.A ferramenta de linha de comando da lixeira pode ser instalada via
brew install trash
.Ele permite restaurar arquivos lixeira através da linha de comando ou do Finder.
fonte
port install trash
brew install trash
, recebo o seguinte: pastebin.com/N92cM7d8brew update
primeiro? Funciona bem do meu lado.Eu tenho um executável chamado
rem
em algum lugar no meu$PATH
com o seguinte conteúdo:EDIT: o código abaixo é uma versão revisada e aprimorada em colaboração com Dave Abrahams :
Ele se comporta exatamente da mesma maneira que a exclusão do Finder. (Veja a postagem do blog aqui .)
fonte
~/bin
, o nomeeitrash
, e funcionou na primeira vez - permitindo que eu lixeira muitos arquivos com muito mais eficiência do que se eu tivesse que clicar neles nas janelas do Finder. Muita gratidão. Espero que você publique mais respostas!osascript
ocorre quando o arquivo não existe não é bonito, então você pode querer ajustar essa parte.rm
máximo possível o comando shell em termos de exibição de mensagens quando os arquivos não existem e (2) reúne tudo em uma únicaosascript
chamada.Eu encontrei um código bastante agradável que pode ser adicionado ao final do perfil lote do usuário e faz
rm
mover os arquivos para o lixo cada vez que é executado.nano ~ / .bash_profile
fonte: http://hints.macworld.com/article.php?story=20080224175659423
fonte
local dst=${path##*/}
comlocal dst=${mindtrailingslash##*/}
e inserir outra linha logo antes que um que dizlocal mindtrailingslash=${path%/}
. Eu uso o nomefunction rr
. Assim, ele não interfere com o simplesrm
, mas o nome é igualmente curto e rápido para digitar (qualquer outro nome faria).rm()
pararmt()
- Dessa forma, você ainda pode usar orm
comando quando quiser. Penso rmt na minha cabeça comoremove to trash
: DUse o comando terminal osascript, o intérprete AppleScript.
Isso informa ao AppleScript para solicitar ao Finder que envie o arquivo para a lixeira.
O PWD é necessário para caminhos de arquivo relativos, pois o AppleScript não lida bem com isso.
fonte
uma abordagem moderna usando rápida
https://github.com/reklis/recycle
fonte
Embora seja possível fazer
rm
mover arquivos para o Lixo em vez de removê-los, eu recomendaria não trazer a mentalidade da rede de segurança das interfaces gráficas do usuário para o shell UNIX. Existem várias maneiras de causar danos graves usando o terminal. O melhor conselho ao IMHO é simplesmente pensar duas vezes antes de pressionar a entertecla em uma janela do shell.Se você quiser
rm
lembrá-lo de que está prestes a excluir um arquivo, considere usar o seguinte alias (para/bin/bash
colocar esta linha no.bashrc
diretório inicial):Isso fará a
rm
confirmação da solicitação antes de tentar remover cada arquivo.Se você tiver o TimeMachine em execução (espero que sim!), Você sempre poderá obter seu arquivo de backup. Dessa forma, você pode perder no máximo uma hora de trabalho. O que já é ruim o suficiente, é claro. Então pense novamente antes de pressionar essa entertecla!
fonte
rm
e travar com o aliasrm -i
..bashrc
só é executado se o shell for interativo. Verifique a página de manual !rm
mais segura do que é, o que causará problemas em outros sistemas. Além disso, se você usar-f
,-i
será completamente ignorado. Dito isto, esta é uma boa rede de segurança. Um melhor é nunca usar arm
favor de umrmi
alias (alias rmi="rm -i"
) ou da excelentetrash
utilidade. Além disso, acrescentarei que todo mundo já deveria ter colocado o[ -f ~/.bashrc ] && source ~/.bashrc
seu.bash_profile
agora.Existem dois utilitários instaláveis via Homebrew que podem fazer isso:
Lixo
Este é um pequeno programa de linha de comando para o OS X que move arquivos ou pastas para a lixeira. A USP desse comando é que permite restaurar facilmente os arquivos. Um comando para lixeira de arquivos / pastas não será útil se você não puder restaurar arquivos / pastas após a lixeira. No site do comando:
Para instalar,
trash
execute o seguinte no Terminal:brew install trash
.rmtrash
Uma ferramenta de linha de comando que move arquivos para a lixeira. Na página do manual do comando:
Para instalar,
rmtrash
execute o seguinte no Terminal:brew install rmtrash
.fonte
Aqui está uma solução de uma linha bastante trivial para adicionar ao seu perfil do bash. Observe que ele já substituirá algo com o mesmo nome na lixeira.
Uso:
fonte
Corretamente destruindo coisas (de modo que é definitivamente recuperável) é mais complicado do que simplesmente um
mv
para~/.Trash
.osx-lixo pode ser o que você está procurando. ( Advertência - não tentei e não posso garantir a segurança.)
fonte
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 ) :
Como alternativa, se você não quiser usar o Node.js, poderá instalar o binário nativo
osx-trash
manualmente.fonte
No seu .bashrc (ou onde quer que você mantenha os parâmetros do seu shell), tente adicionar um alias que mude o comportamento do rm para mover coisas para ~ / .Trash, como em:
Esse alias se está longe de ser trivial de implementar (pelo menos para mim), porque o uso do mv (o principal candidato a ser usado para este trabalho) é
portanto, ter um alias que coloca a parte 'where' na frente do arquivo a ser movido pode ser bastante superficial. Vou investigar e obter conselhos mais substanciais.
Edição: Eu apenas tentei adicionar o seguinte ao meu .bashrc, e ele funciona:
É muito mais primitivo do que outras sugestões, mas você evita instalar coisas novas.
fonte
rm
para qualquer coisa é perigoso porque pode quebrar os scripts do instalador. Eu aprendi isso da maneira mais difícil quando eu aliasrm
pararm -i
e tinha instalações pendurar..bashrc
é usado apenas para shells interativos . Se você executar,./install.sh
um novo processo será iniciado e o alias não estará ativo. No entanto, se você executar. install.sh
o processo atual, o instalador será executado e o alias estará ativo. RTFM ...rm
alterar o nome do comando, como disse o morgante, porque você se sentirá confortável emrm
não remover os arquivos e poderá excluir acidentalmente algo em um sistema em que esse apelido não foi adicionado. Além disso, mover um arquivo para a lixeira não é tão simples quanto justomv {} ~/.Trash
. Se o arquivo estiver em um volume separado, por exemplo, ele copiará o arquivo para o diretório inicial e excluirá o original.Eu simplesmente coloquei esse script
in
~/bin/trash
, tornado permutávelchmod +x ~/bin/trash
e adicionou a seguinte linha ao~/.bash_profile
Então pode-se usá-lo como
fonte
Uma função simples pode permitir que você lixeira arquivos, movendo-os para a pasta .Trash do usuário:
fonte
$*
vez de$1
, mas então você terminaria com a mesma resposta quemv "$@" ~/.Trash
. Por que as pessoas votam negativamente, verifique os comentários da outra resposta.