5 соврСмСнных Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ² старым инструмСнтам ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки Linux

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π±ΠΎΠ»Π΅Π΅ соврСмСнныС Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Ρ‹ наряду со старыми инструмСнтами ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ большС ΡƒΠ΄ΠΎΠ²ΠΎΠ»ΡŒΡΡ‚Π²ΠΈΡ ΠΈ Π΄Π°ΠΆΠ΅ ΠΏΠΎΠ²Ρ‹ΡΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Ρ‚Ρ€ΡƒΠ΄Π°.

5 соврСмСнных Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ² старым инструмСнтам ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки Linux

Π’ повсСднСвной Ρ€Π°Π±ΠΎΡ‚Π΅ Π² Linux / Unix ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ мноТСство инструмСнтов ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки β€” Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, du для ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° использования диска ΠΈ систСмных рСсурсов. НСкоторыС ΠΈΠ· этих инструмСнтов ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ ΡƒΠΆΠ΅ Π΄Π°Π²Π½ΠΎ. НапримСр, top появился Π² 1984 Π³ΠΎΠ΄Ρƒ, Π° ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Ρ€Π΅Π»ΠΈΠ· du датируСтся 1971 Π³ΠΎΠ΄ΠΎΠΌ.

Π—Π° ΠΏΡ€ΠΎΡˆΠ΅Π΄ΡˆΠΈΠ΅ Π³ΠΎΠ΄Ρ‹ эти инструмСнты Π±Ρ‹Π»ΠΈ ΠΌΠΎΠ΄Π΅Ρ€Π½ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ ΠΈ ΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ Π½Π° Ρ€Π°Π·Π½Ρ‹Π΅ систСмы, Π½ΠΎ Π² Ρ†Π΅Π»ΠΎΠΌ Π΄Π°Π»Π΅ΠΊΠΎ Π½Π΅ ΡƒΡˆΠ»ΠΈ ΠΎΡ‚ своих ΠΏΠ΅Ρ€Π²Ρ‹Ρ… вСрсий, ΠΈΡ… внСшний Π²ΠΈΠ΄ ΠΈ usability Ρ‚Π°ΠΊΠΆΠ΅ сильно Π½Π΅ измСнились.

Π­Ρ‚ΠΎ ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹Π΅ инструмСнты, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ ΠΌΠ½ΠΎΠ³ΠΈΠΌ систСмным администраторам. Однако сообщСство Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΎ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹Π΅ инструмСнты, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°ΡŽΡ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ прСимущСства. НСкоторыС ΠΈΠ· Π½ΠΈΡ… просто ΠΈΠΌΠ΅ΡŽΡ‚ соврСмСнный красивый интСрфСйс, Π° Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΠ»ΡƒΡ‡ΡˆΠ°ΡŽΡ‚ удобство использования. Π’ этом ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π΅ расскаТСм ΠΎ пяти Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π°Ρ… стандартным инструмСнтам ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки Linux.

1. ncdu vs du

NCurses Disk Usage (ncdu) ΠΏΠΎΡ…ΠΎΠΆ Π½Π° du, Π½ΠΎ с ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΌ интСрфСйсом Π½Π° основС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ curses. ncdu ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ структуру ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‚ Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ вашСго дискового пространства.

ncdu Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ диск, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹, отсортированныС ΠΏΠΎ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°ΠΌ ΠΈΠ»ΠΈ Ρ„Π°ΠΉΠ»Π°ΠΌ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

