command line

Perda do conteúdo da pasta principal:uso errado de rm

Estou a utilizar Ubuntu-Mate 20.04 e perdi a maior parte do conteúdo da minha pasta de casa.Penso que poderia ser devido à utilização errada do comando "rm" com sudo,mas não tenho a certeza se poderia ser outra coisa.

Explico:Estava a tentar apagar uma pasta ("targetfolder (algo)")e o seu conteúdo em /home/user2 enquanto estava registado como utilizador1 (user1 tem privilégios sudo).Por isso,fiz:

sudo rm -r /home/user2/targetfolder (something)/ 

No início rm deu algumas mensagens de erro devido aos parênteses-quero dizer isto:()-,por isso substituí parte do nome da pasta por *,e fi-lo:

sudo rm -r /home/user2/targetfolder */

NOTA:Talvez tenha usado aspas para o nome da pasta devido aos espaços em branco('targetfolder *' ),embora o último comando registado em terminal passe sem aspas.

Pelo que entendi,rm só deve ter apagado qualquer pasta com um nome que comece com "targetfolder" dentro da pasta home do utilizador2,mas parece ter apagado a maior parte da pasta home do utilizador1.Acrescento que,como não estava claro se rm estava a funcionar ou não,fechei o processo de matança do terminal,acho eu,o processo.

Só no caso de ser relevante,tanto as pastas de início de utilizador1 como as de utilizador2 são encriptadas usando ecryptfs (a pasta a ser apagada em /home/user2 estava fora de .Private e,portanto,não encriptada).

Assim,a minha pergunta é se o comando rm,tal como o utilizei,poderia ter eliminado o conteúdo da pasta home do utilizador1 (ou mesmo afectado o sistema).

Tenho uma cópia de segurança recente do conteúdo perdido,mas queria ter a certeza de que não se deve a outro problema que não seja o comando rm.

Obrigado antecipadamente e peço desculpa pelo meu inglês.

This command

sudo rm -r /home/user2/targetfolder */

tentaria excluir uma pasta /home/user2/targetfolder , que provavelmente não existia e, em seguida, os itens correspondentes a */ . Isso significaria todos os diretórios não ocultos (e seus conteúdos) presentes no diretório de trabalho atual. Se o diretório de trabalho atual for o diretório inicial de user1 , sim, esse é o que seria afetado.

O erro não é fugir do espaço. Um espaço é um delimitador que separa argumentos. Aqui, você fornece dois argumentos (ao lado da opção -r ), /home/user2/targetfolder e */ , onde o último é expandido pelo shell para corresponder a todos os subdiretórios não ocultos (por exemplo , Documents/ , Videos/ , etc. )

Citando o padrão do nome do ficheiro,ou escapando ao espaço,como em

sudo rm -r "/home/user2/targetfolder "*/

or

sudo rm -r /home/user2/targetfolder\ */

teria incluído /home/user2/targetfolder (something)/ e outras pastas correspondentes, se houver.

Em geral, esse uso de rm -r e, em seguida, em combinação com sudo é, como você experimentou, extremamente perigoso. Não execute imediatamente esse comando, mas verifique primeiro.

  • Substitua o sudo rm -r por ls -d . Isso listará todos os itens incluídos em seus argumentos e permitirá que você verifique o que será removido de antemão (Obrigado ao cocomac pela dica).
  • Depois que ls listar o que você espera remover, pressionepara recuperar esse comando e alterar ls -d para sudo rm -r .

Se um único directório tiver de ser removido,evite utilizar cartões wildcards por completo.Utilize o preenchimento do separador.Desta forma,tem a certeza de que o nome específico é correctamente introduzido na linha de comando.