Quando ho a che fare con input potenzialmente non autorizzati, mi piace vedere l'intero lavoro "spiegato" riga per riga per l'ispezione visiva prima di eseguirlo (soprattutto quando è qualcosa di distruttivo come la pulizia della cassetta postale delle persone).
Quindi quello che faccio è generare un elenco di parametri (ad es. Nomi utente), inviarlo a un file in modo un record per riga, in questo modo:
johndoe
jamessmith
janebrown
Quindi apro l'elenco vim
e lo manipolo con la ricerca e sostituisco le espressioni fino a quando non ottengo un elenco di comandi completi che devono essere eseguiti, in questo modo:
/bin/rm -fr /home/johndoe
/bin/rm -fr /home/jamessmith
In questo modo se la tua regex è incompleta, vedrai in quale comando avrà potenziali problemi (es. /bin/rm -fr johnnyo connor
). In questo modo puoi annullare il tuo regex e riprovare con una versione più affidabile di esso. La menomazione dei nomi è nota per questo, perché è difficile occuparsi di tutti i casi limite come Van Gogh, O'Connors, St. Clair, Smith-Wesson.
Avere set hlsearch
è utile per farlo in vim
quanto evidenzierà tutte le partite, quindi puoi facilmente individuare se non corrisponde, o corrisponde in modo non intenzionale.
Una volta che il tuo regex è perfetto e cattura tutti i casi che puoi testare / pensare, quindi di solito lo converto in un'espressione sed in modo che possa essere completamente automatizzato per un'altra corsa.
Per i casi in cui il numero di righe di input ti impedisce di eseguire un'ispezione visiva, ti consiglio vivamente di fare eco al comando sullo schermo (o meglio ancora, un registro) prima che venga eseguito, quindi se si guasta, sai esattamente quale comando ha causato fallire. Quindi puoi tornare al regex originale e modificarlo di nuovo.
printf "foo bar\nbaz bat" | xargs echo whee
cederàwhee foo bar baz bat
. Forse aggiungi le opzioni-L
o-n
?