ncdu 1.14.2 ~ Use the arrow keys to navigate, press ? for help
--- /home/rgerardi ------------------------------------------------------------
   96.7 GiB [##########] /libvirt
   33.9 GiB [###       ] /.crc
    7.0 GiB [          ] /Projects
.   4.7 GiB [          ] /Downloads
.   3.9 GiB [          ] /.local
    2.5 GiB [          ] /.minishift
    2.4 GiB [          ] /.vagrant.d
.   1.9 GiB [          ] /.config
.   1.8 GiB [          ] /.cache
    1.7 GiB [          ] /Videos
    1.1 GiB [          ] /go
  692.6 MiB [          ] /Documents
. 591.5 MiB [          ] /tmp
  139.2 MiB [          ] /.var
  104.4 MiB [          ] /.oh-my-zsh
   82.0 MiB [          ] /scripts
   55.8 MiB [          ] /.mozilla
   54.6 MiB [          ] /.kube
   41.8 MiB [          ] /.vim
   31.5 MiB [          ] /.ansible
   31.3 MiB [          ] /.gem
   26.5 MiB [          ] /.VIM_UNDO_FILES
   15.3 MiB [          ] /Personal
    2.6 MiB [          ]  .ansible_module_generated
    1.4 MiB [          ] /backgrounds
  944.0 KiB [          ] /Pictures
  644.0 KiB [          ]  .zsh_history
  536.0 KiB [          ] /.ansible_async
 Total disk usage: 159.4 GiB  Apparent size: 280.8 GiB  Items: 561540

По записям ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒΡΡ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ клавиш со стрСлками. Если Π²Ρ‹ Π½Π°ΠΆΠΌΡ‘Ρ‚Π΅ Enter, ncdu ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ содСрТимоС Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°:

--- /home/rgerardi/libvirt ----------------------------------------------------
                         /..
   91.3 GiB [##########] /images
    5.3 GiB [          ] /media

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ этот инструмСнт, Ρ‡Ρ‚ΠΎΠ±Ρ‹, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, ΠΊΠ°ΠΊΠΈΠ΅ Ρ„Π°ΠΉΠ»Ρ‹ Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‚ большС всСго дискового пространства. Π’ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ, Π½Π°ΠΆΠ°Π² ΠΊΠ»Π°Π²ΠΈΡˆΡƒ со стрСлкой Π²Π»Π΅Π²ΠΎ. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ncdu Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹, Π½Π°ΠΆΠ°Π² ΠΊΠ»Π°Π²ΠΈΡˆΡƒ d. ΠŸΠ΅Ρ€Π΅Π΄ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΎΠ½ Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅Ρ‚ ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠ΅. Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ удалСния, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ ΡΠ»ΡƒΡ‡Π°ΠΉΠ½ΡƒΡŽ ΠΏΠΎΡ‚Π΅Ρ€ΡŽ Ρ†Π΅Π½Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ², ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΎΠΏΡ†ΠΈΡŽ -r для Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Ρ€Π΅ΠΆΠΈΠΌΠ° доступа Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для чтСния: ncdu -r.

ncdu доступСн для ΠΌΠ½ΠΎΠ³ΠΈΡ… ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌ ΠΈ дистрибутивов Linux. НапримСр, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ dnf для Π΅Π³ΠΎ установки Π½Π° Fedora нСпосрСдствСнно ΠΈΠ· ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠ΅Π²:

$ sudo dnf install ncdu

2. htop vs top

Htop β€” это интСрактивная ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π° для просмотра процСссов, похоТая Π½Π° top, Π½ΠΎ ΠΈΠ· ΠΊΠΎΡ€ΠΎΠ±ΠΊΠΈ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‰Π°Ρ приятноС взаимодСйствиС с ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ htop ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ Ρ‚Ρƒ ΠΆΠ΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ, Ρ‡Ρ‚ΠΎ ΠΈ top, Π½ΠΎ Π² Π±ΠΎΠ»Π΅Π΅ наглядном ΠΈ красочном Π²ΠΈΠ΄Π΅.

По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ htop выглядит Ρ‚Π°ΠΊ:

5 соврСмСнных Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ² старым инструмСнтам ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки Linux
Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ top:

5 соврСмСнных Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ² старым инструмСнтам ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки Linux
ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π² Π²Π΅Ρ€Ρ…Π½Π΅ΠΉ части htop ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ ΠΎΠ±Π·ΠΎΡ€Π½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ систСмС, Π° Π½ΠΈΠΆΠ½Π΅ΠΉ части β€” панСль для запуска ΠΊΠΎΠΌΠ°Π½Π΄ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… клавиш. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Π΅Ρ‘, Π½Π°ΠΆΠ°Π² F2, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ экран настройки. Π’ настройках ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ†Π²Π΅Ρ‚Π°, Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΈΠ»ΠΈ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ ΠΈΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ отобраТСния ΠΏΠ°Π½Π΅Π»ΠΈ ΠΎΠ±Π·ΠΎΡ€Π°.

Π₯отя, ΠΏΠΎΠΊΡ€ΡƒΡ‚ΠΈΠ² настройки послСдних вСрсий top, Ρ‚ΠΎΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ ΠΏΠΎΡ…ΠΎΠΆΠ΅Π³ΠΎ usability, htop прСдоставляСт ΡƒΠ΄ΠΎΠ±Π½Ρ‹Π΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ Π΅Π³ΠΎ Π±ΠΎΠ»Π΅Π΅ ΠΏΡ€Π°ΠΊΡ‚ΠΈΡ‡Π½Ρ‹ΠΌ ΠΈ простым Π² использовании.

3. tldr vs man

Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки tldr ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ ΡƒΠΏΡ€ΠΎΡ‰Ρ‘Π½Π½ΡƒΡŽ ΡΠΏΡ€Π°Π²ΠΎΡ‡Π½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ…, Π² основном ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹. Π•Π³ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΎ сообщСство tldr pages project.

Π‘Ρ‚ΠΎΠΈΡ‚ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ tldr β€” это Π½Π΅ Π·Π°ΠΌΠ΅Π½Π° man. Он ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ являСтся каноничСским ΠΈ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ»Π½Ρ‹ΠΌ инструмСнтом Π²Ρ‹Π²ΠΎΠ΄Π° справочных страниц. Однако Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… случаях man являСтся ΠΈΠ·Π±Ρ‹Ρ‚ΠΎΡ‡Π½Ρ‹ΠΌ. Когда Π²Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ½Π° ΠΈΡΡ‡Π΅Ρ€ΠΏΡ‹Π²Π°ΡŽΡ‰Π°Ρ информация ΠΎ ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π΅, Π²Ρ‹ просто ΠΏΡ‹Ρ‚Π°Π΅Ρ‚Π΅ΡΡŒ Π·Π°ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ основныС Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ Π΅Ρ‘ использования. НапримСр, страница man для ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ curl содСрТит ΠΏΠΎΡ‡Ρ‚ΠΈ 3000 строк. Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° tldr для curl ΠΈΠΌΠ΅Π΅Ρ‚ Π΄Π»ΠΈΠ½Ρƒ 40 строк. Π•Ρ‘ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ выглядит Ρ‚Π°ΠΊ:


$ tldr curl

# curl
  Transfers data from or to a server.
  Supports most protocols, including HTTP, FTP, and POP3.
  More information: <https://curl.haxx.se>.

- Download the contents of an URL to a file:

  curl http://example.com -o filename

- Download a file, saving the output under the filename indicated by the URL:

  curl -O http://example.com/filename

- Download a file, following [L]ocation redirects, and automatically [C]ontinuing (resuming) a previous file transfer:

  curl -O -L -C - http://example.com/filename

- Send form-encoded data (POST request of type `application/x-www-form-urlencoded`):

  curl -d 'name=bob' http://example.com/form                                                                                            
- Send a request with an extra header, using a custom HTTP method:

  curl -H 'X-My-Header: 123' -X PUT http://example.com                                                                                  
- Send data in JSON format, specifying the appropriate content-type header:

  curl -d '{"name":"bob"}' -H 'Content-Type: application/json' http://example.com/users/1234

... TRUNCATED OUTPUT

TLDR ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ «слишком Π΄Π»ΠΈΠ½Π½ΠΎ; Π½Π΅ Ρ‡ΠΈΡ‚Π°Π»Β»: Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ, Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ тСкст Π±Ρ‹Π» ΠΏΡ€ΠΎΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Π½ ΠΈΠ·-Π·Π° Π΅Π³ΠΎ Ρ‡Ρ€Π΅Π·ΠΌΠ΅Ρ€Π½ΠΎΠΉ многословности. НазваниС ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для этого инструмСнта, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ man-страницы, хотя ΠΈ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹, Π½ΠΎ ΠΈΠ½ΠΎΠ³Π΄Π° Π±Ρ‹Π²Π°ΡŽΡ‚ слишком Π΄Π»ΠΈΠ½Π½Ρ‹ΠΌΠΈ.

Для Fedora tldr Π±Ρ‹Π» написан Π½Π° Python. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π΅Π³ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Π° dnf. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ инструмСнта Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌ доступ ΠΊ ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Ρƒ. Но ΠΊΠ»ΠΈΠ΅Π½Ρ‚ Python Π² Fedora позволяСт Π·Π°Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒ ΠΈ ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ эти страницы для Π°Π²Ρ‚ΠΎΠ½ΠΎΠΌΠ½ΠΎΠ³ΠΎ доступа.

4. jq vs sed/grep

jq β€” это JSON-процСссор для ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки. Он ΠΏΠΎΡ…ΠΎΠΆ Π½Π° sed ΠΈΠ»ΠΈ grep, Π½ΠΎ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ JSON. Если Π²Ρ‹ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΈΠ»ΠΈ систСмный администратор, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ JSON Π² повсСднСвных Π·Π°Π΄Π°Ρ‡Π°Ρ…, этот инструмСнт для вас.

ОсновноС прСимущСство jq ΠΏΠ΅Ρ€Π΅Π΄ стандартными инструмСнтами ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ тСкста, Ρ‚Π°ΠΊΠΈΠΌΠΈ ΠΊΠ°ΠΊ grep ΠΈ sed, Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅Ρ‚ структуру Π΄Π°Π½Π½Ρ‹Ρ… JSON, позволяя ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ слоТныС запросы Π² ΠΎΠ΄Π½ΠΎΠΌ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ.

НапримСр, Π²Ρ‹ ΠΏΡ‹Ρ‚Π°Π΅Ρ‚Π΅ΡΡŒ Π½Π°ΠΉΡ‚ΠΈ названия ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ² Π² этом Ρ„Π°ΠΉΠ»Π΅ JSON:

{
  "apiVersion": "v1",
  "kind": "Pod",
  "metadata": {
    "labels": {
      "app": "myapp"
    },
    "name": "myapp",
    "namespace": "project1"
  },
  "spec": {
    "containers": [
      {
        "command": [
          "sleep",
          "3000"
        ],
        "image": "busybox",
        "imagePullPolicy": "IfNotPresent",
        "name": "busybox"
      },
      {
        "name": "nginx",
        "image": "nginx",
        "resources": {},
        "imagePullPolicy": "IfNotPresent"
      }
    ],
    "restartPolicy": "Never"
  }
}

ЗапуститС grep для поиска строки name:

$ grep name k8s-pod.json
        "name": "myapp",
        "namespace": "project1"
                "name": "busybox"
                "name": "nginx",

grep Π²Π΅Ρ€Π½ΡƒΠ» всС строки, содСрТащиС слово name. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π΅Ρ‰Ρ‘ нСсколько ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Π² grep, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚ΡŒ Π΅Π³ΠΎ, ΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… манипуляций с рСгулярными выраТСниями Π½Π°ΠΉΡ‚ΠΈ ΠΈΠΌΠ΅Π½Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ².

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ этот ΠΆΠ΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ jq, достаточно Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ:

$ jq '.spec.containers[].name' k8s-pod.json
"busybox"
"nginx"

Π­Ρ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° выдаст Π²Π°ΠΌ ΠΈΠΌΠ΅Π½Π° ΠΎΠ±ΠΎΠΈΡ… ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ². Если Π²Ρ‹ ΠΈΡ‰Π΅Ρ‚Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ имя Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°, Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ индСкс элСмСнта массива Π² Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅:

$ jq '.spec.containers[1].name' k8s-pod.json
"nginx"

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ jq Π·Π½Π°Π΅Ρ‚ ΠΎ структурС Π΄Π°Π½Π½Ρ‹Ρ…, ΠΎΠ½ Π΄Π°Ρ‘Ρ‚ Ρ‚Π΅ ΠΆΠ΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹, Π΄Π°ΠΆΠ΅ Ссли Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ Ρ„Π°ΠΉΠ»Π° Π½Π΅Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ измСнится. grep ΠΈ sed Π² этом случаС ΠΌΠΎΠ³ΡƒΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ.

Π£ jq ΠΌΠ½ΠΎΠ³ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, Π½ΠΎ для ΠΈΡ… описания Π½ΡƒΠΆΠ½Π° Π΅Ρ‰Ρ‘ ΠΎΠ΄Π½Π° ΡΡ‚Π°Ρ‚ΡŒΡ. Для получСния Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ΡΡŒ ΠΊ страницС ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° jq ΠΈΠ»ΠΈ ΠΊ tldr.

5. fd vs find

fd β€” это упрощённая Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π° ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π΅ find. Fd Π½Π΅ ΠΏΡ€ΠΈΠ·Π²Π°Π½ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π΅Ρ‘ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ: Π² Π½Ρ‘ΠΌ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ установлСны Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ распространённыС настройки, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰ΠΈΠ΅ ΠΎΠ±Ρ‰ΠΈΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΊ Ρ€Π°Π±ΠΎΡ‚Π΅ с Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ.

НапримСр, ΠΏΡ€ΠΈ поискС Ρ„Π°ΠΉΠ»ΠΎΠ² Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ рСпозитория Git, fd автоматичСски ΠΈΡΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ скрытыС Ρ„Π°ΠΉΠ»Ρ‹ ΠΈ ΠΏΠΎΠ΄ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΈ, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ .git, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΡƒΠ΅Ρ‚ ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹ ΠΈΠ· Ρ„Π°ΠΉΠ»Π° .gitignore. Π’ Ρ†Π΅Π»ΠΎΠΌ, ΠΎΠ½ ускоряСт поиск, выдавая Π±ΠΎΠ»Π΅Π΅ Ρ€Π΅Π»Π΅Π²Π°Π½Ρ‚Π½Ρ‹Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ с ΠΏΠ΅Ρ€Π²ΠΎΠΉ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠΈ.

По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ fd выполняСт поиск Π±Π΅Π· ΡƒΡ‡Ρ‘Ρ‚Π° рСгистра Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ с Ρ†Π²Π΅Ρ‚Π½Ρ‹ΠΌ Π²Ρ‹Π²ΠΎΠ΄ΠΎΠΌ. Π’ΠΎΡ‚ ΠΆΠ΅ поиск с использованиСм ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ find Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π²Π²ΠΎΠ΄Π° Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкС. НапримСр, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΠΉΡ‚ΠΈ всС Ρ„Π°ΠΉΠ»Ρ‹ .md (ΠΈΠ»ΠΈ .MD) Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅, Π½ΡƒΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ‚Π°ΠΊΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ find:

$ find . -iname "*.md"

Для fd ΠΎΠ½Π° выглядит Ρ‚Π°ΠΊ:

$ fd .md

Но Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… случаях ΠΈ для fd Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹: Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ссли Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ скрытыС Ρ„Π°ΠΉΠ»Ρ‹ ΠΈ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΈ, Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΏΡ†ΠΈΡŽ -H, хотя ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΏΡ€ΠΈ поискС это Π½Π΅ трСбуСтся.

fd доступСн для ΠΌΠ½ΠΎΠ³ΠΈΡ… дистрибутивов Linux. Π’ Fedora Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Ρ‚Π°ΠΊ:

$ sudo dnf install fd-find

ΠΠ΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΡ‚ Ρ‡Π΅Π³ΠΎ-Ρ‚ΠΎ ΠΎΡ‚ΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Π»ΠΈ Π²Ρ‹ Π½ΠΎΠ²Ρ‹Π΅ инструмСнты ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки Linux? Или сидитС ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π½Π° старых? Но скорСС всСго, Ρƒ вас ΠΊΠΎΠΌΠ±ΠΎ, Π΄Π°? ΠŸΠΎΠΆΠ°Π»ΡƒΠΉΡΡ‚Π°, ΠΏΠΎΠ΄Π΅Π»ΠΈΡ‚Π΅ΡΡŒ вашим ΠΎΠΏΡ‹Ρ‚ΠΎΠΌ Π² коммСнтариях.

На ΠΏΡ€Π°Π²Π°Ρ… Ρ€Π΅ΠΊΠ»Π°ΠΌΡ‹

МногиС наши ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρ‹ ΡƒΠΆΠ΅ ΠΎΡ†Π΅Π½ΠΈΠ»ΠΈ прСимущСства эпичных сСрвСров!
Π­Ρ‚ΠΎ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ сСрвСры с процСссорами AMD EPYC, частота ядра CPU Π΄ΠΎ 3.4 GHz. Максимальная конфигурация ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ ΠΎΡ‚ΠΎΡ€Π²Π°Ρ‚ΡŒΡΡ Π½Π° ΠΏΠΎΠ»Π½ΡƒΡŽ β€” 128 ядСр CPU, 512 Π“Π‘ RAM, 4000 Π“Π‘ NVMe. Π‘ΠΏΠ΅ΡˆΠΈΡ‚Π΅ Π·Π°ΠΊΠ°Π·Π°Ρ‚ΡŒ!

5 соврСмСнных Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ² старым инструмСнтам ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки Linux

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com