Por que o rm -rf não produz um erro?

2

ubuntu 9.10 se você digitar rm você obtém um erro de operando perdido, a mesma coisa com rm -r mas rm -f não produz nenhum erro. -f deve ser "força" e não "dissipar erros"

    
por Stu 07.07.2010 / 16:21

3 respostas

8

Na página de manual do Unix

-f, --force
ignore nonexistent files, never prompt

ignorar arquivos não existentes significa que não haverá erro se não houver arquivos para remover, o que acontece quando você usa rm -f sem nenhum arquivo especificado. Este é o comportamento esperado, tanto quanto eu sei. Ele não ignora todos os erros, mas -f não requer que o arquivo seja listado como um operando, portanto, não há erro para lançar.

    
por 07.07.2010 / 16:26
10

SUSv3 diz:

-f Do not prompt for confirmation. Do not write diagnostic messages or modify the exit status in the case of nonexistent operands. Any previous occurrences of the -i option shall be ignored.

    
por 07.07.2010 / 16:40
1

Para entender por que o parâmetro file é realmente opcional, você deve considerar que em muitos scripts a lista de arquivos a serem removidos é armazenada em uma variável e usar -f permite que você não se importe se a lista está vazia ou não. Você pode simplesmente fazer:

rm -f $FILES

insead do mais pesado:

-z "$FILES" || rm $FILES

Portanto, é lógico que uma opção chamada "ignorar arquivos não existentes" não falhe quando nenhum arquivo é fornecido na linha de comando.

    
por 08.07.2010 / 08:57

Tags