🐧 Linux Junior. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎΠ΄ Linux.
3.12K subscribers
159 photos
2 videos
1 file
89 links
Канал для программистов Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΡ… с Linux.
ΠŸΠΎΡ‡Ρ‚ΠΈ всС Python Π΄Π΅Π²Π΅Π»ΠΎΠΏΠ΅Ρ€Ρ‹ с Π½Π°ΠΌΠΈ Π½Ρƒ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Ρ‚ΠΎΠΆΠ΅ подтянутся.

По Ρ€Π΅ΠΊΠ»Π°ΠΌΠ΅: @jannytg
@anothertechrock
Download Telegram
This media is not supported in your browser
VIEW IN TELEGRAM
πŸ”₯ ΠŸΠΎΠ½ΡΡ‚Π½Π°Ρ, интСрактивная ΠΈ доходчивая ΡˆΠΏΠ°Ρ€Π³Π°Π»ΠΊΠ° для Π½ΠΎΠ²ΠΈΡ‡ΠΊΠΎΠ² Π² сСтСвых ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π°Ρ…
Please open Telegram to view this post
VIEW IN TELEGRAM
πŸ”₯7
πŸ‘©β€πŸ’» Команда sync

Π£Ρ‚ΠΈΠ»ΠΈΡ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ sync синхронизируСт Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· кэша Π² ΠΏΠΎΡΡ‚ΠΎΡΠ½Π½ΡƒΡŽ ΠΏΠ°ΠΌΡΡ‚ΡŒ.

Π”Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ Π΅Π΅ примСнСния.

1️⃣ Бинхронизация кэша ΡŽΠ·Π΅Ρ€Π°

Π­Ρ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° синхронизируСт Π΄Π°Π½Π½Ρ‹Π΅ кэша с ТСстким диском:

$ sync


2️⃣ Бинхронизация ΡŽΠ·Π΅Ρ€ΡΠΊΠΈΡ… Ρ„Π°ΠΉΠ»ΠΎΠ²

Когда Π²Ρ‹ Π΄Π°Π΅Ρ‚Π΅ ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΈ sudo ΠΊΠΎΠΌΠ°Π½Π΄Π΅ sync, ΠΎΠ½Π° синхронизируСт всС смонтированныС Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Π΅ систСмы Π½Π° ТСстком дискС:

$ sudo sync


Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Π΅ систСмы ΡŽΠ·Π΅Ρ€Π°:

$ df


МоТно ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ, сколько Π΄Π°Π½Π½Ρ‹Ρ… смонтированы Π² ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ "/", Π² Ρ€Π°Π·Π΄Π΅Π» - "/dev/sda3".

3️⃣ Бинхронизация Π΄Π°Π½Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»Π°

Команда sync прСдоставляСт ΠΎΠΏΡ†ΠΈΠΈ -d ΠΈΠ»ΠΈ -data для синхронизации/копирования Π΄Π°Π½Π½Ρ‹Ρ… кэша Ρ„Π°ΠΉΠ»Π° Π½Π° ТСсткий диск:

$ sync -d /home/testfile1.txt


4️⃣ Бинхронизация Π΄Π°Π½Π½Ρ‹Ρ… Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Ρ„Π°ΠΉΠ»ΠΎΠ²

Для синхронизации Π΄Π°Π½Π½Ρ‹Ρ… кэша Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Ρ„Π°ΠΉΠ»ΠΎΠ², Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

$ sync -d /home/testfile1.txt ~/Desktop/Samplevideo.mp4


5️⃣ Бинхронизация Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы

ΠžΠΏΡ†ΠΈΠΈ -f ΠΈΠ»ΠΈ -file-system ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΡŽΠ·Π΅Ρ€Ρƒ ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ вмСстС с Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹ΠΌΠΈ систСмами:

$ sync -f /home/Downloads/testfile2.txt


6️⃣ Бинхронизация Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Ρ… систСм

Команда sync ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ/ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ нСсколько Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Ρ… систСм с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹:

$ sync -f /home/file1.txt ~/Desktop/Samplevideo.mp4


