Выкарыстоўваючы больш сучасныя альтэрнатывы нараўне са старымі інструментамі каманднага радка, можна атрымаць больш задавальнення і нават павысіць прадукцыйнасць працы.
У паўсядзённай працы ў Linux / Unix мы выкарыстоўваем мноства прылад каманднага радка - напрыклад, du для маніторынгу выкарыстання дыска і сістэмных рэсурсаў. Некаторыя з гэтых інструментаў існуюць ужо даўно. Напрыклад, top зьявіўся ў 1984 годзе, а першы рэліз du датуецца 1971 годам.
За мінулыя гады гэтыя прылады былі мадэрнізаваны і партаваны на розныя сістэмы, але ў цэлым далёка не сышлі ад сваіх першых версій, іх вонкавы выгляд і usability таксама моцна не змяніліся.
Гэта выдатныя прылады, якія неабходныя шматлікім сістэмным адміністратарам. Аднак супольнасць распрацавала альтэрнатыўныя інструменты, якія прапануюць дадатковыя перавагі. Некаторыя з іх проста маюць сучасны прыгожы інтэрфейс, а іншыя значна паляпшаюць зручнасць выкарыстання. У гэтым перакладзе распавядзем аб пяці альтэрнатывах стандартным прыладам каманднага радка Linux.
1. ncdu vs du
NCurses Disk Usage (
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 адлюстроўвае аглядную інфармацыю аб сістэме, а ніжняй частцы – панэль для запуску каманд з дапамогай функцыянальных клавіш. Вы можаце наладзіць яе, націснуўшы F2, каб адкрыць экран наладкі. У наладах можна змяніць колеры, дадаць ці выдаліць метрыкі ці змяніць параметры адлюстравання панэлі агляду.
Хоць, пакруціўшы налады апошніх версій top, таксама можна дамагчыся падобнага usability, htop падае зручныя канфігурацыі па змаўчанні, што робіць яго больш практычным і простым у выкарыстанні.
3. tldr vs man
Інструмент каманднага радка tldr адлюстроўвае спрошчаную даведачную інфармацыю аб камандах, у асноўным прыклады. Яго распрацавала супольнасць
Варта адзначыць, што 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 шмат функцый, але для іх апісання патрэбна яшчэ адзін артыкул. Для атрымання дадатковай інфармацыі звернецеся да
5. fd vs find
Напрыклад, пры пошуку файлаў у каталогу рэпазітара 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? Ці сядзіце выключна на старых? Але хутчэй за ўсё, у вас комба, так? Калі ласка, падзяліцеся вашым вопытам у каментарах.
На правах рэкламы
Многія нашы кліенты ўжо ацанілі перавагі эпічных сервераў!
Гэта
Крыніца: habr.com