Sì, puoi eseguire il comando find senza una shell, ma avresti bisogno di un programma per avviarlo e avresti bisogno di un programma per visualizzarne l'output. Molte volte, stai usando le funzionalità della shell e quel comando avrà bisogno di una shell per interpretare l'intento.
es. piping, reindirizzamento e globbing sono una caratteristica della shell e dovranno interpretare una shell. "find. -name myfile" non utilizza alcuna funzionalità di una shell e potrebbe essere eseguito senza shell. "find. -name myfile | sort> output" usa sia il piping che il reindirizzamento e hai bisogno di una shell per interpretarlo.
Per quanto riguarda l'escaping di xy *, c'è poca differenza se è l'input da trovare o l'output di una riduzione, la shell lo espanderà in entrambi i modi.
Se c'è un file chiamato xyz nella directory corrente
trova . -name xy * verrà effettivamente eseguito come find. -name xyz, che probabilmente non è quello che vuoi.
Se lo trovi. -name xy * e non esiste alcun file corrispondente a xy * nella directory corrente, verrà eseguito come find. -name xy *.
Allo stesso modo, se non ci sono file corrispondenti a xy * nella directory corrente ls> xy * creerà un file chiamato xy *. Se c'è una corrispondenza tra i file, ad esempio xyz, significa che ls> xyz. Se ci sono diversi file corrispondenti a xy *, allora ls> xy * fallirà.
Maggiori informazioni http://tldp.org/HOWTO/Bash-Prog-Intro-HOWTO.html