Використовуючи сучасніші альтернативи поряд зі старими інструментами командного рядка, можна отримати більше задоволення і навіть підвищити продуктивність праці.
У повсякденній роботі в 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