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 ГГц. Максимальна конфігурація дозволить відірватися на повну – 128 ядер CPU, 512 ГБ RAM, 4000 ГБ NVMe. Поспішайте замовити!

5 сучасних альтернатив старим інструментам командного рядка Linux

Джерело: habr.com

Додати коментар або відгук