Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡ ΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Xargs
Xargs ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΠΈΡΡ ΠΎΠ΄ΡΡΠΈΠ΅ Π΄Π°Π½Π½ΡΠ΅ Π΄ΡΡΠ³ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ (ΡΡΠΎ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΈΠΌΠ΅Π½Π° ΡΠ°ΠΉΠ»ΠΎΠ², Π½ΠΎΠΌΠ΅ΡΠ° ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ² ΠΈ Ρ. Π΄.) ΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ Ρ Π½ΠΈΠΌΠΈ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠ°Π½ΠΈΠΏΡΠ»ΡΡΠΈΠΈ.
ΠΠ΄Π½Π°ΠΊΠΎ ΡΡΠΈΠ»ΠΈΡΠ° ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ ΠΏΠΎΡΠΎΠΊ Π²ΡΠ²ΠΎΠ΄Π° ΠΏΡΠΈ Π½Π°Π±ΠΎΡΠ΅ Π² ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π΅.
Π, Π΅ΡΠ»ΠΈ ΠΎΠ½Π° Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΡΡ Π±Π΅Π· ΠΊΠ°ΠΊΠΈΡ -Π»ΠΈΠ±ΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ², ΡΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π° echo ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π±ΡΠ΄Π΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π²ΡΠ΅Π³ΠΎ Π½Π°Π±ΡΠ°Π½Π½ΠΎΠ³ΠΎ ΡΠ΅ΠΊΡΡΠ° (Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΠ΅ Π²Π²ΠΎΠ΄Π° Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π½Π°ΠΆΠ°ΡΠΈΠ΅ΠΌ Ctrl + d).
ΠΠΎΡ ΠΎΠ±ΡΠΈΠΉ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ ΡΡΠΈΠ»ΠΈΡΡ:
[SOME_COMMANDS |] xargs [params] [command [initial-argument]]
ΠΠ°ΡΠ΅ΠΌ xargs Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ Π΄Π»Ρ Π½ΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ, ΡΠΊΠ°Π·Π°Π½Π½ΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°.
ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π΄Π°Π½Π½ΡΠ΅ Π²ΡΡΠ°Π²Π»ΡΡΡΡΡ Π² ΡΠ°ΠΌΠΎΠΌ ΠΊΠΎΠ½ΡΠ΅ ΠΏΠΎΡΠ»Π΅ ΠΈΠΌΠ΅Π½ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΡΠΈΠ»ΠΈΡΡ, Π½ΠΎ ΡΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ, ΡΠΊΠ°Π·Π°Π² ΡΠΈΠ³ΡΡΠ½ΡΠ΅ ΡΠΊΠΎΠ±ΠΊΠΈ Π² ΡΠΎΠΌ ΠΌΠ΅ΡΡΠ΅, ΠΊΡΠ΄Π° ΠΈΡ Π½ΡΠΆΠ½ΠΎ Π²ΡΡΠ°Π²ΠΈΡΡ.
ΠΠΎΡΠΎΡΠΊΠ°Ρ (BSD) ΡΠΎΡΠΌΠ°
|
ΠΠ»ΠΈΠ½Π½Π°Ρ (GNU) ΡΠΎΡΠΌΠ°
|
ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ |
-0 | βnull |
Π·Π°ΠΌΠ΅Π½ΡΠ΅Ρ ΡΠΈΠΌΠ²ΠΎΠ»Ρ ΠΏΡΠΎΠ±Π΅Π»Π° ΠΈ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄Π° ΡΡΡΠΎΠΊΠΈ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠΌ ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈΡ NULL (Β«\0Β»); Ρ
ΠΎΡΠΎΡΠΎ ΡΠΎΡΠ΅ΡΠ°Π΅ΡΡΡ Ρ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ find
|
-l [max-lines] | βmaxlines[=max-lines] |
Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π³ΡΡΠΏΠΏΡ ΠΈΠ· Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΡΠΈΡΠ»Π° Π½Π΅ΠΏΡΡΡΡΡ
ΡΡΡΠΎΠΊ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ², ΡΡΠΈΡΠ°Π½Π½ΡΡ
ΠΈΠ· ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠ³ΠΎ Π²Π²ΠΎΠ΄Π°; Π² ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ -L, Π°ΡΠ³ΡΠΌΠ΅Π½Ρ max-lines ΡΠ²Π»ΡΠ΅ΡΡΡ Π½Π΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠΌ
|
-I replace |
ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π·Π°ΠΊΡΡΠ²Π°ΡΡΡΡ ΠΏΠ°ΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² (ΠΎΠ±ΡΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ {} ΠΈΠ»ΠΈ []), Π²ΠΌΠ΅ΡΡΠΎ ΠΊΠΎΡΠΎΡΡΡ
Π΄Π°Π½Π½ΡΠ΅, ΠΏΠ΅ΡΠ΅Π΄Π°Π½Π½ΡΠ΅ ΡΠ»Π΅Π²Π°, Π±ΡΠ΄ΡΡ Π·Π°ΠΌΠ΅Π½Π΅Π½Ρ Π΄Π»Ρ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ
|
|
-n max-args | βmax-args=max-args |
Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΠΊΠΎΠΌΠ°Π½Π΄Ρ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π²ΡΠ΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ ΡΡΠ΅Π½ΠΈΡ ΠΈΠ· ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠ³ΠΎ Π²Π²ΠΎΠ΄Π°, ΡΠΈΡΠ»ΠΎ ΠΊΠΎΡΠΎΡΡΡ
Π½Π΅ ΠΏΡΠ΅Π²ΡΡΠ°Π΅Ρ Π·Π°Π΄Π°Π½Π½ΡΠ΅ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΡΠ΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ
|
-p | βinteractive |
Π²ΠΊΠ»ΡΡΠ°Π΅Ρ ΡΠ΅ΠΆΠΈΠΌ ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π°: ΠΏΠ΅ΡΠ΅Π΄ ΠΊΠ°ΠΆΠ΄ΡΠΌ Π·Π°ΠΏΡΠΎΡΠΎΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π·Π°ΠΏΡΠ°ΡΠΈΠ²Π°Π΅ΡΡΡ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΠ΅
|
-r | βno-run-if-empty |
Π½Π΅ Π²ΡΠ·ΡΠ²Π°Π΅Ρ ΡΡΠΈΠ»ΠΈΡΡ, Π΅ΡΠ»ΠΈ ΡΠΏΠΈΡΠΎΠΊ Π²Π²ΠΎΠ΄Π° ΠΏΡΡΡ
|
-t | βverbose |
Π²ΠΊΠ»ΡΡΠ°Π΅Ρ ΡΠ΅ΠΆΠΈΠΌ ΡΡΠ°ΡΡΠΈΡΠΎΠ²ΠΊΠΈ, ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Ρ ΠΏΠΎΠ»Π½ΠΎΠ΅ ΠΈΠΌΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ, Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΠΎΠΉ ΠΏΠ΅ΡΠ΅Π΄ Π·Π°ΠΏΡΡΠΊΠΎΠΌ Π² ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΌ ΠΏΠΎΡΠΎΠΊΠ΅ ΠΎΡΠΈΠ±ΠΎΠΊ
|
ΠΡΠΈΠΌΠ΅ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Xargs
Π§Π°ΡΠ΅ Π²ΡΠ΅Π³ΠΎ ΡΡΠΈΠ»ΠΈΡΠ° ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ Π΄Π°Π½Π½ΡΠ΅ ΠΈΠ· find.
ΠΠ΅ΡΠΌΠΎΡΡΡ Π½Π° ΡΠΎ, ΡΡΠΎ ΠΏΠΎΡΠ»Π΅Π΄Π½ΡΡ ΠΈΠΌΠ΅Π΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΡΠ΅ΡΠ΅Π· exec, ΡΡΠΎ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½ΡΠΉ ΠΈ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± ΡΠ°Π±ΠΎΡΡ ΡΠΎ ΠΌΠ½ΠΎΠ³ΠΈΠΌΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌΠΈ.
Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ² Π±ΡΠ΄ΡΡ ΡΠ²ΡΠ·Π°Π½Ρ Ρ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ find.
Π‘ΡΠΎΠΈΡ Π½Π°ΠΏΠΎΠΌΠ½ΠΈΡΡ, ΡΡΠΎ xargs Π½Π΅ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ ΠΈΠΌΠ΅Π½Π° ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ², ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΡ ΠΏΡΠΎΠ±Π΅Π»Ρ. Π§ΡΠΎΠ±Ρ Π²ΡΠΉΡΠΈ ΠΈΠ· ΡΠΈΡΡΠ°ΡΠΈΠΈ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ -0.
ΠΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ² Ρ ΠΏΠΎΠΌΠΎΡΡΡ Xargs
ΠΠ°ΠΉΠ΄ΠΈΡΠ΅ Π²ΡΠ΅ ΡΠ°ΠΉΠ»Ρ Ρ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ΠΌ .sh ΠΈ Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ ΡΡΠ°ΡΡΠΈΡΠΎΠ²ΠΊΠΈ ΡΠΊΠΎΠΏΠΈΡΡΠΉΡΠ΅ ΠΈΡ Π² Π΄ΡΡΠ³ΠΎΠΉ ΠΊΠ°ΡΠ°Π»ΠΎΠ³.
ΠΠ±ΡΡΠ½ΠΎΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ xargs cp destination/ Π½Π΅ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΡΡΠΈ ΡΠ°ΠΉΠ»Ρ Π±ΡΠ΄ΡΡ Π²ΡΡΠ°Π²Π»Π΅Π½Ρ Π² ΠΊΠΎΠ½ΡΠ΅ ΡΡΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ, ΡΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ Π±ΡΠ΄Π΅Ρ ΠΏΡΠ΅Π΄ΠΏΡΠΈΠ½ΡΡΠ° ΠΏΠΎΠΏΡΡΠΊΠ° ΡΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ Π² Π½ΠΈΡ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ /destination, ΡΡΠΎ ΡΠ²Π»ΡΠ΅ΡΡΡ Π°Π±ΡΡΡΠ΄ΠΎΠΌ.
Π‘Π»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ, Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΎΠΏΡΠΈΡ -I Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠΈΠ³ΡΡΠ½ΡΡ ΡΠΊΠΎΠ±ΠΎΠΊ, Π° Π·Π°ΡΠ΅ΠΌ ΡΠΊΠ°Π·Π°ΡΡ Π² cp ΠΌΠ΅ΡΡΠΎ, ΠΊΡΠ΄Π° Π±ΡΠ΄ΡΡ Π·Π°ΠΌΠ΅Π½Π΅Π½Ρ ΡΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ:
find . -name "*.sh" | xargs --verbose -I {} cp {} scripts/
ΠΡΠ²ΠΎΠ΄ ΡΡΠΎΠ»Π±ΡΠ°
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°ΡΡ ΠΈΡΡ ΠΎΠ΄ΡΡΠΈΠ΅ Π΄Π°Π½Π½ΡΠ΅ Π² Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΡΡΠΎΠ»Π±ΡΠ°Ρ .
ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΎΠΏΡΠΈΡ -n:
ls | xargs -n 2 | column -t
ΠΡΡ ΠΈΠ²ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΡΠΆΠ°ΡΠΈΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ² Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Xargs
find . -name β*.shβ | xargs tar jcf sh.tar.bz
Π£Π΄Π°Π»ΠΈΡΡ ΡΡΠ°ΡΡΠ΅ ΡΠ°ΠΉΠ»Ρ
ΠΠΎΠ»Π΅Π΅ ΡΠ»ΠΎΠΆΠ½Π°Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠ΄Π°Π»ΡΠ΅Ρ ΠΎΠ±ΡΠ΅ΠΊΡΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅ ~/tmp, Π΅ΡΠ»ΠΈ ΠΎΠ½ΠΈ Π±ΡΠ»ΠΈ ΡΠΎΠ·Π΄Π°Π½Ρ 7 Π΄Π½Π΅ΠΉ Π½Π°Π·Π°Π΄ ΠΈΠ»ΠΈ ΡΡΠ°ΡΡΠ΅:
find ~/tmp -type f -name β*β -mtime +7 -print0 | xargs -0 rm -f
ΠΠ»ΠΎΠΊΠΈ IP Π°Π΄ΡΠ΅ΡΠΎΠ²
ΠΡΠ΅Π½Ρ ΡΠ΄ΠΎΠ±Π½Π°Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠ°Ρ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°ΡΡ ΠΏΡΠ» IP, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΈΠ· ΡΠ°ΠΉΠ»Π°:
cat ip_blacklist | xargs -I IP iptables -A INPUT -s IP -j DROP
Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ ΡΡΠ°ΡΡΡ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² ΡΠ΄ΡΠ°
ΠΠΎΠ»Π΅Π·Π½Π°Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ, ΠΊΠΎΠ³Π΄Π° ΡΠΆΠ΅ Π½Π°ΠΊΠΎΠΏΠ»Π΅Π½ΠΎ ΠΌΠ½ΠΎΠ³ΠΎ Π½Π΅ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½Π½ΡΡ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² ΡΠ΄ΡΠ° (ΠΏΡΠΈΠΌΠ΅Π½ΠΈΠΌΠΎ ΠΊ ΡΠΈΡΡΠ΅ΠΌΠ°ΠΌ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Debian ΠΈ Ubuntu):
dpkg -l linux-* | gawk '/^ii/{ print $2}' | grep -v -e `uname -r | cut -f1,2 -d"-"` | grep -e [0-9] | xargs sudo apt -y purge