Ao lidar com entradas potencialmente não autorizadas, eu gosto de ver todo o trabalho 'detalhado', linha por linha, para inspeção visual antes de executá-lo (especialmente quando é algo destrutivo, como limpar a caixa de correio das pessoas).
Então, o que eu faço é gerar uma lista de parâmetros (por exemplo, nomes de usuário), alimentá-lo com um arquivo de um registro por linha, assim:
johndoe
jamessmith
janebrown
Em seguida, abro a lista vim
e a manuseio com expressões de pesquisa e substituição até obter uma lista de comandos completos que precisam ser executados, assim:
/bin/rm -fr /home/johndoe
/bin/rm -fr /home/jamessmith
Dessa forma, se o seu regex estiver incompleto, você verá em qual comando haverá problemas em potencial (ie. /bin/rm -fr johnnyo connor
). Dessa forma, você pode desfazer seu regex e tentar novamente com uma versão mais confiável. A confusão de nomes é notória por isso, porque é difícil cuidar de todos os casos extremos, como Van Gogh, O'Connors, St. Clair, Smith-Wesson.
Ter set hlsearch
é útil para fazer isso vim
, pois destacará todas as correspondências, para que você possa identificar facilmente se não corresponder ou corresponder de forma não intencional.
Uma vez que seu regex é perfeito e captura todos os casos em que você pode testar / pensar, geralmente o converto em uma expressão sed para que possa ser totalmente automatizado para outra execução.
Nos casos em que o número de linhas de entrada o impede de fazer uma inspeção visual, recomendo repetir o comando na tela (ou, melhor ainda, em um log) antes de executar, portanto, se ocorrer um erro, você saberá exatamente qual comando causou falhar. Depois, você pode voltar ao seu regex original e ajustar novamente.
printf "foo bar\nbaz bat" | xargs echo whee
vai renderwhee foo bar baz bat
. Talvez adicione as opções-L
ou-n
?