Sono piuttosto confuso su questo. Ho bisogno di alcuni chiarimenti.Capire il comando UNIX xargs
Esempio 1:
pgrep string | xargs ps
Esempio 2:
find . | xargs grep whatever
Da Esempio 1, mi sembra di capire che sia in questo modo:
ricerca di una "stringa", che è parte del nome del processo in esecuzione e restituisce gli ID di processo di tutte le corrispondenze a 'xargs ps' -> che si aggiunge ps per le partite (che sono di processo-ID stessi) per ottenere lo stesso risultato:
ps <processid>
Qualcuno può spiegare che cosa realmente xargs fa in questo caso?
Da Esempio 2, mi sembra di capire che sia in questo modo:
E 'per cercare un po' di "stringa" ricorsivamente dalla directory di lavoro corrente. Qui, come funziona esattamente 'xargs'?
Sono stato dell'opinione che "xargs" accoda ripetutamente i dati dallo standard input all''argomento 'dato a xargs (che di solito è un comando UNIX da solo). pagina man
Da xargs():
xargs legge gli elementi dalla standard input, delimitati da spazi (che può essere protetti con virgolette doppie o singole o una barra rovesciata) o ritorni a capo, e esegue la comando (l'impostazione predefinita è/bin/echo) una o più volte con qualsiasi argomento iniziale seguito da elementi letti dallo standard input. Le righe vuote sullo standard input vengono ignorate.
xargs agisce come il comando "subtitution" (almeno con Bash). Trasforma i risultati multilinea (verticale) in una lista di argomenti di token (orizzontale). (Nota che potresti filtrare un po 'i risultati (usando sed per ex) prima di passarlo attraverso xargs). Plus xargs gestisce l'errore «_too much arguments_» che può essere verificato prima del kernel Linux 2.6.23 (vedere [wikipedia] (https://en.wikipedia.org/wiki/Xargs)). Ecco [un altro thread utile] (http://unix.stackexchange.com/questions/24954/when-is-xargs-needed) – Stphane