Un mio amico sottolinea che se lo fai:
perl -pi.bak -e 's/foo/bar/' somefile
quando "somefile" è in realtà un collegamento simbolico, perl fa esattamente ciò che i documenti dicono che farà:
Lo fa rinominando il file di input, aprendo il file di output con il nome originale e selezionando quel file di output come predefinito per le istruzioni print (). L'estensione, se fornita, viene utilizzata per modificare il nome del vecchio file per creare una copia di backup [...]
Il risultato è un nuovo link simbolico "somefile.bak" che punta al file reale invariato e un nuovo file normale "somefile" modificato con le modifiche.
In molti casi, seguire il collegamento simbolico sarebbe il comportamento desiderato (anche se lascia ambigua la posizione corretta del file .bak). Esiste un modo semplice per farlo oltre a testare i symlink in un wrapper e gestire il caso in modo appropriato?
( sed
fa la stessa cosa, per quello che vale.)
-p -i
nella tua sceneggiatura.