7️⃣ Бинхронизация Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ Ρ€Π°Π·Π΄Π΅Π»Π°

ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ»ΠΎΠ²ΡƒΡŽ систСму ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ Ρ€Π°Π·Π΄Π΅Π»Π° систСмы:

$ sudo sync /dev/sda3


8️⃣ Бинхронизация ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° ΠΈ ΠΏΠΎΠ΄ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ²

Для синхронизации ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° с ΠΈΠΌΠ΅Π½Π΅ΠΌ "/var/log/syslog" ΠΈ Π΅Π³ΠΎ ΠΏΠΎΠ΄ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π°:

$ sudo sync /var/log/syslog
Please open Telegram to view this post
VIEW IN TELEGRAM
πŸ‘2
Автоматизация Π·Π°Π΄Π°Ρ‡ с xargs

МногиС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ Linux Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΡΠ»Ρ‹ΡˆΠ°Π»ΠΈ ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ xargs, хотя это ΠΌΠΎΡ‰Π½Ρ‹ΠΈΜ† инструмСнт для Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ Π·Π°Π΄Π°Ρ‡ ΠΈ запуска ΠΊΠΎΠΌΠ°Π½Π΄ с Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ.

Π£Ρ‚ΠΈΠ»ΠΈΡ‚Π° ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ Π²Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· стандартного ΠΏΠΎΡ‚ΠΎΠΊΠ° Π²Π²ΠΎΠ΄Π° (STDIN). Они ΠΌΠΎΠ³ΡƒΡ‚ Ρ‚ΡƒΠ΄Π° ΠΏΠΎΡΡ‚ΡƒΠΏΠ°Ρ‚ΡŒ Π»ΠΈΠ±ΠΎ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ ΠΎΡ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Π»ΠΈΠ±ΠΎ ΠΎΡ‚ сторонних ΠΊΠΎΠΌΠ°Π½Π΄ Ρ‡Π΅Ρ€Π΅Π· ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€ |.

Рассмотрим простой ΠΏΡ€ΠΈΠΌΠ΅Ρ€. ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Π²Ρ‹ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚Π΅ΡΡŒ Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ с трСмя Ρ„Π°ΠΈΜ†Π»Π°ΠΌΠΈ:

$ ls -1
file1.txt
file2.txt
file3.txt


ΠŸΠ΅Ρ€Π΅Π΄Π°Π΄ΠΈΠΌ Π΄Π°Π½Π½Ρ‹ΠΉ список Π² xargs, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ слуТил Π²Ρ…ΠΎΠ΄Π½Ρ‹ΠΌΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ, ΠΈ wc -l Π² качСствС шаблона ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹:

$ ls -1 | xargs wc -l
3 file1.txt
4 file2.txt
1 file3.txt
8 total


Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ xargs ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠ» шаблон ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ wc -l ΠΊ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ Ρ„Π°ΠΉΠ»Ρƒ для подсчСта строк.

НСдостаток ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ xargs Ρ‚ΡƒΡ‚ Π½Π΅ трСбуСтся, ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΠΎΠΉΡ‚ΠΈΡΡŒ сопоставлСниСм Ρ„Π°ΠΈΜ†Π»ΠΎΠ² с шаблоном:

$ wc -l *
3 file1.txt
4 file2.txt
...


Π—Π°Ρ‡Π΅ΠΌ Ρ‚ΠΎΠ³Π΄Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ xargs?

Π•Π΅ ΠΌΠΎΡ‰ΡŒ становится ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎΠΈΜ†, ΠΊΠΎΠ³Π΄Π° Π²Ρ…ΠΎΠ΄Π½Ρ‹Π΅ строки Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ слоТнСС.

ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΎΠ±ΠΎΠΉΡ‚ΠΈ Π΄Π΅Ρ€Π΅Π²ΠΎ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ² ΠΈ ΠΏΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ количСство строк Π²ΠΎ всСх python скриптах с ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ, ΠΎΠΊΠ°Π½Ρ‡ΠΈΠ²Π°ΡŽΡ‰ΠΈΠΌΠΈΡΡ Π½Π° ".py".

