compreendendo os comandos -R flag e * in rm

0

Ao usar o comando rm no OS X 10.9, eu apaguei acidentalmente um disco inteiro.

Pelo que entendi, o comando que usei: sudo rm -Rfv /Volumes/Disk/AppName\!\ Whatever\ X.app/Contents/Resources/* tudo dentro do diretório "Recursos" será excluído, incluindo pastas com arquivos, e é por isso que usei o sinalizador "R". O "v" mostrou brevemente os arquivos afetados, mas fechei a janela em alguns segundos. Provavelmente foi um erro usar o sinalizador "f", mas sem ele a pasta do problema não seria excluída.

O caminho fornecido não limita o comando para esse diretório? Como poderia o comando ser dado de uma maneira mais segura, limitando-o apenas ao conteúdo do caminho?

O motivo pelo qual usei rm foi porque o diretório "Resources" continha um arquivo que se recusava a ser excluído, pois "continha arquivos" que eram invisíveis também ao mostrar arquivos invisíveis, não se deixava substituir ou colocado no lixo . Certamente é possível que este arquivo tenha apontado para o disco inteiro e esta é a razão pela qual tudo foi deletado. Isso parece uma provável explicação para você?

Eu testei esse disco externo em busca de erros, mas ele voltou como sempre limpo. É uma nova unidade de 3 TB.

    
por MiB 11.06.2015 / 11:31

2 respostas

2

When using the rm command in OS X 10.9 I accidentally deleted an entire disk.

Eu não vejo como esse comando excluiria o conteúdo de um disco inteiro.

As I understand the command I used: sudo rm -Rfv /Volumes/Disk/AppName!\ Whatever\ X.app/Contents/Resources/* everything inside the "Resources" directory will be deleted including folders with files.

Correto.

Does the given path not limit the command to that directory?

Sim, e no exemplo que você lhe deu, escapou com cuidado de todos os espaços. Agora, se você não fez e acabou com um whitespac sem escape no caminho, então o comando pode ter acabado assim:

rm -Rfv /Volumes/Disk/ AppName\!\Whatever\ X.app/Contents/Resources/* .

Notew que eu não estou dizendo que você fez isso, mas é a única coisa que eu posso pensar que iria apagar tudo montado em / Volumes / Disk /

How could the command be given in a more safe fashion limiting it to only the content of the path?

Você pode primeiro fazer o cd para o local onde deseja excluir os arquivos.

cd /Volumes/Disk/AppName\!\ Whatever\ X.app/Contents/Resources/
rm -Rfv * 

Tenha sempre cuidado ao usar rm com recursiva e com força (-R e -f). Especialmente como root (cq sudo'd).

    
por 11.06.2015 / 12:04
1

O comando "rm" é o mesmo nos sistemas * nix (Isso inclui o BSD no qual o OSX é baseado)

Então veja "man rm" para explicação dos switches.

-R significa recursivo, isso significa que ele irá executar um loop em todos os subdiretórios para o caminho especificado. Como esse comando não será transversal a links suaves, você pode ter certeza de que ele está limitado ao diretório.

    
por 11.06.2015 / 11:52