considerare qualcosa di simile:Va bene usare lo stesso file di input come output di un comando piped?
cat file | command > file
è questa buona pratica? Questo potrebbe sovrascrivere il file di input nello stesso momento in cui lo stiamo leggendo, o viene sempre letto prima in memoria e poi inviato al secondo comando?
Ovviamente, posso usare i file temporanei come tappa intermedia, ma mi chiedo solo ..
t=$(mktemp)
cat file | command > ${t} && mv ${t} file
grazie, moreutils sembra molto utile! Lo stesso vale per il reindirizzamento: 'comando < file > file' o anche per la sostituzione di processo:' comando <(cat file) > file'? – Amro
Sì, vale anche in entrambi i casi. Tieni presente che la shell è libera di configurare i reindirizzamenti in qualsiasi ordine, pertanto è necessario considerare il comportamento non definito per accedere due volte allo stesso file in un singolo comando o pipeline. Anche se funziona occasionalmente, non è garantito. – Juliano