Π’Π°ΠΊΠΎΠΈΜ† список ΠΏΡƒΡ‚Π΅ΠΈΜ† ΠΊ Ρ„Π°ΠΈΜ†Π»Π°ΠΌ Π»Π΅Π³ΠΊΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ find:

$ find . -type f -name \*.py -print

/usr/lib/bup/bup/options.py
/usr/lib/bup/bup/xstat.py
...


Π’Π΅ΠΏΠ΅Ρ€ΡŒ xargs ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ шаблон ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΊ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ Ρ„Π°ΠΈΜ†Π»Ρƒ:

$ find / -type f -name \*.py -print | xargs wc -l

292 /usr/lib/bup/bup/options.py
112 /usr/lib/bup/bup/xstat.py
...


ΠšΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€ΡƒΡ find ΠΈ xargs, ΠΌΠΎΠΆΠ½ΠΎ Π΄Π°Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π»ΡŽΠ±ΠΎΠΈΜ† ΠΊΠΎΠΌΠ°Π½Π΄Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ с ΠΎΠ±Ρ…ΠΎΠ΄ΠΎΠΌ всСй Ρ„Π°ΠΈΜ†Π»ΠΎΠ²ΠΎΠΈΜ† систСмы, затрагивая Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π΅ рСсурсы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‚ критСриям.

ΠžΠΏΡ†ΠΈΠΈ xargs

Команда xargs ΠΈΠΌΠ΅Π΅Ρ‚ мноТСство ΠΎΠΏΡ†ΠΈΠΈΜ†. Рассмотрим Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ интСрСсныС: -n, -I ΠΈ -0.

1️⃣ ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ "-n" ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Ρ‚ΠΎ количСство Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½ΠΎ Π½Π° 1 Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹:

$ ls | xargs echo
file1.txt file2.txt

$ ls | xargs -n1 echo
file1.txt
file2.txt


Π’ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌ случаС ΠΊΠΎΠΌΠ°Π½Π΄Π° echo выполнится 2 Ρ€Π°Π·Π°: ΠΏΠΎ Π²Ρ‹Π·ΠΎΠ²Ρƒ Π½Π° Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚.

2️⃣ ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ -I опрСдСляСт мСсто Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… строк Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΎΠ½ΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΡŽΡ‚ΡΡ Π² ΠΊΠΎΠ½Π΅Ρ†, Π½ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΠΈΡ… ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² Π΄Ρ€ΡƒΠ³ΠΎΠΌ мСстС.

ПослС -I Π²Π²Π΅Π΄ΠΈΡ‚Π΅ Π»ΡŽΠ±ΡƒΡŽ строку, ΠΈ ΠΎΠ½Π° станСт ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΠΎΠΌ, ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΌ, ΠΊΡƒΠ΄Π° слСдуСт Π²ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹:

$ ls | xargs -I XYZ echo XYZ is OK
file1.txt is OK
file2.txt is OK


ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ -I ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ xargs ΠΎΠ΄Π½ΠΎΠΈΜ† Π²Ρ…ΠΎΠ΄Π½ΠΎΠΈΜ† строкой Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ.

Π­Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ Ссли Π²Ρ…ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠΎΡ‚ΠΎΠΊ пСрСдаСтся "сплошняком", Π΅Π³ΠΎ Π½ΡƒΠΆΠ½ΠΎ Ρ€Π°Π·Π±ΠΈΡ‚ΡŒ Π½Π° строки, Ρ‡Ρ‚ΠΎΠ±Ρ‹ подстановка ΠΎΡ‚Ρ€Π°Π±ΠΎΡ‚Π°Π»Π° для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ элСмСнта, ΠΈΠ½Π°Ρ‡Π΅ вСсь ΠΏΠΎΡ‚ΠΎΠΊ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠ»ΡƒΠΆΠΈΡ‚ΡŒ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΌ.

