O conteúdo de um arquivo foi apagado

1

Eu usei este comando:

sort .file1 >.file2 | mv .file2 .file1

Mas .file1 está vazio.

Por quê? Se meu comando estiver errado, como posso recuperá-lo?

    
por alhelal 17.05.2017 / 11:39

2 respostas

3

Na verdade, não faz sentido ter um pipeline nesse caso, já que a primeira parte do pipeline não está produzindo entrada para a segunda parte, e a segunda parte não lê nada a partir da entrada padrão.

Em vez disso, use apenas

$ sort -o .file1 .file1

Isso classificará o arquivo .file1 "no lugar".

O que aconteceu quando você executou seu pipeline foi que o shell criou .file2 como um arquivo vazio e mv teve tempo de substituir .file1 com isso antes que sort conseguisse classificar o conteúdo de .file1 . Todas as partes de um pipeline são iniciadas simultaneamente.

Para recuperar, restaure a partir do backup.

    
por 17.05.2017 / 12:08
0

Você deve fazer sort .file1 > .file2 && mv .file2 .file1 . com | pipe, você passa o stdout de classificação para .file2 , que foi renomeado para .file1 Que tipo de sistema de arquivos você tem nesse /dev/sda1 , mas esteja ciente de que a recuperação pode ser impossível

    
por 17.05.2017 / 11:44