mirror of
https://github.com/jlevy/the-art-of-command-line.git
synced 2024-12-04 10:24:46 +02:00
Some changes in ukrainian translation.
This commit is contained in:
parent
92337c797c
commit
1dcfb9a99f
48
README-uk.md
48
README-uk.md
@ -24,7 +24,7 @@
|
||||
|
||||
Ця робота є результатом [багатьох авторів і перекладачів](AUTHORS.md).
|
||||
Дещо з цього [спочатку](http://www.quora.com/What-are-some-lesser-known-but-useful-Unix-commands) [появилось](http://www.quora.com/What-are-the-most-useful-Swiss-army-knife-one-liners-on-Unix) на [Quora](http://www.quora.com/What-are-some-time-saving-tips-that-every-Linux-user-should-know), але потім переїхала на Github, де знаходяться дуже талановиті люди які зробили багато удосконалень.
|
||||
[**Будь-ласка, зробіть свій внесок**](/CONTRIBUTING.md) якщо Ви замітили помилку або можете щось покращити!
|
||||
[**Будь-ласка, зробіть свій внесок**](/CONTRIBUTING.md) якщо Ви помітили помилку або можете щось покращити!
|
||||
|
||||
|
||||
## Опис
|
||||
@ -38,13 +38,13 @@
|
||||
|
||||
Нотатки:
|
||||
|
||||
- Щоб все вміщалось на одній сторінці, вся інформація вставлена прямо тут. У вас вистачить вмінь, щоб самостійно вивчити питання більш детально в іншому місці. Використовуйте `apt-get`, `yum`, `dnf`, `pacman`, `pip` та `brew` (залежно від вашої системи управління пакетами) для установки нових програм.
|
||||
- Вся інформація збережена в одному файлі для спрощення пошуку, перекладу та навігації. У вас вистачить вмінь, щоб самостійно вивчити питання більш детально в іншому місці. Використовуйте `apt-get`, `yum`, `dnf`, `pacman`, `pip` та `brew` (залежно від вашої системи управління пакетами) для установки нових програм.
|
||||
- На [Explainshell](http://explainshell.com/) можна знайти просте і докладне пояснення того, що таке команди, їх опції, пайпи(pipes(*|*)) і т.д.
|
||||
|
||||
|
||||
## Основи
|
||||
|
||||
- Вивчіть основи Bash. Просто візьміть і наберіть у командному рядку термінала `man bash` і хоча б перегляньте; він досить просто читається і він не дуже великий. Інші шелли теж можуть бути хороші, але Bash - потужна програма, і Bash завжди під рукою (використання *виключно* zsh, fish і т.д., які напевно круто виглядають на вашому лептопі і ні в чому вас не обмежують, наприклад ви не зможете використовувати ці можливості Шеллу на вже існуючому сервері).
|
||||
- Вивчіть основи Bash. Просто візьміть і наберіть у командному рядку термінала `man bash` і хоча б перегляньте; він досить просто читається і він не дуже великий. Інші шелли теж можуть бути хороші, але Bash - потужна програма, що є частиною абсолютної більшості дистрибутивів Linux та являється базою більшості готових скрипті (використання *виключно* zsh, fish і т.д., які напевно круто виглядають на вашому лептопі і ні в чому вас не обмежують, наприклад ви не зможете використовувати ці можливості Шеллу на вже існуючому сервері).
|
||||
- Вивчіть як використовувати хоча б один консольний редактор тексту. Найкраще Vim (`vi`), адже у нього немає конкурентів, коли вам потрібно швидко щось правити (навіть якщо ви постійно використовуєте Emacs чи якийсь важкий IDE або модний хіпстерський редактор).
|
||||
- Знайте, як читати документацію через `man` (`man man`; `man` у кутах документа в дужках додає номер, наприклад 1 - для звичайних команд, 5 - для файлів, 8 - для адміністративних команд). Шукайте інформацію через `apropos`, і пам'ятайте, що деякі команди - не виконувані(executables), а вбудовані команди Bash, і допомогу по них можна отримати через команду `help` і `help -d`.
|
||||
- Можна перенаправляти введення та виведення через `>` і `<` і пайпи `|`. Пам'ятайте, що `>` - переписує вихідний файл, а `>>` додає до нього. Дізнайтеся побільше про stdout і stderr.
|
||||
@ -54,8 +54,8 @@
|
||||
- Основи роботи з файлами: `ls` і `ls -l` (зокрема, дізнайтеся, що значить кожен стовпець в `ls -l`), `less`, `head`,` tail` і `tail -f` (або навіть краще - `less + F`), `ln` і `ln -s` (дізнайтеся різницю між символьними посиланнями і жорсткими посиланнями, і чому жорсткі посилання краще), `chown`, `chmod`, `du` (для отримання швидкої інформації по використанню диска: `du -hk *`). Для менеджменту файлової системи, `df`, `mount`, `fdisk`, `mkfs`, `lsblk`.
|
||||
- Основи роботи з мережею: `ip` або `ifconfig`, `dig`.
|
||||
- Вивчіть і використовуйте систему управління версіями, наприклад таку як `git`.
|
||||
- Добре знайте регулярні вирази і різні опції для `grep`/`egrep`. Такі опції як `-i`, `-o`, `-A`, та `-B` варто знати.
|
||||
- Навчіться використовувати системами управління пакетами `apt-get`, `yum`, `dnf` та `pacman` (залежно від дистрибутива). Знайте як шукати і встановлювати пакети і обов'язково майте встановленим `pip` для установки командних утиліт, написаних на Python (деякі з тих команд, що ви знайдете нижче, найлегше встановити через `pip`).
|
||||
- Навчіться писати регулярні вирази і вивчіть різні опції для `grep`/`egrep`. Такі опції як `-i`, `-o`, `-A`, та `-B` варто знати.
|
||||
- Навчіться використовувати системами управління пакетами `apt-get`, `yum`, `dnf` та `pacman` (залежно від дистрибутива). Знайте як шукати і встановлювати пакети. Обов'язково майте встановленим `pip` для встановки модулів та програм, написаних на Python (деякі з тих команд, що ви знайдете нижче, найлегше встановити через `pip`).
|
||||
|
||||
|
||||
## Щоденне використання
|
||||
@ -78,7 +78,7 @@
|
||||
- Знайте різні сигнали, які можна слати процесам. Наприклад, щоб призупинити процес, використовуйте `kill -STOP [pid]`. Для повного списку подивіться `man 7 signal`.
|
||||
- Використовуйте `nohup` або` disown`, якщо ви хочете запустити фоновий процес що б він постійно виконувався у фоні.
|
||||
- Дізнайтеся, які процеси слухають порти через `netstat -lntp` або `ss -plat` (для TCP; додайте `-u` для UDP).
|
||||
- Зверніть увагу на `lsof` щоб подивитися відкриті сокети і файли.
|
||||
- Зверніть увагу на команду `lsof`. Вона допоможе Вам подивитися відкриті сокети і файли.
|
||||
- Команда `uptime` or `w` показує як довго працює система.
|
||||
- Використовуйте `alias`, щоб створити скорочення для часто використовуємих команд. Наприклад, `alias ll='ls -latr'` створить нове скорочення(alias) `ll`.
|
||||
- Збережіть свої синоніми (aliases), налаштування і фунції які ви часто використовуєте у `~/.bashrc`, більш детально [тут](http://superuser.com/a/183980/7106). Це зробить їх доступними в усіх ваших сесіях shell.
|
||||
@ -128,7 +128,7 @@
|
||||
- Для роботи з файлами, список яких дала інша команда (наприклад `git`), використовуйте `fpp` ([PathPicker](https://github.com/facebook/PathPicker)).
|
||||
- Щоб швидко підняти веб-сервер в поточній директорії (і піддерикторіях), який доступний для всіх у вашій мережі, використовуйте:
|
||||
`python -m SimpleHTTPServer 7777` (на прту 7777 і для Python 2) або `python -m http.server 7777` (на прту 7777 і для Python 3).
|
||||
- Щоб виконати команду з привілеями, використовуйте `sudo` (для root) і `sudo -u` (для іншого користувача). Використовуйте `su` або `sudo bash`, щоб запустити шелл від імені цього користувача. Використовуйте `su -`, щоб симулювати свіжий вхід під root або gsl іншим користувачем.
|
||||
- Щоб виконати команду з привілеями, використовуйте `sudo` (для root) і `sudo -u` (для іншого користувача). Використовуйте `su` або `sudo bash`, щоб запустити шелл від імені цього користувача. Використовуйте `su -`, щоб симулювати свіжий вхід під root або під іншим користувачем.
|
||||
|
||||
|
||||
## Обробка файлів та інформації
|
||||
@ -136,8 +136,8 @@
|
||||
- Для того, щоб знайти файл в поточній директорії, виконайте `find. -iname '*something*'`. Для того, щоб шукати файл по всій системі, використовуйте `locate something` (але не забувайте, що `updatedb` міг ще не проіндексувати нещодавно створені файли).
|
||||
- Для пошуку по вмісту або фалах (більш детально зробити пошук допоможе `grep -r`) використовуйте [`ag`](https://github.com/ggreer/the_silver_searcher).
|
||||
- Для конвертації HTML в текст: `lynx -dump -stdin`
|
||||
- Для конвертації різних типів розмітки (HTML, Markdown та ін.) попроробуйте [`pandoc`](http://pandoc.org/).
|
||||
- Якщо потрібно працювати з XML, є стара, але хороша утиліта - `xmlstarlet`.
|
||||
- Для конвертації різних типів розмітки (HTML, Markdown та ін.) спроробуйте утиліту [`pandoc`](http://pandoc.org/).
|
||||
- Якщо нуобхідно працювати з XML, є стара, але хороша утиліта - `xmlstarlet`.
|
||||
- Для роботи з JSON використовуйте [`jq`](http://stedolan.github.io/jq/).
|
||||
- Для YAML використовуйте [`shyaml`](https://github.com/0k/shyaml).
|
||||
- Для Excel і CSV файлів [csvkit](https://github.com/onyxfish/csvkit) надає `in2csv`, `csvcut`, `csvjoin`, `csvgrep` і т.д.
|
||||
@ -146,10 +146,10 @@
|
||||
- Знайте про `cut`, `paste`, і `join` для роботи з текстовими файлами. Багато людей використовують `cut`, забувши про `join`.
|
||||
- Знайте про `wc`: для підрахунку нових рядків (`-l`), символів (`-m`), слів (`-w`) і для байтового підрахунку (`-c`).
|
||||
- Знайте про `tee` для копіювання в файл з stdin і stdout, щось типу `ls -al | tee file.txt`.
|
||||
- Не забувайте, що ваше місце знаходження (локаль) впливає на багато команд, включаючи порядок сортування, порівняння і продуктивність. Багато дистрибутиви Linux автоматично виставляють `LANG` або будь-яку іншу змінну в підходящу для вашого регіону. Через це результати функцій сортування можуть працювати непередбачувано. Знайте що `i18n` можуть значно знизити продуктивність сортувань. У деяких випадках можна повністю цього уникати (за винятком рідкісних випадків), сортуючи традиційно побайтово, використовуйте `export LC_ALL = C`.
|
||||
- Не забувайте, що ваші налаштування консолі та мовні/регіональні налаштування (локаль) впливають на багато команд, включаючи порядок сортування, порівняння і продуктивність. Багато дистрибутиви Linux автоматично виставляють `LANG` або будь-яку іншу змінну в підходящу для вашого регіону. Через це результати функцій сортування можуть працювати непередбачувано. Знайте що `i18n` можуть значно знизити продуктивність сортувань. У деяких випадках можна повністю цього уникати (за винятком рідкісних випадків), сортуючи традиційно побайтово, використовуйте `export LC_ALL = C`.
|
||||
- Ви можете встановити спецефічне середовище для команди за допомогогю префікса, а саме: `TZ=Pacific/Fiji date`.
|
||||
- Знайте основи `awk` і `sed` для простих маніпуляцій з даними. Наприклад, щоб отримати суму всіх чисел, які знаходяться в третій колонці текстового файлу, можна використати `awk '{ x += $3 } END { print x }'`. Швидше за все, це вийде в рази 3 швидше і рази в 3 простіше, ніж робити це в Пітоні.
|
||||
- Щоб замінити всі знаходження підрядка в одному або декількох файлах:
|
||||
- Щоб замінити всі входження підрядка в одному або декількох файлах:
|
||||
```sh
|
||||
perl -pi.bak -e 's/old-string/new-string/g' my-files-*.txt
|
||||
```
|
||||
@ -187,7 +187,7 @@
|
||||
- Для інформації про мережу використовуйте `netstat` і `ss`.
|
||||
- Для більш детальної інформації використовуйте [`glances`](https://github.com/nicolargo/glances). Ця програма показує відразу кілька різних статистик в одному вікні терміналу. Корисно, коли стежите за відразу декількома системами.
|
||||
- Для того, щоб стежити за пам'яттю вокористовуйте `free` і `vmstat`. Зокрема, не забувайте, що значення кешування ("cached" value) - Це пам'ять, яку тримає ядро і ці значення є частиною `free`.
|
||||
- Використовуйте `mtr` для кращого трасування(простежити маршрут), щоб знаходити проблеми мережі.
|
||||
- Використовуйте `mtr` для збору статистики трасування(простежити маршрут до віддаленого сервера), щоб знаходити проблеми мережі.
|
||||
- Для того, щоб дізнатися, чому диск повністю забитий, використовуйте `ncdu`, це зберігає час у порівнянні з тим же `du -sh *`.
|
||||
- Для того, щоб дізнатися, який сокет або процес використовує інтернет, використовуйте `iftop` або `nethogs`.
|
||||
- Додаток `ab` який поставляється разом з apache, корисний для швидкої і поверхневої перевірки продуктивності веб-сервера. Для більш серйозного лоад-тестінгу використовуйте `siege`.
|
||||
@ -199,20 +199,20 @@
|
||||
- Коли дебажите щось, що зламалося в минулому, використовуйте `sar` буває дуже корисно. Показує історію та статистику CPU, пам'яті, мережі і т.д.
|
||||
- Для аналізу більш складних систем і продуктивності використовуйте `stap` ([SystemTap](https://sourceware.org/systemtap/wiki)), [`perf`](http://en.wikipedia.org/wiki/ Perf_(Linux)) і [`sysdig`](https://github.com/draios/sysdig).
|
||||
- Дізнайтеся, яка у вас операційна система, через `uname` або `uname -a` (інформація про ядро) або `lsb_release -a` (інформація про дистрибутив Linux).
|
||||
- Використовуйте `dmesg`, коли щось відбувається зовсім дивне (це можуть бути проблеми із залізом або драйверами).
|
||||
- Використовуйте `dmesg`, коли щось відбувається зовсім дивне (це можуть бути проблеми із залізом, драйверами, тощо).
|
||||
|
||||
|
||||
## Одним рядком
|
||||
|
||||
Кілька прикладів склеювання команд:
|
||||
- Це досить круто, що можна знайти множинні перетину файлів, з'єднати відсортовані файли і подивитися різницю в декількох файлів через `sort`/`uniq`. Це швидкий підхід і працює на файлах будь-якого розміру (включаючи багатогігабайтними файли). (Сортування не обмежено пам'яттю, але можливо вам доведеться додати `-T`, якщо `/tmp` знаходиться на невеликому логічному диску). Ще подивіться на те, що було сказано вище про `LC_ALL`. Прапор сортування `-u` не використовується нижче, щоб було зрозуміліше:
|
||||
- Це досить круто, що можна знайти множинни перетину файлів, з'єднати відсортовані файли і подивитися різницю декількох файлів через `sort`/`uniq`. Це швидкий підхід і працює на файлах будь-якого розміру (включаючи багатогігабайтні файли). (Сортування не обмежено пам'яттю, але можливо вам доведеться додати `-T`, якщо `/tmp` знаходиться на невеликому логічному диску). Ще подивіться на те, що було сказано вище про `LC_ALL`. Опція сортування `-u` не використовується нижче, щоб було зрозуміліше:
|
||||
```sh
|
||||
cat a b | sort | uniq > c # c is a union b
|
||||
cat a b | sort | uniq -d > c # c is a intersect b
|
||||
cat a b b | sort | uniq -u > c # c is set difference a - b
|
||||
```
|
||||
- Використовуйте `grep. *` для того, щоб подивитися вміст всіх файлів в директорії. Це може бути корисно для директорій заповнених конфігураціями як ці в `/sys`, `/proc`, `/etc`.
|
||||
- Просумувати всі числа, які знаходяться в третій колонці текстового файлу (це в 3 рази швидше і 3 рази простіше, ніж робити це в Пітоні):
|
||||
- Використовуйте `grep . *` для того, щоб подивитися вміст всіх файлів в директорії. Це може бути корисно для директорій заповнених конфігураціями як ці в `/sys`, `/proc`, `/etc`.
|
||||
- Просумувати всі числа, які знаходяться в третій колонці текстового файлу (це в 3 рази швидше і 3 рази простіше, ніж робити це в Пітоні) можна наступним чином:
|
||||
```sh
|
||||
awk '{ x += $3 } END { print x }' myfile
|
||||
```
|
||||
@ -245,11 +245,11 @@
|
||||
|
||||
- `expr`: для виконання арифметичних і булевих операцій, а також регулярних виразів
|
||||
- `m4`: простий макро-процесор
|
||||
- `yes`: безкінечно виводить рядок
|
||||
- `yes`: безкінечно виводить рядок зі словом "yes"
|
||||
- `cal`: хороший календар
|
||||
- `env`: виводить змінні середовища (корисно в Bash-скриптах)
|
||||
- `printenv`: показати змінні оточення (корисно в скриптах або при відладці)
|
||||
- `look`: знайде англійські слова (або рядки у файлі) які починаються із рядках
|
||||
- `env`: показує змінні середовища (корисно в Bash-скриптах)
|
||||
- `printenv`: показує змінні оточення (корисно в скриптах або при відладці)
|
||||
- `look`: виведе рядки у файлі які починаються із заданого слова/підрядка
|
||||
- `cut`, `paste` і `join`: маніпуляції з даними
|
||||
- `fmt`: форматування параграфів у тексті
|
||||
- `pr`: відформатовує текст в сторінки/колонки
|
||||
@ -269,8 +269,8 @@
|
||||
- `file`: визначає тип файлу
|
||||
- `tree`: показує директорії і піддиректорії у вигляді дерева, як `ls`, але рекурсивно
|
||||
- `stat`: інформація про файл
|
||||
- `time`: execute and time a commands
|
||||
- `timeout`: зупиняє команду після того як завершиться вказаний час в аргументі
|
||||
- `time`: виведе інформацію про час виконання команди/програми
|
||||
- `timeout`: зупиняє виконання команди після того як завершиться вказаний час в аргументі
|
||||
- `lockfile`: створює позначку в файлі який може бути видаленим тільки через команду `rm -f`
|
||||
- `logrotate`: змінити, зжати і відправити логи.
|
||||
- `watch`: запустити команду повторно, показуючи результати і/або виділення змін
|
||||
@ -284,12 +284,12 @@
|
||||
- `iconv` або `uconv`: конвертація кодувань
|
||||
- `split` і `csplit`: розбити файли
|
||||
- `sponge`: прочитати весь інпут перед тим, як його записати. Корисно, коли читаєш з того ж файлу, куди записуєш. Наприклад, ось так: `grep -v something some-file | sponge some-file`
|
||||
- `units`: конвертер. Метри в кілометри, версти в п'яді (дивіться `/usr/share/units/definitions.units`)
|
||||
- `units`: використовується для конвертації одиниць вимірювання (дивіться `/usr/share/units/definitions.units`)
|
||||
- `apg`: генерація паролів
|
||||
- `7z`: архіватор з високим ступенем стиснення
|
||||
- `ldd`: показує залежності програми від системних бібліотек
|
||||
- `nm`: symbols from object files
|
||||
- `ab`: бенчмаркінг веб-серверів
|
||||
- `ab`: вбудований в Apache бенчмарк веб-серверів
|
||||
- `strace`: відладка системних викликів
|
||||
- `mtr`: трасування для відладки мережі
|
||||
- `cssh`: паралельне виконання команд в графічному інтерфейсі
|
||||
|
Loading…
Reference in New Issue
Block a user