рдЬреБрдиреНрдпрд╛ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рд╕рд╛рдзрдирд╛рдВрд╕рд╣ рдЕрдзрд┐рдХ рдЖрдзреБрдирд┐рдХ рдкрд░реНрдпрд╛рдп рд╡рд╛рдкрд░реВрди, рддреБрдореНрд╣реА рдЕрдзрд┐рдХ рдордЬрд╛ рдХрд░реВ рд╢рдХрддрд╛ рдЖрдгрд┐ рддреБрдордЪреА рдЙрддреНрдкрд╛рджрдХрддрд╛ рд╕реБрдзрд╛рд░реВ рд╢рдХрддрд╛.
рд▓рд┐рдирдХреНрд╕/рдпреБрдирд┐рдХреНрд╕рд╡рд░реАрд▓ рдЖрдордЪреНрдпрд╛ рджреИрдирдВрджрд┐рди рдХрд╛рдорд╛рдд, рдЖрдореНрд╣реА рдЕрдиреЗрдХ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдЯреВрд▓реНрд╕ рд╡рд╛рдкрд░рддреЛ - рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рдбрд┐рд╕реНрдХ рд╡рд╛рдкрд░ рдЖрдгрд┐ рд╕рд┐рд╕реНрдЯрдо рд╕рдВрд╕рд╛рдзрдирд╛рдВрдЪреЗ рдирд┐рд░реАрдХреНрд╖рдг рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА du. рдпрд╛рдкреИрдХреА рдХрд╛рд╣реА рд╕рд╛рдзрдиреЗ рдмрд░реНрдпрд╛рдЪ рдХрд╛рд│рд╛рдкрд╛рд╕реВрди рдЖрд╣реЗрдд. рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рдЯреЙрдк 1984 рдордзреНрдпреЗ рджрд┐рд╕реВ рд▓рд╛рдЧрд▓реЗ рдЖрдгрд┐ рдбреВрдЪреЗ рдкрд╣рд┐рд▓реЗ рд░рд┐рд▓реАрдЬ 1971 рдордзреНрдпреЗ рдЭрд╛рд▓реЗ.
рд╡рд░реНрд╖рд╛рдиреБрд╡рд░реНрд╖реЗ, рдпрд╛ рд╕рд╛рдзрдирд╛рдВрдЪреЗ рдЖрдзреБрдирд┐рдХреАрдХрд░рдг рдХреЗрд▓реЗ рдЧреЗрд▓реЗ рдЖрд╣реЗ рдЖрдгрд┐ рд╡реЗрдЧрд╡реЗрдЧрд│реНрдпрд╛ рдкреНрд░рдгрд╛рд▓реАрдВрдордзреНрдпреЗ рдкреЛрд░реНрдЯ рдХреЗрд▓реЗ рдЧреЗрд▓реЗ рдЖрд╣реЗ, рдкрд░рдВрддреБ рд╕рд░реНрд╡рд╕рд╛рдзрд╛рд░рдгрдкрдгреЗ рддреЗ рддреНрдпрд╛рдВрдЪреНрдпрд╛ рдкрд╣рд┐рд▓реНрдпрд╛ рдЖрд╡реГрддреНрддреНрдпрд╛рдВрдкрд╛рд╕реВрди рдлрд╛рд░рд╕реЗ рдкреБрдвреЗ рдЧреЗрд▓реЗ рдирд╛рд╣реАрдд, рддреНрдпрд╛рдВрдЪреЗ рд╕реНрд╡рд░реВрдк рдЖрдгрд┐ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рджреЗрдЦреАрд▓ рдлрд╛рд░рд╢реА рдмрджрд▓рд▓реЗрд▓реА рдирд╛рд╣реА.
рд╣реА рдЙрддреНрддрдо рд╕рд╛рдзрдиреЗ рдЖрд╣реЗрдд рдЬреА рдЕрдиреЗрдХ рд╕рд┐рд╕реНрдЯрдо рдкреНрд░рд╢рд╛рд╕рдХрд╛рдВрдирд╛ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗрдд. рддрдерд╛рдкрд┐, рд╕рдореБрджрд╛рдпрд╛рдиреЗ рдкрд░реНрдпрд╛рдпреА рд╕рд╛рдзрдиреЗ рд╡рд┐рдХрд╕рд┐рдд рдХреЗрд▓реА рдЖрд╣реЗрдд рдЬреА рдЕрддрд┐рд░рд┐рдХреНрдд рдлрд╛рдпрджреЗ рджреЗрддрд╛рдд. рддреНрдпрд╛рдВрдЪреНрдпрд╛рдкреИрдХреА рдХрд╛рд╣реАрдВрдордзреНрдпреЗ рдлрдХреНрдд рдЖрдзреБрдирд┐рдХ, рд╕реБрдВрджрд░ рдЗрдВрдЯрд░рдлреЗрд╕ рдЖрд╣реЗ, рддрд░ рдХрд╛рд╣реАрдВрдЪрд╛ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдореЛрдареНрдпрд╛ рдкреНрд░рдорд╛рдгрд╛рдд рд╕реБрдзрд╛рд░рддреЛ. рдпрд╛ рднрд╛рд╖рд╛рдВрддрд░рд╛рдд, рдЖрдкрдг рдорд╛рдирдХ рд▓рд┐рдирдХреНрд╕ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдЯреВрд▓реНрд╕рдЪреНрдпрд╛ рдкрд╛рдЪ рдкрд░реНрдпрд╛рдпрд╛рдВрдмрджреНрджрд▓ рдмреЛрд▓реВ.
1. ncdu vs du
NCurses рдбрд┐рд╕реНрдХ рд╡рд╛рдкрд░ (
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
рддреБрдореНрд╣реА рдмрд╛рдг рдХреА рд╡рд╛рдкрд░реВрди рдиреЛрдВрджреАрдВрдордзреВрди рдиреЗрд╡реНрд╣рд┐рдЧреЗрдЯ рдХрд░реВ рд╢рдХрддрд╛. рддреБрдореНрд╣реА рдПрдВрдЯрд░ рджрд╛рдмрд▓реНрдпрд╛рд╕, ncdu рдирд┐рд╡рдбрд▓реЗрд▓реНрдпрд╛ рдирд┐рд░реНрджреЗрд╢рд┐рдХреЗрдЪреА рд╕рд╛рдордЧреНрд░реА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрд▓:
--- /home/rgerardi/libvirt ----------------------------------------------------
/..
91.3 GiB [##########] /images
5.3 GiB [ ] /media
рддреБрдореНрд╣реА рдпрд╛ рд╕рд╛рдзрдирд╛рдЪрд╛ рд╡рд╛рдкрд░ рдХрд░реВ рд╢рдХрддрд╛, рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рдХреЛрдгрддреНрдпрд╛ рдлрд╛рдЗрд▓реНрд╕ рд╕рд░реНрд╡рд╛рдд рдЬрд╛рд╕реНрдд рдбрд┐рд╕реНрдХ рдЬрд╛рдЧрд╛ рдШреЗрдд рдЖрд╣реЗрдд рд╣реЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА. рдбрд╛рд╡реА рдмрд╛рдг рдХреА рджрд╛рдмреВрди рддреБрдореНрд╣реА рдорд╛рдЧреАрд▓ рдирд┐рд░реНрджреЗрд╢рд┐рдХреЗрдд рдЬрд╛рдК рд╢рдХрддрд╛. ncdu рд╕рд╣ рддреБрдореНрд╣реА d рдХреА рджрд╛рдмреВрди рдлрд╛рдЗрд▓реНрд╕ рд╣рдЯрд╡реВ рд╢рдХрддрд╛. рддреЗ рд╣рдЯрд╡рдгреНрдпрд╛рдкреВрд░реНрд╡реА рдкреБрд╖реНрдЯреАрдХрд░рдгрд╛рд╕рд╛рдареА рд╡рд┐рдЪрд╛рд░рддреЗ. рдореМрд▓реНрдпрд╡рд╛рди рдлрд╛рдЗрд▓реНрд╕рдЪреЗ рдЕрдкрдШрд╛рддреА рдиреБрдХрд╕рд╛рди рдЯрд╛рд│рдгреНрдпрд╛рд╕рд╛рдареА рддреБрдореНрд╣реА рдбрд┐рд▓реАрдЯ рд╡реИрд╢рд┐рд╖реНрдЯреНрдп рдЕрдХреНрд╖рдо рдХрд░реВ рдЗрдЪреНрдЫрд┐рдд рдЕрд╕рд▓реНрдпрд╛рд╕, рдХреЗрд╡рд│-рд╡рд╛рдЪрдиреАрдп рдкреНрд░рд╡реЗрд╢ рдореЛрдб рд╕рдХреНрд╖рдо рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА -r рдкрд░реНрдпрд╛рдп рд╡рд╛рдкрд░рд╛: ncdu -r.
ncdu рдЕрдиреЗрдХ Linux рдкреНрд▓реЕрдЯрдлреЙрд░реНрдо рдЖрдгрд┐ рд╡рд┐рддрд░рдгрд╛рд╕рд╛рдареА рдЙрдкрд▓рдмреНрдз рдЖрд╣реЗ. рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, Fedora рд╡рд░ рдереЗрдЯ рдЕрдзрд┐рдХреГрдд рд░реЗрдкреЙрдЬрд┐рдЯрд░реАрдЬрдордзреВрди рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рддреБрдореНрд╣реА dnf рд╡рд╛рдкрд░реВ рд╢рдХрддрд╛:
$ sudo dnf install ncdu
2. htop рд╡рд┐ рдЯреЙрдк
рдбреАрдлреЙрд▓реНрдЯрдиреБрд╕рд╛рд░ htop рдЕрд╕реЗ рджрд┐рд╕рддреЗ:
рд╢реАрд░реНрд╖рд╕реНрдерд╛рдиреА рд╡рд┐рдкрд░реАрдд:
рдпрд╛рд╢рд┐рд╡рд╛рдп, htop рд╡рд░рдЪреНрдпрд╛ рдмрд╛рдЬреВрд▓рд╛ рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рд╕рд┐рд╕реНрдЯреАрдордмрджреНрджрд▓ рд╡рд┐рд╣рдВрдЧрд╛рд╡рд▓реЛрдХрди рдорд╛рд╣рд┐рддреА рдЖрдгрд┐ рддрд│рд╛рд╢реА рдлрдВрдХреНрд╢рди рдХреА рд╡рд╛рдкрд░реВрди рдХрдорд╛рдВрдб рдЪрд╛рд▓рд╡рдгреНрдпрд╛рд╕рд╛рдареА рдкреЕрдиреЗрд▓ рджрд╛рдЦрд╡рддреЛ. рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рд╕реНрдХреНрд░реАрди рдЙрдШрдбрдгреНрдпрд╛рд╕рд╛рдареА рддреБрдореНрд╣реА F2 рджрд╛рдмреВрди рддреЗ рдХреЙрдиреНрдлрд┐рдЧрд░ рдХрд░реВ рд╢рдХрддрд╛. рд╕реЗрдЯрд┐рдВрдЧреНрдЬрдордзреНрдпреЗ, рддреБрдореНрд╣реА рд░рдВрдЧ рдмрджрд▓реВ рд╢рдХрддрд╛, рдореЗрдЯреНрд░рд┐рдХреНрд╕ рдЬреЛрдбреВ рдХрд┐рдВрд╡рд╛ рдХрд╛рдвреВ рд╢рдХрддрд╛ рдХрд┐рдВрд╡рд╛ рд╡рд┐рд╣рдВрдЧрд╛рд╡рд▓реЛрдХрди рдкреЕрдиреЗрд▓ рдбрд┐рд╕реНрдкреНрд▓реЗ рдкрд░реНрдпрд╛рдп рдмрджрд▓реВ рд╢рдХрддрд╛.
рдЬрд░реА рддреБрдореНрд╣реА рдЯреЙрдкрдЪреНрдпрд╛ рдирд╡реАрдирддрдо рдЖрд╡реГрддреНрддреНрдпрд╛рдВрдЪреНрдпрд╛ рд╕реЗрдЯрд┐рдВрдЧреНрдЬрдордзреНрдпреЗ рдмрджрд▓ рдХрд░реВрди рд╕рдорд╛рди рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░реВ рд╢рдХрддрд╛, htop рд╕реЛрдпреАрд╕реНрдХрд░ рдбреАрдлреЙрд▓реНрдЯ рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рдкреНрд░рджрд╛рди рдХрд░рддреЗ, рдЬреЗ рддреЗ рдЕрдзрд┐рдХ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдЖрдгрд┐ рд╡рд╛рдкрд░рдгреНрдпрд╛рд╕ рд╕реБрд▓рдн рдХрд░рддреЗ.
3. tldr рд╡рд┐рд░реБрджреНрдз рдордиреБрд╖реНрдп
tldr рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдЯреВрд▓ рдХрдорд╛рдВрдбрдмрджреНрджрд▓ рд╕рд░рд▓реАрдХреГрдд рдорджрдд рдорд╛рд╣рд┐рддреА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддреЗ, рдмрд╣реБрддреЗрдХ рдЙрджрд╛рд╣рд░рдгреЗ. рддреЛ рд╕рдорд╛рдЬрд╛рдиреЗ рд╡рд┐рдХрд╕рд┐рдд рдХреЗрд▓рд╛ рд╣реЛрддрд╛
рд╣реЗ рд▓рдХреНрд╖рд╛рдд рдШреЗрдгреНрдпрд╛рд╕рд╛рд░рдЦреЗ рдЖрд╣реЗ рдХреА tldr рд╣реА рдорд╛рдгрд╕рд╛рдЪреА рдмрджрд▓реА рдирд╛рд╣реА. рд╣реЗ рдЕрдЬреВрдирд╣реА рдкреНрд░рд╛рдорд╛рдгрд┐рдХ рдЖрдгрд┐ рд╕рд░реНрд╡рд╛рдд рд╡реНрдпрд╛рдкрдХ рдореЕрди рдкреЗрдЬ рдЖрдЙрдЯрдкреБрдЯ рд╕рд╛рдзрди рдЖрд╣реЗ. рддрдерд╛рдкрд┐, рдХрд╛рд╣реА рдкреНрд░рдХрд░рдгрд╛рдВрдордзреНрдпреЗ рдорд╛рдгреВрд╕ рдЕрдирд╛рд╡рд╢реНрдпрдХ рдЖрд╣реЗ. рдЬреЗрд╡реНрд╣рд╛ рддреБрдореНрд╣рд╛рд▓рд╛ рдХрдорд╛рдВрдбрдмрджреНрджрд▓ рд╕рд░реНрд╡рд╕рдорд╛рд╡реЗрд╢рдХ рдорд╛рд╣рд┐рддреАрдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╕рддреЗ, рддреЗрд╡реНрд╣рд╛ рддреБрдореНрд╣реА рдлрдХреНрдд рддреНрдпрд╛рдЪреЗ рдореВрд▓рднреВрдд рдЙрдкрдпреЛрдЧ рд▓рдХреНрд╖рд╛рдд рдареЗрд╡рдгреНрдпрд╛рдЪрд╛ рдкреНрд░рдпрддреНрди рдХрд░рдд рдЖрд╣рд╛рдд. рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рдХрд░реНрд▓ рдХрдорд╛рдВрдбрд╕рд╛рдареА рдореЕрди рдкреЗрдЬрдордзреНрдпреЗ рдЬрд╡рд│рдкрд╛рд╕ 3000 рдУрд│реА рдЖрд╣реЗрдд. рдХрд░реНрд▓рд╕рд╛рдареА tldr рдкреГрд╖реНрда 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 рдореНрд╣рдгрдЬреЗ тАЬрдЦреВрдк рд▓рд╛рдВрдм; рд╡рд╛рдЪрд▓реЗ рдирд╛рд╣реА": рдореНрд╣рдгрдЬреЗ, рдХрд╛рд╣реА рдордЬрдХреВрд░ рддреНрдпрд╛рдЪреНрдпрд╛ рдЕрддреНрдпрдзрд┐рдХ рд╢рдмреНрджрд╢рдГрдкрдгрд╛рдореБрд│реЗ рджреБрд░реНрд▓рдХреНрд╖рд┐рдд рдХреЗрд▓рд╛ рдЧреЗрд▓рд╛. рдпрд╛ рд╕рд╛рдзрдирд╛рд╕рд╛рдареА рдирд╛рд╡ рдпреЛрдЧреНрдп рдЖрд╣реЗ рдХрд╛рд░рдг рдореЕрди рдкреГрд╖реНрдареЗ, рдЙрдкрдпреБрдХреНрдд рдЕрд╕рд▓реА рддрд░реА, рдХрдзреАрдХрдзреА рдЦреВрдк рд▓рд╛рдВрдм рдЕрд╕реВ рд╢рдХрддрд╛рдд.
Fedora рд╕рд╛рдареА, tldr рдкрд╛рдпрдерди рдордзреНрдпреЗ рд▓рд┐рд╣рд┐рд▓реЗ рд╣реЛрддреЗ. рдЖрдкрдг dnf рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рд╡рд╛рдкрд░реВрди рддреЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реВ рд╢рдХрддрд╛. рд╕рд╛рдорд╛рдиреНрдпрддрдГ, рдЯреВрд▓рд▓рд╛ рдСрдкрд░реЗрдЯ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЗрдВрдЯрд░рдиреЗрдЯ рдкреНрд░рд╡реЗрд╢ рдЖрд╡рд╢реНрдпрдХ рдЕрд╕рддреЛ. рдкрд░рдВрддреБ Fedora рдЪреЗ Python рдХреНрд▓рд╛рдпрдВрдЯ рд╣реА рдкреГрд╖реНрдареЗ рдСрдлрд▓рд╛рдЗрди рдкреНрд░рд╡реЗрд╢рд╛рд╕рд╛рдареА рдбрд╛рдЙрдирд▓реЛрдб рдЖрдгрд┐ рдХреЕрд╢реЗ рдХрд░рдгреНрдпрд╛рд╕ рдкрд░рд╡рд╛рдирдЧреА рджреЗрддреЛ.
4.jq рд╡рд┐ sed/grep
jq рдХрдорд╛рдВрдб рд▓рд╛рдЗрдирд╕рд╛рдареА JSON рдкреНрд░реЛрд╕реЗрд╕рд░ рдЖрд╣реЗ. рд╣реЗ sed рдХрд┐рдВрд╡рд╛ grep рд╕рд╛рд░рдЦреЗ рдЖрд╣реЗ, рдкрд░рдВрддреБ рд╡рд┐рд╢реЗрд╖рддрдГ JSON рдбреЗрдЯрд╛рд╕рд╣ рдХрд╛рд░реНрдп рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдбрд┐рдЭрд╛рдЗрди рдХреЗрд▓реЗрд▓реЗ рдЖрд╣реЗ. рдЬрд░ рддреБрдореНрд╣реА рдбреЗрд╡реНрд╣рд▓рдкрд░ рдХрд┐рдВрд╡рд╛ рд╕рд┐рд╕реНрдЯрдо рдЕреЕрдбрдорд┐рдирд┐рд╕реНрдЯреНрд░реЗрдЯрд░ рдЕрд╕рд╛рд▓ рдЬреЛ рджреИрдирдВрджрд┐рди рдХрд╛рдорд╛рдВрдордзреНрдпреЗ JSON рд╡рд╛рдкрд░рдд рдЕрд╕реЗрд▓, рддрд░ рд╣реЗ рддреБрдордЪреНрдпрд╛рд╕рд╛рдареА рд╕рд╛рдзрди рдЖрд╣реЗ.
grep рдЖрдгрд┐ sed рд╕рд╛рд░рдЦреНрдпрд╛ рдорд╛рдирдХ рдордЬрдХреВрд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕рд╛рдзрдирд╛рдВрд╡рд░ jq рдЪрд╛ рдореБрдЦреНрдп рдлрд╛рдпрджрд╛ рдЕрд╕рд╛ рдЖрд╣реЗ рдХреА рддреЗ 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 рдЪрд╛рд▓рд╡рд╛:
$ grep name k8s-pod.json
"name": "myapp",
"namespace": "project1"
"name": "busybox"
"name": "nginx",
grep рдиреЗ рдирд╛рд╡ рд╢рдмреНрдж рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рд╕рд░реНрд╡ рдУрд│реА рдкрд░рдд рдХреЗрд▓реНрдпрд╛. рддреБрдореНрд╣реА рддреЗ рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА grep рдордзреНрдпреЗ рдЖрдгрдЦреА рдХрд╛рд╣реА рдкреЕрд░рд╛рдореАрдЯрд░реНрд╕ рдЬреЛрдбреВ рд╢рдХрддрд╛ рдЖрдгрд┐ рдХрд╛рд╣реА рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддреА рд╣рд╛рддрд╛рд│рдгреАрд╕рд╣ рдХрдВрдЯреЗрдирд░рдЪреА рдирд╛рд╡реЗ рд╢реЛрдзрд╛.
jq рд╡рд╛рдкрд░реВрди рд╕рдорд╛рди рдкрд░рд┐рдгрд╛рдо рдорд┐рд│рд╡рд┐рдгреНрдпрд╛рд╕рд╛рдареА, рдлрдХреНрдд рд▓рд┐рд╣рд╛:
$ jq '.spec.containers[].name' k8s-pod.json
"busybox"
"nginx"
рд╣реА рдЖрдЬреНрдЮрд╛ рддреБрдореНрд╣рд╛рд▓рд╛ рджреЛрдиреНрд╣реА рдХрдВрдЯреЗрдирд░рдЪреА рдирд╛рд╡реЗ рджреЗрдИрд▓. рдЬрд░ рддреБрдореНрд╣реА рдлрдХреНрдд рджреБрд╕рд▒реНрдпрд╛ рдХрдВрдЯреЗрдирд░рдЪреЗ рдирд╛рд╡ рд╢реЛрдзрдд рдЕрд╕рд╛рд▓ рддрд░, рдЕреЕрд░реЗ рдШрдЯрдХрд╛рдЪреА рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рдЕрднрд┐рд╡реНрдпрдХреНрддреАрдордзреНрдпреЗ рдЬреЛрдбрд╛:
$ jq '.spec.containers[1].name' k8s-pod.json
"nginx"
jq рд▓рд╛ рдбреЗрдЯрд╛ рд╕реНрдЯреНрд░рдХреНрдЪрд░рдЪреА рдорд╛рд╣рд┐рддреА рдЕрд╕рд▓реНрдпрд╛рдиреЗ, рдлрд╛рдИрд▓ рдлреЙрд░рдореЕрдЯ рдереЛрдбрд╛рд╕рд╛ рдмрджрд▓рд▓рд╛ рддрд░реАрд╣реА рддреЗ рд╕рдорд╛рди рдкрд░рд┐рдгрд╛рдо рджреЗрддреЗ. рдпрд╛ рдкреНрд░рдХрд░рдгрд╛рдд grep рдЖрдгрд┐ sed рдпреЛрдЧреНрдпрд░рд┐рддреНрдпрд╛ рдХрд╛рд░реНрдп рдХрд░реВ рд╢рдХрдд рдирд╛рд╣реАрдд.
jq рдордзреНрдпреЗ рдЕрдиреЗрдХ рдХрд╛рд░реНрдпреЗ рдЖрд╣реЗрдд, рдкрд░рдВрддреБ рддреНрдпрд╛рдВрдЪреЗ рд╡рд░реНрдгрди рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЖрдгрдЦреА рдПрдХ рд▓реЗрдЦ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ. рдЕрдзрд┐рдХ рдорд╛рд╣рд┐рддреАрд╕рд╛рдареА рдХреГрдкрдпрд╛ рд╕рдВрдкрд░реНрдХ рд╕рд╛рдзрд╛
5. fd рд╡рд┐ рд╢реЛрдз
рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, Git рд░реЗрдкреЙрдЬрд┐рдЯрд░реА рдбрд┐рд░реЗрдХреНрдЯреНрд░реАрдордзреНрдпреЗ рдлрд╛рдЗрд▓реНрд╕ рд╢реЛрдзрддрд╛рдирд╛, fd рдЖрдкреЛрдЖрдк .git рдбрд┐рд░реЗрдХреНрдЯреНрд░реАрд╕рд╣ рд▓рдкрд╡рд▓реЗрд▓реНрдпрд╛ рдлрд╛рдЗрд▓реНрд╕ рдЖрдгрд┐ рд╕рдмрдбрд┐рд░реЗрдХреНрдЯрд░реАрдЬ рд╡рдЧрд│рддреЗ рдЖрдгрд┐ .gitignore рдлрд╛рдЗрд▓рдордзреАрд▓ рд╡рд╛рдЗрд▓реНрдбрдХрд╛рд░реНрдбреНрд╕рдХрдбреЗ рджреЗрдЦреАрд▓ рджреБрд░реНрд▓рдХреНрд╖ рдХрд░рддреЗ. рдПрдХреВрдгрдЪ, рдкрд╣рд┐рд▓реНрдпрд╛ рдкреНрд░рдпрддреНрдирд╛рдд рдЕрдзрд┐рдХ рд╕рдВрдмрдВрдзрд┐рдд рдкрд░рд┐рдгрд╛рдо рдкрд░рдд рдХрд░реВрди рддреЗ рд╢реЛрдзрд╛рдВрдирд╛ рдЧрддреА рджреЗрддреЗ.
рдбреАрдлреЙрд▓реНрдЯрдиреБрд╕рд╛рд░, fd рд╡рд░реНрддрдорд╛рди рдирд┐рд░реНрджреЗрд╢рд┐рдХреЗрдд рд░рдВрдЧ рдЖрдЙрдЯрдкреБрдЯрд╕рд╣ рдХреЗрд╕-рд╕рдВрд╡реЗрджрдирд╢реАрд▓ рд╢реЛрдз рдХрд░рддреЗ. рдлрд╛рдЗрдВрдб рдХрдорд╛рдВрдб рд╡рд╛рдкрд░реВрди рд╕рдорд╛рди рд╢реЛрдзрд╛рд╕рд╛рдареА рдХрдорд╛рдВрдб рд▓рд╛рдЗрдирд╡рд░ рдЕрддрд┐рд░рд┐рдХреНрдд рдкреЕрд░рд╛рдореАрдЯрд░реНрд╕ рдкреНрд░рд╡рд┐рд╖реНрдЯ рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ. рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рд╕рдзреНрдпрд╛рдЪреНрдпрд╛ рдбрд┐рд░реЗрдХреНрдЯрд░реАрдордзреНрдпреЗ рд╕рд░реНрд╡ .md (рдХрд┐рдВрд╡рд╛ .MD) рдлрд╛рдЗрд▓реНрд╕ рд╢реЛрдзрдгреНрдпрд╛рд╕рд╛рдареА, рддреБрдореНрд╣реА рдЦрд╛рд▓реАрд▓рдкреНрд░рдорд╛рдгреЗ рдлрд╛рдЗрдВрдб рдХрдорд╛рдВрдб рд▓рд┐рд╣рд╛:
$ find . -iname "*.md"
fd рд╕рд╛рдареА рд╣реЗ рдЕрд╕реЗ рджрд┐рд╕рддреЗ:
$ fd .md
рдкрд░рдВрддреБ рдХрд╛рд╣реА рдкреНрд░рдХрд░рдгрд╛рдВрдордзреНрдпреЗ, fd рд▓рд╛ рдЕрддрд┐рд░рд┐рдХреНрдд рдкрд░реНрдпрд╛рдп рджреЗрдЦреАрд▓ рдЖрд╡рд╢реНрдпрдХ рдЕрд╕рддрд╛рдд: рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рдЬрд░ рддреБрдореНрд╣рд╛рд▓рд╛ рд▓рдкрд╡рд┐рд▓реЗрд▓реНрдпрд╛ рдлрд╛рдЗрд▓реНрд╕ рдЖрдгрд┐ рдбрд┐рд░реЗрдХреНрдЯрд░реА рд╕рдорд╛рд╡рд┐рд╖реНрдЯ рдХрд░рд╛рдпрдЪреНрдпрд╛ рдЕрд╕рддреАрд▓, рддрд░ рддреБрдореНрд╣реА -H рдкрд░реНрдпрд╛рдп рд╡рд╛рдкрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ, рдЬрд░реА рд╣реЗ рд╕рд╣рд╕рд╛ рд╢реЛрдзрддрд╛рдирд╛ рдЖрд╡рд╢реНрдпрдХ рдирд╕рддреЗ.
fd рдЕрдиреЗрдХ Linux рд╡рд┐рддрд░рдгрд╛рдВрд╕рд╛рдареА рдЙрдкрд▓рдмреНрдз рдЖрд╣реЗ. Fedora рдордзреНрдпреЗ рддреЗ рдЦрд╛рд▓реАрд▓рдкреНрд░рдорд╛рдгреЗ рд╕реНрдерд╛рдкрд┐рдд рдХреЗрд▓реЗ рдЬрд╛рдК рд╢рдХрддреЗ:
$ sudo dnf install fd-find
рддреБрдореНрд╣рд╛рд▓рд╛ рдХрд╛рд╣реАрд╣реА рд╕реЛрдбрд╛рдпрдЪреЗ рдирд╛рд╣реА
рддреБрдореНрд╣реА рдирд╡реАрди рд▓рд┐рдирдХреНрд╕ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдЯреВрд▓реНрд╕ рд╡рд╛рдкрд░рдд рдЖрд╣рд╛рдд? рдХрд┐рдВрд╡рд╛ рддреБрдореНрд╣реА рдлрдХреНрдд рдЬреБрдиреНрдпрд╛рдВрд╡рд░рдЪ рдмрд╕рддрд╛? рдкрдг рдмрд╣реБрдзрд╛ рддреБрдордЪреНрдпрд╛рдХрдбреЗ рдХреЙрдореНрдмреЛ рдЖрд╣реЗ, рдмрд░реЛрдмрд░? рдХреГрдкрдпрд╛ рдЯрд┐рдкреНрдкрдгреНрдпрд╛рдВрдордзреНрдпреЗ рдЖрдкрд▓рд╛ рдЕрдиреБрднрд╡ рд╕рд╛рдорд╛рдпрд┐рдХ рдХрд░рд╛.
рдЬрд╛рд╣рд┐рд░рд╛рддреАрдВрдЪреНрдпрд╛ рдЕрдзрд┐рдХрд╛рд░рд╛рдВрд╡рд░
рдЖрдордЪреНрдпрд╛ рдЕрдиреЗрдХ рдХреНрд▓рд╛рдпрдВрдЯрдиреЗ рдЖрдзреАрдЪ рдлрд╛рдпрджреНрдпрд╛рдВрдЪреЗ рдХреМрддреБрдХ рдХреЗрд▓реЗ рдЖрд╣реЗ рдорд╣рд╛рдХрд╛рд╡реНрдп рд╕рд░реНрд╡реНрд╣рд░!
рдпрд╛
рд╕реНрддреНрд░реЛрдд: www.habr.com