Xargs: Difference between revisions
From ICO wiki
Jump to navigationJump to search
Line 36: | Line 36: | ||
7 8 | 7 8 | ||
</source> | </source> | ||
===Määratud laiendiga failide kustutamine avatud kataloogis=== | ===Määratud laiendiga failide kustutamine avatud kataloogis=== | ||
Line 45: | Line 46: | ||
*'''.''' - otsitakse faile avatud kataloogis | *'''.''' - otsitakse faile avatud kataloogis | ||
*'''-name *.log''' - failid on mistahes nimega kuid laiendiga ''.log'' | *'''-name *.log''' - failid on mistahes nimega kuid laiendiga ''.log'' | ||
===Määratud laiendiga failide kustutamine avatud kataloogis, kus faili nimedes on tühikud või reavahetused=== | ===Määratud laiendiga failide kustutamine avatud kataloogis, kus faili nimedes on tühikud või reavahetused=== | ||
Line 59: | Line 61: | ||
*'''-0''' määrab, et käsu ''standard sisendi'' tulemust eraldaja ei ole tühik ega reavahetus vaid ''null karakter''. Vajalik selleks, kui faili nimed sisaldavad tühikuid või reavahetusi. | *'''-0''' määrab, et käsu ''standard sisendi'' tulemust eraldaja ei ole tühik ega reavahetus vaid ''null karakter''. Vajalik selleks, kui faili nimed sisaldavad tühikuid või reavahetusi. | ||
===Kõikide arvuti kasutajate kuvamine viie kaupa=== | |||
<source lang="bash"> | |||
cut -d: -f1 < /etc/passwd | sort | xargs -n 5 | |||
</source> | |||
'''cut''' võtmete selgitus: | |||
*'''-d:''' - välja eraldajaks on ":" | |||
*'''-f1''' - valitakse esimene väli | |||
5- | '''xargs''' võtmete selgitus: | ||
*'''-n 5''' standard sisendi argumente kuvatakse viie kaupa | |||
<source lang="bash"> | |||
$ cut -d: -f1 < /etc/passwd | sort | xargs -n 5 | |||
avahi avahi-autoipd backup bin daemon | |||
games gdm gnats hplip irc | |||
kernoops libuuid list lp mail | |||
man messagebus news nobody proxy | |||
pulse root rtkit saned speech-dispatcher | |||
sync sys syslog student usbmux | |||
uucp www-data | |||
</source> | |||
==Kokkuvõte== | ==Kokkuvõte== |
Revision as of 23:17, 21 June 2011
Artikkel on pooleli!
Sissejuhatus
xargs käsku kasutatakse juhtudeks, kus on vaja jaotada mingi käsu tegevused väiksemateks gruppideks. xargs sai loodud probleemi tõttu, kus käsul on liiga palju argumente ning kernel (kuni versioonini 2.6.23) ei ole võimeline käivitama käsku.
- xargs loeb argumente standard sisendist
- xargs standard sisendi argumendid on piiritletud tühikutega või reavahetustega
- peale standard sisendi lugemist käivitatakse soovitud käsk üks või mitu korda standard sisendist saadud argumentidega.
Näide, kus käsu käivitamine ebaõnnestub liigsete argumentide hulga tõttu:
$ mv * /mingi/teine/kataloog/
bash: /bin/mv: Argument list too long
Süntaks
<argumendid> | xargs <võtmed> <käsk <võtmed>>
Näited
Argumentide väljastamine kolme kaupa
$ echo 1 2 3 4 5 6 7 8 | xargs -n 3 echo
või
$ echo 1 2 3 4 5 6 7 8 | xargs -n 3
echo on xargs vaikimisi käsk, seega ei ole tarvis määrata käsku.
-n 3 määrab, et käsu standard sisendi tulemust kuvatakse kolme kaupa
$ echo 1 2 3 4 5 6 7 8 | xargs -n 3
1 2 3
4 5 6
7 8
Määratud laiendiga failide kustutamine avatud kataloogis
$ find . -name *.log | xargs rm
find võtmete selgitus:
- . - otsitakse faile avatud kataloogis
- -name *.log - failid on mistahes nimega kuid laiendiga .log
Määratud laiendiga failide kustutamine avatud kataloogis, kus faili nimedes on tühikud või reavahetused
$ find . -name *.log -print0 | xargs -0 rm
find võtmete selgitus:
- . - otsitakse faile avatud kataloogis
- -name *.log - failid on mistahes nimega kuid laiendiga .log
- -print0 - leitud argumendid eraldatakse null karakteriga
xargs võtmete selgitus:
- -0 määrab, et käsu standard sisendi tulemust eraldaja ei ole tühik ega reavahetus vaid null karakter. Vajalik selleks, kui faili nimed sisaldavad tühikuid või reavahetusi.
Kõikide arvuti kasutajate kuvamine viie kaupa
cut -d: -f1 < /etc/passwd | sort | xargs -n 5
cut võtmete selgitus:
- -d: - välja eraldajaks on ":"
- -f1 - valitakse esimene väli
xargs võtmete selgitus:
- -n 5 standard sisendi argumente kuvatakse viie kaupa
$ cut -d: -f1 < /etc/passwd | sort | xargs -n 5
avahi avahi-autoipd backup bin daemon
games gdm gnats hplip irc
kernoops libuuid list lp mail
man messagebus news nobody proxy
pulse root rtkit saned speech-dispatcher
sync sys syslog student usbmux
uucp www-data
Kokkuvõte
(probleem pole nii õudne, kuid eksisteerib)
Allikad/Allikad
- http://en.wikipedia.org/wiki/Xargs
- http://www.gnu.org/software/coreutils/faq/coreutils-faq.html#Argument-list-too-long
- http://www.cyberciti.biz/faq/linux-unix-bsd-xargs-construct-argument-lists-utility/
- http://www.linuxtutorialblog.com/post/tutorial-the-best-tips-tricks-for-bash
- http://www.softpanorama.org/Tools/xargs.shtml
Autor
Marko Valing, AK31, 2010/2011