GNU/Linux >> Znalost Linux >  >> Linux

co je rozdíl mezi xargs se složenými závorkami a bez nich v linuxu

xargs rm vyvolá rm se všemi argumenty jako parametrem s mezerami.

xargs -i{} rm {} vyvolá rm {} pro každý z argumentů a {} bude nahrazeno aktuálním argumentem.

Pokud máte 2 argumenty a.txt a b.txt , xargs rm zavolá toto

rm a.txt b.txt

Ale xargs -i{} rm {} zavolá

rm a.txt
rm b.txt

Důvodem je -i volba implikuje -L 1 volba, což znamená příkaz rm zabere pouze 1 řádek pokaždé. A zde každý řádek obsahuje pouze 1 argument.

Podívejte se na tento odkaz Ideone, abyste o tom získali další představu.


Se složenými závorkami vytvoří jeden rm proces na soubor. Bez složených závorek, xargs předá každému rm co nejvíce názvů souborů příkaz.

Porovnat

ls | xargs echo

a

ls | xargs -i echo '{}'

Volba -i (ekvivalent --replace) vytváří jakýsi zástupný symbol, kam xargs ukládá vstup, který právě přijal. Ve vašem druhém příkazu je zástupný symbol "{}", funguje to jako volba find -exec. Po definování nahradí xargs tento zástupný symbol celým řádkem vstupu. Pokud se vám nelíbí název "{}", můžete si definovat vlastní:

ls | xargs -iPLACEHOLDER echo PLACEHOLDER

Ve vašem případě oba příkazy produkují stejný výsledek. Ve druhém formuláři pouze explicitně uvádíte výchozí chování pomocí volby -i.


Linux
  1. Co je příkaz Chown v Linuxu a jak jej používat

  2. Co je FirewallD a jak jej implementovat v systému Linux

  3. Jaká metrika má v Linuxu trasu bez metriky?

  1. Flatpak na Linuxu:Co to je a jak s ním instalovat aplikace

  2. Co je Podman a jak nainstalovat Podman v Linuxu

  3. Nahrávání obrazovky v Linuxu s OBS a Wayland

  1. Co je NFS a jak jej nainstalovat na Linux

  2. Najděte soubor pomocí příkazů Najít a najít v Linuxu

  3. Co je špatného na linux/if.h a net/if.h?