3️⃣ ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ -0 ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ символ "\0" Π² качСствС раздСлитСля Π΄Π°Π½Π½Ρ‹Ρ… вмСсто "\n" ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΠ±Π΅Π»Π°. Он часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΡ€ΠΈ объСдинСнии find ΠΈ xargs, Ρ‚.ΠΊ., ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ xargs ΠΎΠΆΠΈΠ΄Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ строки Π±ΡƒΠ΄ΡƒΡ‚ Ρ€Π°Π·Π΄Π΅Π»Π΅Π½Ρ‹ ΠΏΡ€ΠΎΠ±Π΅Π»Π°ΠΌΠΈ.

А Ссли ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ элСмСнты Π² строках содСрТат Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΈΠΌΠ΅Π½Π° Ρ„Π°ΠΈΜ†Π»ΠΎΠ²?

По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Π° Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ ΠΈΡ… ΠΊΠ°ΠΊ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΠΈ Π²Π²ΠΎΠ΄Π° ΠΈ, Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅, ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ Π½Π΅ΠΏΠΎΠ»Π½Ρ‹Π΅ строки ΠΊΠΎΠΌΠ°Π½Π΄Π΅ Π² качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ².

НапримСр, Ссли Π²Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ "file num 1.txt", xargs ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ всС ΠΏΠΎ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΈ, вСроятно, Π²Ρ‹Π²Π΅Π΄Π΅Ρ‚ ΠΎΡˆΠΈΠ±ΠΊΡƒ:


$ find ./ -type f -name \*.txt -print | xargs wc -l

wc: ./file: No such file or directory
wc: num: No such file or directory
wc: 1.txt: No such file or directory


Как Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ Π²Ρ…ΠΎΠ΄Π½Ρ‹Π΅ строки нулями вмСсто символов Π½ΠΎΠ²ΠΎΠΈΜ† строки? К ΡΡ‡Π°ΡΡ‚ΡŒΡŽ, Ρƒ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ find Π΅ΡΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„Π»Π°Π³Π° -print0:

$ find ./ -name \*.txt -print0

./file1.txt./file num 1.txt


Π’Π΅ΠΏΠ΅Ρ€ΡŒ xargs Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΊΠ°Ρ‚ΡŒ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŒ "\0" ΠΈ ΠΏΠΎ Π½Π΅ΠΌΡƒ сформируСт ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹ΠΉ список Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² для wc -l:

$ find ./ -name \*.txt -print0 | xargs -0 wc -l

0 ./file1.txt
0 ./file num 1.txt
0 total
Please open Telegram to view this post
VIEW IN TELEGRAM
πŸ‘7
❓ Как ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ сообщСниС всСм ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹ΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ?

ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Ρ€Π΅Π±ΡƒΡ‚Π½ΡƒΡ‚ΡŒ сСрвСр, Π½ΠΎ Π½Π° Π½Π΅ΠΌ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ с Π²Π°ΠΌΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ люди. Как ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ΠΈΠΌ сообщСниС Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π΅?

ΠžΡ‚Π²Π΅Ρ‚ Ρ‡Π΅Ρ€Π΅Π· час.

#вопросы
Please open Telegram to view this post
VIEW IN TELEGRAM
πŸ”₯1
Для ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ сообщСния всСм ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ сразу ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π° wall (Ρ€Π°ΡΡˆΠΈΡ„Ρ€ΠΎΠ²Ρ‹Π²Π°Π΅Ρ‚ΡΡ ΠΊΠ°ΠΊ write to all, Ρ‚.Π΅. β€œΠ½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ всСм”).

$ wall
I'm going to reboot the server at 14:00!

ПослС наТатия Ctrl+D сообщСниС Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½ΠΎ.
πŸ‘12
Π¨Π°Π±Π»ΠΎΠ½Ρƒ a?b* Π±ΡƒΠ΄ΡƒΡ‚ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹...
Anonymous Quiz
6%
afcc, aabb
55%
aabb, axbc
17%
abbb, abxy
5%
abcd, axbb
17%
ΠŸΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΎΡ‚Π²Π΅Ρ‚
Как Π±Ρ‹Ρ‚ΡŒ, Ссли Π½Π΅ моТСшь Π²ΡΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Π² Linux?

