In molti casi utilizzo la sostituzione dei comandi anziché xargs. Ad esempio rm $(ls)è lo stessols | xargs rm
Quali sono veramente le differenze tra loro?
Penso che una delle differenze sia che la sostituzione dei comandi viene eseguita in subshell mentre xargsviene eseguita nella shell corrente ma non ne sono sicuro.
Si prega di elencare le differenze.
xargsfunziona anche in una subshell a causa della pipe, a meno che tu non lo abilitishopt -s lastpipe, nel qual caso verrà eseguita nella shell corrente. Non penso che l'esecuzione in una subshell sia un problema, in questo caso, poiché non si modificano variabili.