Linux and CLI Vocabulary: 35 Essential Terms for the Terminal (англійською)

Вивчіть 35 основних термінів Linux і командного рядка: оболонка, stdin/stdout, трубка, процес, права доступу, ієрархія файлової системи, змінні середовища, cron і багато іншого.

Linux — це операційна система, яка запускає більшість веб-серверів, хмарну інфраструктуру та інструменти для розробників. Навіть якщо ви не є адміністратором Linux, розуміння командного рядка є обов’ язковим для розгортання програм, зневадження проблем і роботи з контейнерами. Цей посібник містить 35 найважливіших термінів Linux і CLI.


Шлях

Shell

** Оболонка ** — це програма, яка інтерпретує ваші команди і взаємодіє з ядром операційної системи. Поширені оболонки: bash (Bourne Again Shell), zsh (Z shell), fish, sh (POSIX shell).

“Якою зброєю ви користуєтесь? Я на zsh з oh-my-zsh.”

Емулятор терміналу

Terminal (або Terminal Emulator) — це програма, яка надає текстовий інтерфейс до оболонки. Приклади: iTerm2 (macOS), Windows Terminal, GNOME Terminal (Linux), Alacritty.

  • Технічна заувага: * Термінал — це вікно, оболонка — це програма, що знаходиться всередині вікна.

Інтерфейс командного рядка (CLI)

** CLI ** — це текстовий інтерфейс, за допомогою якого ви можете взаємодіяти з програмою за допомогою введення команд. Альтернативою є GUI (Graphical User Interface). Більшість інструментів для розробників мають обидва.

Prompt

** Пром** — це текст, який оболонка показує, щоб вказати, що вона готова до вводу. Зазвичай показує ваше ім’ я користувача, назву вузла і поточний каталог: user@hostname:~/projects$

Command

** Команда ** — це інструкція, яку ви надсилаєте оболонці. Антропологічний опис: 180

Приклад: ls -la /home/userls є командою, -la є прапорцями/опціями, /home/user є аргументом.


Вхід/вихід

stdin, stdout, stderr

Три стандартні потоки вводу/ виводу, які має кожен процес Unix:

  • ** stdin ** (стандартний вхід, дескриптор файла 0) — місце, з якого програма зчитує вхідні дані (типово, клавіатура)
  • ** stdout ** (стандартний вивід, дескриптор файла 1) — де програма записує звичайний вивід
  • ** stderr ** (стандартна помилка, дескриптор файла 2) — де програма записує повідомлення про помилку

Pipe (|)

** Pipe ** з’ єднує stdout однієї команди зі stdin іншої. Надає змогу з’ єднати команди.

cat access.log | grep "ERROR" | wc -l

«Порахувати кількість рядків ERROR в журналі доступу.»

Redirect (>, >>, <)

** Перенаправлення ** надсилає вхід/вивід до/з файлів:

  • > — перезаписати: echo "hello" > file.txt
  • >> — додайте: echo "world" >> file.txt
  • < — перенаправляє вхід: wc -l < file.txt
  • 2> — перенаправляє stderr: command 2> errors.log

Код виходу

exit code (або return code) — це число, яке програма повертає після завершення. 0 = успіх. Будь- яке ненульове значення = помилка. Проверити з echo $?.

ls nonexistent_file
echo $?  # outputs 2 (file not found)

Processes

Process

** процес ** це запущений екземпляр програми. Кожен процес має PID (ІД процесу).

Ідентифікатор процесу (PID)

Унікальний номер, який буде присвоєно кожному запущеному процесу. Скористайтеся ps, top або htop, щоб побачити PID.

вбити / сигнал

** kill ** надсилає сигнал до процесу. Спільні сигнали:

  • SIGTERM (15) — ввічливо попросити процес зупинитися
  • SIGKILL (9) — примусово завершити (не може бути спійманий або ігнорований)
kill 1234        # SIGTERM to PID 1234
kill -9 1234     # SIGKILL to PID 1234

Daemon

** фонова служба ** — це фоновий процес, який виконується безперервно, зазвичай виконуючи роль служби. Приклади: nginx (фонова служба веб-сервера), sshd (фонова служба SSH), cron (фонова служба планування завдань). Вимовляється “Ді-мун”

