A maneira simples é usar rm -i
como descreve o @orion. Se você quer algo que não irá remover nada, mas não altera os flags do rm, você sempre pode construir sua própria versão de rm
, vamos chamá-lo de preview-rm
. É realmente muito simples, e você pode até mesmo fazer isso sem tocar nos arquivos de origem rm
:
-
Encontre a fonte na versão do seu sistema de
rm
. Você pode precisar baixar um pacote de código-fonte ou qualquer outra coisa. O GNUrm
faz parte dos "principais utilitários" e consiste em dois arquivos C,rm.c
eremove.c
, além de vários arquivos de cabeçalho. Uma vez que você está pronto para compilar os utilitários do sistema, o resto é trivial. -
Crie o arquivo
mockrm.c
com o seguinte conteúdo. A única parte não trivial é que algumas versões derm
detectam diretórios tentandounlink()
e verificando erros, portanto, precisamos garantir que isso funcione corretamente:#include <stdio.h> #include <sys/stat.h> #include <errno.h> int unlink(char *s) { struct stat sbuf; lstat(s, &sbuf); /* Simulate unlink error if we're asked to unlink a directory. */ if (S_ISDIR(sbuf.st_mode)) { return EISDIR; } puts(s); return 0; } int rmdir(char *d) { printf("%s (dir)\n", d); return 0; }
-
Por fim, compile seu executável
preview-rm
assim:% cc rm.c remove.c mockrm.c -o preview-rm
As funções em
mockrm.c
serão vinculadas em precedência às chamadas do sistema fornecidas pela biblioteca C, fornecendo um clone sem dentes derm
que você pode usar para visualização. (Teste se realmente funciona antes de apontar para arquivos importantes.)
Alternativa: se você estiver em um sistema que ofereça suporte ao LD_PRELOAD
feature (OS X não), você pode conseguir o mesmo efeito compilando mockrm.c em uma biblioteca compartilhada ( .so
) e forçando para ser carregado pelo rm
real:
% LD_PRELOAD=/path/to/mockrm.so rm -flags files
Mas, como você precisa alterar a invocação do comando, por que não criar um executável separado, como mostrado acima. Eu sei que seria um pouco nervoso apontar o verdadeiro rm
em arquivos valiosos ( Editar: e se você atualizar seu sistema operacional, você teria que testar novamente e certificar-se de que rm
hasn ' t mudou de uma maneira que desativou o wrapper.)