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/user — ls є командою, -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.txt2>— перенаправляє 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
Символічне посилання (symlink)
** Символічне посилання ** — це вказівник на інший файл або каталог. Подібно до скорочення. Створено з 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
Краткий справочник
| Term | One-liner |
|---|---|
| Shell | Program that interprets commands (bash, zsh) |
Pipe (|) | Pass stdout of one command to stdin of the next |
| Exit code | 0 = success, non-zero = error |
| Daemon | Background process running as a service |
| PID | Unique number identifying a running process |
| chmod | Change file permissions |
| chown | Change file ownership |
| Environment variable | Key-value configuration available to all processes |
| PATH | Directories searched when you type a command |
| cron | Unix job scheduler; crontab defines schedules |
| ssh | Encrypted remote terminal connection |
| stdin/stdout/stderr | Standard input, output, and error streams |
На практиці: Навігація Nuance для не-національних розробників
Багато розробників, які вивчають професійну англійську, особливо ті, що переходять з інших технічних галузей або не англомовних середовищ, вважають тонкощі обміну командним рядком викликом. Це не просто про те, щоб знати * що * команда робить; це про розуміння * як * це обговорюється і запитується, особливо при співпраці з досвідченими членами команди. Просте « запустити » може бути неправильно інтерпретовано — ви просите про пояснення, покроковий посібник або просто про виконання команди? Аналогічно, зворотній зв’язок в перегляді коду часто використовує точну мову, яка вимагає ретельної інтерпретації, окрім буквального перекладу. Розглянемо звичайний сценарій: отримання коментаря щодо запиту на завантаження.
Уявіть, що ви надіслали PR для оновлення функції основної бібліотеки. Після перегляду, ви отримаєте повідомлення від старшого розробника, Сари: « Це добре, але чи не могли б ви додати деякі записи у журналі щодо перевірки даних? » Це допоможе нам зневаджувати потенційні проблеми, якщо вони виникли. » Прямий переклад може зосередитись на « журналюванні » — просто додавання команд друку. Однак фраза «допоможи нам зневаджувати потенційні проблеми» свідчить про глибшу занепокоєність. Коментар не просто запитує вивід; він запитує проактивні заходи для запобігання проблемам * до того, як * вони виникнуть. Це підкреслює важливість розуміння основного наміру технічних запитів і зворотного зв’язку. Фрази на кшталт «це допоможе нам» оформляють запит як корисний, демонструючи розуміння потреб команди. Це також ненадовго вказує на потенційну проблему - перевірка даних сприймається як превентивний крок.
Крім того, розгляньте розмови Slack, коли обговорюєте розв’язання проблем. Молодший розробник може ввести: “Сервер не працює! Виправте це!» Це не відповідає контексту і може бути негайно інтерпретовано як вимога негайних дій без розуміння кореневої причини. Більш професійний підхід буде таким: «Я бачу періодичні помилки на виробничому сервері — зокрема, збільшена затримка під час годин пік. Чи можемо ми дослідити потенційні обмеження ресурсів або проблеми з мережею?» У розширеній формулюванні наведено важливі подробиці: * тип * проблеми (перервані помилки), * контекст * (години пік), а також запропоновано можливі області для дослідження. Такий рівень деталізації очікується у співпраці, де чітке спілкування запобігає непорозумінням і прискорює часи розв’ язання. Навчання сформулювати технічні проблеми з такою точністю не тільки про словниковий запас; це про демонстрацію професійної відповідальності і ефективний внесок в команду.
Нарешті, зверніть увагу на те, як команди описано у документації або повідомленнях про верифікацію. Часто розробники використовують такі фрази, як «рефакторизація для ясності», а не просто заявляють, що вони змінюють код. Це означає навмисні зусилля з метою поліпшення підтримки і зрозумілості - цінності, які високо цінуються в професійних командах розробників. Метою є не тільки виконання самої команди, але й внесок у спільне розуміння кодової бази і її призначення.
# Example: Checking disk space usage on a Linux system
df -h
Цю просту команду, якщо її обговорювати, можна було б сформулювати так: « Перевіримо використання нашого дискового простору, щоб переконатися, що ми не перевищили жодних порогів ». Доданий контекст перетворює базовий інструмент діагностики на невід’ ємну частину стратегії активного моніторингу.