Передній план/ фон

  • ** Процес на передньому плані ** — виконується з приєднаним терміналом (ви можете бачити його вивід; натиснення Ctrl+C перерве його виконання)
  • ** Фоновий ** процес — виконується окремо: command &

Скористайтеся fg, щоб перенести фонове завдання на передній план, bg, щоб продовжити зупинене завдання у фоновому режимі, і jobs, щоб переглянути список фонових завдань.


Файлова система

Ієрархія файлової системи

Linux використовує один кореневий каталог /. Каталог ключів:

  • /etc — файли налаштувань
  • /var — змінні дані (логи, кеш, шпуля)
  • /home — домашні каталоги користувачів
  • /tmp — тимчасові файли (очищаються при перезапуску)
  • /usr — програми та дані користувача
  • /bin, /sbin — необхідні системні бінарні
  • /proc — віртуальна файлова система з інформацією про процес

Path

** Абсолютний шлях ** починається з кореня: /home/user/projects/app ** Відносний шлях ** починається з поточного каталогу: ../config або ./start.sh

Права доступу (chmod, chown)

Права доступу до файлів у Linux мають три рівні: власник, група, інші. Кожен може мати права читання (r), запис (w), виконання (x).

-rwxr-xr-- означає:

  • власник: читання, запис, виконання
  • група: читання, виконання
  • інші: тільки для читання

** chmod ** змінює права доступу: chmod 755 script.sh або chmod +x script.sh ** choun ** змінює власника: chown www-data:www-data /var/www

** Символічне посилання ** — це вказівник на інший файл або каталог. Подібно до скорочення. Створено з ln -s target link_name.


Environment

Змінна середовища

** Змінні середовища ** — це пари ключ- значення, доступні для всіх процесів, запущених у сеансі оболонки. Наприклад, export VAR=value. Зазвичай використовується для конфігурації: DATABASE_URL, PORT, NODE_ENV, SECRET_KEY.

«Програма читає URL бази даних з DATABASE_URL змінної середовища.»

PATH

Змінна ** PATH ** — це розділений двокрапками список каталогів, у яких оболонка буде шукати під час введення команди. Якщо ви введете node, оболонка проведе пошук у кожному каталогу PATH за виконуваним файлом з назвою node.

Файл «. env »

Файл .env зберігає змінні середовища для локального розроблення. Бібліотеки, такі як dotenv завантажують його в середовище процесу. Ніколи не завантажуйте .env до контролю версій — він часто містить секрети.


Планування робіт

cron / crontab

** cron ** — це фонова служба планування завдань Unix. ** crontab ** (таблиця cron) — це файл, у якому визначено заплановані завдання. П’ ять полів: хвилина, година, день місяця, місяць, день тижня.

# Run backup at 2:30 AM every day
30 2 * * * /scripts/backup.sh

Вираз cron

** cron- вираз ** — це синтаксис з п’ яти полів, який використовується для визначення часу виконання завдання. Багато хмарних сервісів (AWS CloudWatch Events, GitHub Actions, Kubernetes CronJobs) використовують синтаксис cron.


Мережа з CLI

ssh (безпечна оболонка)

** SSH ** — це протокол і інструмент CLI для безпечного з’ єднання з віддаленим сервером. ssh user@hostname відкриває зашифрований сеанс термінала.

scp / rsync

  • ** scp ** — безпечне копіювання файлів між локальним і віддаленим пристроями: scp file.txt user@server:/path/
  • ** rsync ** — ефективна синхронізація файлів (передає тільки відмінності): rsync -avz ./dist/ user@server:/var/www/

curl / wget

  • ** curl ** — перенесення даних з адрес URL; широко використовується для тестування API: curl -X POST https://api.example.com/data
  • ** wget ** — звантажує файли з адрес URL: wget https://example.com/file.zip

Краткий справочник

TermOne-liner
ShellProgram that interprets commands (bash, zsh)
Pipe (|)Pass stdout of one command to stdin of the next
Exit code0 = success, non-zero = error
DaemonBackground process running as a service
PIDUnique number identifying a running process
chmodChange file permissions
chownChange file ownership
Environment variableKey-value configuration available to all processes
PATHDirectories searched when you type a command
cronUnix job scheduler; crontab defines schedules
sshEncrypted remote terminal connection
stdin/stdout/stderrStandard input, output, and error streams