Π’ΠΎΡ‚ Π±Ρ‹Π²Π°Π΅Ρ‚ Ρ‚Π°ΠΊΠΎΠ΅, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π° Π²Ρ‹Π»Π΅Ρ‚Π΅Π»Π° ΠΈΠ· Π³ΠΎΠ»ΠΎΠ²Ρ‹. ΠŸΡ€ΠΈΡ‡Π΅ΠΌ ΠΏΡ€ΠΈΡ…Π²Π°Ρ‚ΠΈΠ»Π° Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ своС Π½Π°Π·Π²Π°Π½ΠΈΠ΅, Π½ΠΎ ΠΈ ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ с ΠΊΠ»ΡŽΡ‡Π°ΠΌΠΈ. Π§Ρ‚ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ? Π’ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡΡ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚ΠΎΠΉ man с Π½ΡƒΠΆΠ½Ρ‹ΠΌΠΈ ΠΊΠ»ΡŽΡ‡Π°ΠΌΠΈ:

man -k <ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово>


НапримСр, Π²Ρ‹ Π·Π°Π±Ρ‹Π»ΠΈ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, Π½ΠΎ ΠΏΠΎΠΌΠ½ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΎΠ½Π° ΠΊΠ°ΠΊ-Ρ‚ΠΎ связана с диском. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π²Π²ΠΎΠ΄ΠΈΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ строку Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»:

man -k disk


Π’ Π²Ρ‹Ρ…Π»ΠΎΠΏ ΠΏΠΎΠΏΠ°Π΄Π°ΡŽΡ‚ всС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, связанныС с дисками. Π›Π΅Π³ΠΊΠΎ Π½Π°ΠΉΡ‚ΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡƒΡŽ, Π²ΡΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ Π΅Π΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΈ Π½ΡƒΠΆΠ½Ρ‹Π΅ ΠΊΠ»ΡŽΡ‡ΠΈ. ΠŸΡ€Π°Π²Π΄Π°, всС ΠΎΡ‡Π΅Π½ΡŒ просто? Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ, ΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡΡ ΠΈ наслаТдаСмся!
πŸ”₯15πŸ‘7πŸ€”1
Π”Π²ΠΎΠΉΠ½Ρ‹Π΅ Ρ‚ΠΈΡ€Π΅ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ… Linux

ΠŸΠΎΡ€ΠΎΠΉ ΠΎΠΏΡ‹Ρ‚Π½Ρ‹Π΅ Π°Π΄ΠΌΠΈΠ½Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² консоли ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:
ssh root@linuxzone.ru --


Π§Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ это Π΄Π²ΠΎΠΉΠ½ΠΎΠ΅ Ρ‚ΠΈΡ€Π΅? Π—Π°Ρ‡Π΅ΠΌ ΠΎΠ½ΠΎ? Π”Π°Π²Π°ΠΉΡ‚Π΅ Ρ€Π°Π·Π±ΠΈΡ€Π°Ρ‚ΡŒΡΡ.

Π”Π²ΠΎΠΉΠ½ΠΎΠ΅ Ρ‚ΠΈΡ€Π΅ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Β«Ρ„Π»Π°Π³ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки». Оно ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ssh ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ Π½Π΅ ΠΏΡ‹Ρ‚Π°Ρ‚ΡŒΡΡ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ слСдуСт послС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ². На словах выглядит Π½Π΅ ΠΎΡ‡Π΅Π½ΡŒ, Π΄Π°Π²Π°ΠΉΡ‚Π΅ посмотрим Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅!

Π£ мСня Π΅ΡΡ‚ΡŒ такая ΠΊΠΎΠΌΠ°Π½Π΄Π°:
ssh root@linuzone.ru -- command1 --arg1 --arg2


ΠŸΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ Π²Ρ‹ΡˆΠ΅ синтаксис ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ssh Π½Π΅ ΠΏΡ‹Ρ‚Π°Ρ‚ΡŒΡΡ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ arg1 ΠΈ arg2 послС символа --. Π­Ρ‚ΠΎ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π° command1 ΠΏΡ€ΠΈΠΌΠ΅Ρ‚ arg1 ΠΈ arg2 Π² качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки ΠΈ выполнится Π½Π° ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠΌ сСрвСрС.