На практиці: Навігація Nuance для не-національних розробників

Багато розробників, які вивчають професійну англійську, особливо ті, що переходять з інших технічних галузей або не англомовних середовищ, вважають тонкощі обміну командним рядком викликом. Це не просто про те, щоб знати * що * команда робить; це про розуміння * як * це обговорюється і запитується, особливо при співпраці з досвідченими членами команди. Просте « запустити » може бути неправильно інтерпретовано — ви просите про пояснення, покроковий посібник або просто про виконання команди? Аналогічно, зворотній зв’язок в перегляді коду часто використовує точну мову, яка вимагає ретельної інтерпретації, окрім буквального перекладу. Розглянемо звичайний сценарій: отримання коментаря щодо запиту на завантаження.

Уявіть, що ви надіслали PR для оновлення функції основної бібліотеки. Після перегляду, ви отримаєте повідомлення від старшого розробника, Сари: « Це добре, але чи не могли б ви додати деякі записи у журналі щодо перевірки даних? » Це допоможе нам зневаджувати потенційні проблеми, якщо вони виникли. » Прямий переклад може зосередитись на « журналюванні » — просто додавання команд друку. Однак фраза «допоможи нам зневаджувати потенційні проблеми» свідчить про глибшу занепокоєність. Коментар не просто запитує вивід; він запитує проактивні заходи для запобігання проблемам * до того, як * вони виникнуть. Це підкреслює важливість розуміння основного наміру технічних запитів і зворотного зв’язку. Фрази на кшталт «це допоможе нам» оформляють запит як корисний, демонструючи розуміння потреб команди. Це також ненадовго вказує на потенційну проблему - перевірка даних сприймається як превентивний крок.

Крім того, розгляньте розмови Slack, коли обговорюєте розв’язання проблем. Молодший розробник може ввести: “Сервер не працює! Виправте це!» Це не відповідає контексту і може бути негайно інтерпретовано як вимога негайних дій без розуміння кореневої причини. Більш професійний підхід буде таким: «Я бачу періодичні помилки на виробничому сервері — зокрема, збільшена затримка під час годин пік. Чи можемо ми дослідити потенційні обмеження ресурсів або проблеми з мережею?» У розширеній формулюванні наведено важливі подробиці: * тип * проблеми (перервані помилки), * контекст * (години пік), а також запропоновано можливі області для дослідження. Такий рівень деталізації очікується у співпраці, де чітке спілкування запобігає непорозумінням і прискорює часи розв’ язання. Навчання сформулювати технічні проблеми з такою точністю не тільки про словниковий запас; це про демонстрацію професійної відповідальності і ефективний внесок в команду.

Нарешті, зверніть увагу на те, як команди описано у документації або повідомленнях про верифікацію. Часто розробники використовують такі фрази, як «рефакторизація для ясності», а не просто заявляють, що вони змінюють код. Це означає навмисні зусилля з метою поліпшення підтримки і зрозумілості - цінності, які високо цінуються в професійних командах розробників. Метою є не тільки виконання самої команди, але й внесок у спільне розуміння кодової бази і її призначення.

# Example: Checking disk space usage on a Linux system
df -h

Цю просту команду, якщо її обговорювати, можна було б сформулювати так: « Перевіримо використання нашого дискового простору, щоб переконатися, що ми не перевищили жодних порогів ». Доданий контекст перетворює базовий інструмент діагностики на невід’ ємну частину стратегії активного моніторингу.

Поширені запитання

Про що ця стаття "Linux and CLI Vocabulary: 35 Essential Terms for the Terminal (англійською)"?

Вивчіть 35 основних термінів Linux і командного рядка: оболонка, stdin/stdout, трубка, процес, права доступу, ієрархія файлової системи, змінні середовища, cron і багато іншого.

Чи безкоштовна ця стаття?

Так. Усі статті на CoderSlingo, включно з цією, доступні безкоштовно без реєстрації.

Скільки часу займає читання "Linux and CLI Vocabulary: 35 Essential Terms for the Terminal (англійською)"?

Приблизно 9 min.