ΠšΠΎΡ€ΠΎΡ‡Π΅ говоря ΠΌΡ‹ сообщаСм ssh: всС Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΈΠ΄Π΅Ρ‚ послС Π΄Π²ΠΎΠΉΠ½ΠΎΠ³ΠΎ Ρ‚ΠΈΡ€Π΅, это Π½Π΅ Ρ‚Π²ΠΎΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΈ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹, Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ это НЕ ΠΠΠ”Πž! БВОП! Π”Π°Π»ΡŒΡˆΠ΅ Π΄Π΅Π»ΠΎ Π·Π° command1 ΠΈ Π΅Π³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ ΠΈ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ.

Π”Π²ΠΎΠΉΠ½ΠΎΠ΅ Ρ‚ΠΈΡ€Π΅ Π½Π΅ обрабатываСтся ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ°ΠΌΠΈ bash/zsh/csh/sh/fish ΠΈ Ρ‚.ΠΏ. Оно обрабатываСтся срСдствами самих ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, Π½ΠΎ НЕ всСх. НапримСр ssh это ΡƒΠΌΠ΅Π΅Ρ‚ Π΄Π΅Π»Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊ ΠΈ мноТСство Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΊΠΎΠΌΠ°Π½Π΄ ΠΈ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚. Рассмотрим Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹.

НапримСр, Π²Ρ‹ Π½Π΅ смоТСтС ΠΏΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„Π°ΠΉΠ» с ΠΈΠΌΠ΅Π½Π΅ΠΌ --file ΠΈΠ»ΠΈ -f, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ cat. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠ΅ΠΌ:
cat --file
cat -f


Опа. Ошибка! cat: unrecognized option --file/f. Π”Π°Π²Π°ΠΉΡ‚Π΅ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΄ΠΈΠΌ Π΄Π²ΠΎΠΉΠ½ΠΎΠ΅ Ρ‚ΠΈΡ€Π΅:
cat -- --file
cat -- -f


Ошибка ΠΏΡ€ΠΎΠΏΠ°Π»Π° ΠΈ Ρ„Π°ΠΉΠ» ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ вывСлся Π½Π° экран, Π½Ρƒ Π»ΠΈΠ±ΠΎ выскочило сообщСниС cat: --file/f: No such file or directory. Π­Ρ‚ΠΎ Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ.

Π—Π°ΠΊΡ€Π΅ΠΏΠΈΠΌ:
rm --file       = ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ ΠΎΡˆΠΈΠ±ΠΊΡƒ
rm -- '--file' = Π° Π²ΠΎΡ‚ это сработаСт


Ну Π° Ρ‡Ρ‚ΠΎ Π±Ρ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Π² rm, Π΄Π΅Π»Π°Π΅ΠΌ Ρ‚Π°ΠΊ:
rm -v -i -- '--file'
rm -f -v -i -- '-f'


ΠŸΡ€ΠΎΡΡ‚ΠΎ, Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ, ΠΌΠ΅Π»ΠΎΠ΄ΠΈΡ‡Π½ΠΎ. Но ΠΊΠ°ΠΊ я ΠΈ сказал Π²Ρ‹ΡˆΠ΅, Π½Π΅ всС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΡƒΠΌΠ΅ΡŽΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Π΄Π²ΠΎΠΉΠ½Ρ‹ΠΌ Ρ‚ΠΈΡ€Π΅. НапримСр, ΠΊΠΎΠΌΠ°Π½Π΄Π° echo. ВсС ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠΈ ΠΏΠΎΠ΄Ρ€ΡƒΠΆΠΈΡ‚ΡŒ Π΅Ρ‘ с Π΄Π²ΠΎΠΉΠ½Ρ‹ΠΌ Ρ‚ΠΈΡ€Π΅ просто-напросто провалятся:
/usr/bin/echo -- -n
echo -- --test


ВывСдСтся это:
-- -n
-- --test
πŸ‘6πŸ”₯5