From 6b59c87ac904cc5e39d9e894210e37474ceeb19b Mon Sep 17 00:00:00 2001 From: stepan Date: Thu, 8 Oct 2015 01:33:04 +0300 Subject: [PATCH 01/34] + me to autors --- AUTHORS.md | 1 + admin/authors-info.yml | 1 + 2 files changed, 2 insertions(+) diff --git a/AUTHORS.md b/AUTHORS.md index 17819c4..4522912 100644 --- a/AUTHORS.md +++ b/AUTHORS.md @@ -78,6 +78,7 @@ Contributors are listed in alphabetical order by GitHub login. * [Alex F. (youmee)](https://github.com/youmee) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=youmee)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ayoumee) * [Zack Piper (zackp30)](https://github.com/zackp30) — [2+](https://github.com/jlevy/the-art-of-command-line/commits?author=zackp30)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Azackp30) * [Xudong Zhang (zxdvd)](https://github.com/zxdvd) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=zxdvd)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Azxdvd) +* [Stepan Babala (stepan0904)](https://github.com/stepan0904) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=stepan0904)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Astepan0904) — _translator (ua)_ Numbers link to commits/issues. For simplicity, this file is maintained only in English. diff --git a/admin/authors-info.yml b/admin/authors-info.yml index 77c54cd..30438d6 100644 --- a/admin/authors-info.yml +++ b/admin/authors-info.yml @@ -36,3 +36,4 @@ roles: xuchunyang: translator (zh) stevenlordiam: translator (zh) Armour: translator (zh) + stepan0904: translator (ua) From 3f3a22dbe5a4f9df3e85411f6fbdba1cc6faeed9 Mon Sep 17 00:00:00 2001 From: stepan Date: Thu, 8 Oct 2015 01:33:52 +0300 Subject: [PATCH 02/34] + ua --- README-es.md | 2 +- README-ja.md | 2 +- README-ko.md | 2 +- README-pt.md | 2 +- README-ru.md | 2 +- README-sl.md | 2 +- README-ua.md | 0 README-zh.md | 2 +- 8 files changed, 7 insertions(+), 7 deletions(-) create mode 100644 README-ua.md diff --git a/README-es.md b/README-es.md index eedd008..00ce770 100644 --- a/README-es.md +++ b/README-es.md @@ -1,5 +1,5 @@ [ Languages: -[English](README.md), [Español](README-es.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [中文](README-zh.md) +[English](README.md), [Español](README-es.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [中文](README-zh.md), [Українська](README-ua.md) ] diff --git a/README-ja.md b/README-ja.md index 2e5a31f..c9fd8ae 100644 --- a/README-ja.md +++ b/README-ja.md @@ -1,5 +1,5 @@ [ Languages: -[English](README.md), [Español](README-es.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [中文](README-zh.md) +[English](README.md), [Español](README-es.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [中文](README-zh.md), [Українська](README-ua.md) ] 原文のコミット [bb0c38c0899339e836c37eead4a9534b06c56662](https://github.com/jlevy/the-art-of-command-line/blob/bb0c38c0899339e836c37eead4a9534b06c56662/README.md) diff --git a/README-ko.md b/README-ko.md index d576ce3..5f78304 100644 --- a/README-ko.md +++ b/README-ko.md @@ -1,5 +1,5 @@ [ Languages: -[English](README.md), [Español](README-es.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [中文](README-zh.md) +[English](README.md), [Español](README-es.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [中文](README-zh.md), [Українська](README-ua.md) ] diff --git a/README-pt.md b/README-pt.md index fc066e0..659586a 100644 --- a/README-pt.md +++ b/README-pt.md @@ -1,5 +1,5 @@ [ Languages: -[English](README.md), [Español](README-es.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [中文](README-zh.md) +[English](README.md), [Español](README-es.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [中文](README-zh.md), [Українська](README-ua.md) ] diff --git a/README-ru.md b/README-ru.md index 644896a..335f7c4 100644 --- a/README-ru.md +++ b/README-ru.md @@ -1,5 +1,5 @@ [ Languages: -[English](README.md), [Español](README-es.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [中文](README-zh.md) +[English](README.md), [Español](README-es.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [中文](README-zh.md), [Українська](README-ua.md) ] diff --git a/README-sl.md b/README-sl.md index 96cf4f1..562c239 100644 --- a/README-sl.md +++ b/README-sl.md @@ -1,5 +1,5 @@ [ Languages: -[English](README.md), [Español](README-es.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [中文](README-zh.md) +[English](README.md), [Español](README-es.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [中文](README-zh.md), [Українська](README-ua.md) ] diff --git a/README-ua.md b/README-ua.md new file mode 100644 index 0000000..e69de29 diff --git a/README-zh.md b/README-zh.md index eb27bae..2d04cf1 100644 --- a/README-zh.md +++ b/README-zh.md @@ -1,5 +1,5 @@ [ Languages: -[English](README.md), [Español](README-es.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [中文](README-zh.md) +[English](README.md), [Español](README-es.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [中文](README-zh.md), [Українська](README-ua.md) ] From b227f199b4d864bd79e514a2f3e7946d9fcd67a9 Mon Sep 17 00:00:00 2001 From: stepan Date: Thu, 8 Oct 2015 01:34:23 +0300 Subject: [PATCH 03/34] + title --- README-ua.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/README-ua.md b/README-ua.md index e69de29..d79f92b 100644 --- a/README-ua.md +++ b/README-ua.md @@ -0,0 +1,8 @@ +[ Languages: +[English](README.md), [Español](README-es.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [中文](README-zh.md), [Українська](README-ua.md) +] + +# Мистецтво командного рядка + +[![Вступайте в англомовний чат проекту https://gitter.im/jlevy/the-art-of-command-line](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/jlevy/the-art-of-command-line?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) + From c211dde2994aa2fe13910418e8c8c2d47a0c5a2e Mon Sep 17 00:00:00 2001 From: stepan Date: Thu, 8 Oct 2015 01:34:47 +0300 Subject: [PATCH 04/34] content list --- README-ua.md | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/README-ua.md b/README-ua.md index d79f92b..7eeca48 100644 --- a/README-ua.md +++ b/README-ua.md @@ -6,3 +6,29 @@ [![Вступайте в англомовний чат проекту https://gitter.im/jlevy/the-art-of-command-line](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/jlevy/the-art-of-command-line?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) + +- [Опис](#Опис) +- [Основи](#Основи) +- [Щоденне використання](#Щоденне-використання) +- [Обробка файлів та інформації](#Обробка-файлів-та-інформації) +- [Дебаггінг](#Дебаггінг) +- [Одним рядком](#Одним-рядком) +- [Складно але корисно](#Складно-але-корисно) +- [Тільки для MacOS X](#Тільки-для-MacOS-X) +- [Інші джерела](#Інші-джерела) +- [Декламація](#Декламація) + + +## Опис + +##Основи +##Щоденне-використання +##Обробка-файлів-та-інформації +##Дебаггінг +##Одним-рядком +##Складно-але-корисно +##Тільки-для-MacOS-X +##Інші-джерела +##Декламація + + From 0937ce7751f5562735e483288ef3886962a2258a Mon Sep 17 00:00:00 2001 From: stepan Date: Thu, 8 Oct 2015 01:35:27 +0300 Subject: [PATCH 05/34] introduction --- README-ua.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/README-ua.md b/README-ua.md index 7eeca48..6406185 100644 --- a/README-ua.md +++ b/README-ua.md @@ -19,6 +19,14 @@ - [Декламація](#Декламація) +![curl -s 'https://raw.githubusercontent.com/jlevy/the-art-of-command-line/master/README.md' | egrep -o '`\w+`' | tr -d '`' | cowsay -W50](cowsay.png) + +Використанню командного рядка часто не приділяють достатньої уваги. Про термінал говорять, як про щось містичне. Насправді, ці навики явно (і не явно) збільшує Вашу продуктивність в роботі. Даний документ є підбіркою заміток і порад, які я знайшов для себе корисними, працюючи з командним рядком в Linux. Деякі з них - прості й очевидні, але деякі - досить складні та призначені для вирішення конкретних завдань. Це невелика публікація, але якщо Ви вже все це знаєте, що тут написано, і можете згадати як це все використовувати - Ви знаєте багато! + +Ця робота є результатом [багатьох авторів і перекладачів](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, де знаходяться дуже талановиті люди і можуть допомогти. Якщо Ви замітили помилки (у всіх варіантах перекладу), будь ласка залиште опис [issue](https://github.com/jlevy/the-art-of-command-line/issues) або зробіть Pull requests (Звичайно перевіривши уже існуючі) + + ## Опис ##Основи From 174e91a0b0a3746c33243fc76bc5c66353372c9e Mon Sep 17 00:00:00 2001 From: stepan Date: Fri, 23 Oct 2015 23:09:58 +0300 Subject: [PATCH 06/34] + description --- README-ua.md | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/README-ua.md b/README-ua.md index 6406185..b768ad6 100644 --- a/README-ua.md +++ b/README-ua.md @@ -29,8 +29,23 @@ ## Опис +Основне: + +- Дана публікація призначена як для недосвідчених, так і для досвідчених користувачів. Цілі: *об'ємість* (зібрати всі важливі аспекти використання командного рядка), *практичність* (надати конкретні приклади для найчастіших задач) та *стислість* (не варто вдаватись у неочевидні речі, про які можна почитати в інших місцях). +- Цей документ написаний для користувачів Linux, із єдиним винятком - розділ "[MacOS only](#macos-only)". Все інше підходить для всі UNIX/MacOS системи (і навіть для Cygwin). +- Сфокусована на інтерактивному Баші, але багато речей також можуть бути використані в інших Шелах; і в застосовні до Баш-скриптів. +- Ця інструкція включає в себе стандартні Unix команди і ті, для яких потрібно встановлювати сторонні пакети. Вони настільки корисні, що варті того, щоб їх встановили. + +Нотатки: + +- Що б все вміщалось на одній сторінці, вся інформація вставлена прямо тут. Ви досить розумні для того, щоб самостійно вивчити питання більш детально в іншому місці. Використовуйте `apt-get`/`yum`/`dnf`/`pacman`/`pip`/`brew` (залежно від вашої системи управління пакетами) для установки нових програм. +- На [Explainshell](http://explainshell.com/) можна знайти просте і докладне пояснення того, що таке команди, їх опції, пайпи(pipes(|)) і т.д. + + ##Основи + ##Щоденне-використання + ##Обробка-файлів-та-інформації ##Дебаггінг ##Одним-рядком From 2d6eafff867365b98c0540525b366ecfd734127f Mon Sep 17 00:00:00 2001 From: stepan Date: Fri, 23 Oct 2015 23:10:18 +0300 Subject: [PATCH 07/34] fix mac os links --- README-ua.md | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/README-ua.md b/README-ua.md index b768ad6..e3332fe 100644 --- a/README-ua.md +++ b/README-ua.md @@ -14,7 +14,7 @@ - [Дебаггінг](#Дебаггінг) - [Одним рядком](#Одним-рядком) - [Складно але корисно](#Складно-але-корисно) -- [Тільки для MacOS X](#Тільки-для-MacOS-X) +- [MacOS only](#Macos-only) - [Інші джерела](#Інші-джерела) - [Декламація](#Декламація) @@ -47,11 +47,17 @@ ##Щоденне-використання ##Обробка-файлів-та-інформації + ##Дебаггінг + ##Одним-рядком + ##Складно-але-корисно -##Тільки-для-MacOS-X + +##Macos-only + ##Інші-джерела + ##Декламація From 3169fdb63e853dfd8bcb02553e12d3e92f78a434 Mon Sep 17 00:00:00 2001 From: stepan Date: Sat, 24 Oct 2015 00:15:22 +0300 Subject: [PATCH 08/34] * --- README-ua.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README-ua.md b/README-ua.md index e3332fe..d08039d 100644 --- a/README-ua.md +++ b/README-ua.md @@ -33,7 +33,7 @@ - Дана публікація призначена як для недосвідчених, так і для досвідчених користувачів. Цілі: *об'ємість* (зібрати всі важливі аспекти використання командного рядка), *практичність* (надати конкретні приклади для найчастіших задач) та *стислість* (не варто вдаватись у неочевидні речі, про які можна почитати в інших місцях). - Цей документ написаний для користувачів Linux, із єдиним винятком - розділ "[MacOS only](#macos-only)". Все інше підходить для всі UNIX/MacOS системи (і навіть для Cygwin). -- Сфокусована на інтерактивному Баші, але багато речей також можуть бути використані в інших Шелах; і в застосовні до Баш-скриптів. +- Сфокусована на інтерактивному Bash, але багато речей також можуть бути використані в інших Шелах; і в застосовні до Bash-скриптів. - Ця інструкція включає в себе стандартні Unix команди і ті, для яких потрібно встановлювати сторонні пакети. Вони настільки корисні, що варті того, щоб їх встановили. Нотатки: From f05cec378a1263384f158c4b965d006c01b499fb Mon Sep 17 00:00:00 2001 From: stepan Date: Sat, 24 Oct 2015 00:16:08 +0300 Subject: [PATCH 09/34] base --- README-ua.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/README-ua.md b/README-ua.md index d08039d..75761c4 100644 --- a/README-ua.md +++ b/README-ua.md @@ -44,6 +44,19 @@ ##Основи +- Вивчіть основи Bash. Просто візьміть і наберіть у командному рядку `man bash` в терміналі і хоча б перегляньте; він досить просто читається і він не дуже великий. Інші шелли теж можуть бути хороші, але Bash - потужна програма, і Bash завжди під рукою (використання *виключно* zsh, fish і т.д., які напевно круто виглядають на Вашому лептопі і ні в чому Вас не обмежують, наприклад Ви не зможете використовувати ці можливості Шеллу на вже існуючому сервері). +- Вивчіть як використовувати хоча б один консольний редактор тексту. Найкраще Vim (`vi`), адже у нього немає конкурентів, коли вам потрібно швиденько щось підправити (навіть якщо Ви постійно сидите у Emacs чи, якомусь важкому IDE або на модному хіпстерському редакторі. +- Знайте, як читати документацію через `man` (`man man`; `man` у кутах документа в дужках додає номер, наприклад 1 - для звичайних команд, 5 - для файлів, 8 - для адміністративних команд). Шукайте інформацію через `apropos`, і пам'ятайте, що деякі команди - не виконувані(executables), а вбудовані команди Bash, і допомогу по них можна отримати через команду `help` і `help -d`. +- Можна перенаправляти введення та виведення через `>` і `<` і пайпи `|`. Пам'ятайте, що `>` - переписує вихідний файл, а `>>` додає до нього. Дізнайтеся побільше про stdout і stderr. +- Дізнайтеся побільше про `*` (а також `?` і `[`...`]`), кавички, а також різницю між подвійними `"` і одинарними `'` кавичками. +- Знайте як працювати із процесами в Bash: `&`, **ctrl-z**, **ctrl-c**, `jobs`, `fg`, `bg`, `kill`, і т.д. +- Знайте `ssh` та основи беспарольної аутентифікації через `ssh-agent`, `ssh-add`, і т.д. +- Основи роботи з файлами: `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`. +- Добре знайте регулярні вирази і різні опції для `grep`/`egrep`. Такі опції як `-i`, `-o`, `-A`, та `-B` варто знати. +- Навчіться використовувати системами управління пакетами `apt-get`, `yum`, `dnf` та `pacman` (залежно від дистрибутива). Знайте як шукати і встановлювати пакети і обов'язково майте встановленим `pip` для установки командних утиліт, написаних на Python (деякі з тих команд, що ви знайдете нижче, найлегше встановити через` pip`). + + ##Щоденне-використання ##Обробка-файлів-та-інформації From 31f106e85c0cb63aff31253dc88914a4ef602c20 Mon Sep 17 00:00:00 2001 From: stepan Date: Sat, 24 Oct 2015 00:19:04 +0300 Subject: [PATCH 10/34] * --- README-ua.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README-ua.md b/README-ua.md index 75761c4..987f517 100644 --- a/README-ua.md +++ b/README-ua.md @@ -14,7 +14,7 @@ - [Дебаггінг](#Дебаггінг) - [Одним рядком](#Одним-рядком) - [Складно але корисно](#Складно-але-корисно) -- [MacOS only](#Macos-only) +- [MacOS only](#macos-only) - [Інші джерела](#Інші-джерела) - [Декламація](#Декламація) From 6c92d100d4a42b654c0fe61e0fbd1a9647ed2d92 Mon Sep 17 00:00:00 2001 From: stepan Date: Sat, 24 Oct 2015 00:27:50 +0300 Subject: [PATCH 11/34] * --- README-ua.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README-ua.md b/README-ua.md index 987f517..c087a74 100644 --- a/README-ua.md +++ b/README-ua.md @@ -39,7 +39,7 @@ Нотатки: - Що б все вміщалось на одній сторінці, вся інформація вставлена прямо тут. Ви досить розумні для того, щоб самостійно вивчити питання більш детально в іншому місці. Використовуйте `apt-get`/`yum`/`dnf`/`pacman`/`pip`/`brew` (залежно від вашої системи управління пакетами) для установки нових програм. -- На [Explainshell](http://explainshell.com/) можна знайти просте і докладне пояснення того, що таке команди, їх опції, пайпи(pipes(|)) і т.д. +- На [Explainshell](http://explainshell.com/) можна знайти просте і докладне пояснення того, що таке команди, їх опції, пайпи(pipes(*|*)) і т.д. ##Основи From 8c292ed00d8dfff65ca82d8d81a5e4b779423893 Mon Sep 17 00:00:00 2001 From: stepan Date: Sat, 24 Oct 2015 02:02:36 +0300 Subject: [PATCH 12/34] for every day usage part 1 --- README-ua.md | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/README-ua.md b/README-ua.md index c087a74..5c529b8 100644 --- a/README-ua.md +++ b/README-ua.md @@ -59,6 +59,42 @@ ##Щоденне-використання +- Використовуйте клавішу таб в Bash для автодоповнення аргументів до командам та **ctrl-r** для пошуку по історії командного рядка. +- Використовуйте **ctrl-w** в Bash для того, щоб видалити останнє слово в команді; **ctrl-u** для того, щоб видалити команду повністю. Використовуйте **alt-b** і **alt-f** для того, щоб переміщатись між словами у команді, **ctrl-k** для того, щоб перейти в кінця рядка, **ctrl-l** для того, щоб очистити екран. Гляньте на `man readline` щоб дізнатися про всі шорткати Bash. Їх багато! Наприклад, **alt-.** переміщається між попередніми аргументам команди, а **alt-*** максимально розширює аргументи. +- Якщо Вам подобаються шорткати vim, виконайте `set -o vi` (`set -o emacs` що б повернути налаштування). +- Для редагування довгих команд після налаштування вашого консольного редактора (наприклад `export EDITOR=vim`), **ctrl-x** **ctrl-e** відкриє поточну команду в редакторі для багаторядкового редагування команди. Або у vi стилі, **escape-v**. +- Для того, щоб переглянути історію, введіть `history`. Також існує безліч абревіатур, наприклад `! $` - Останній аргумент, `!!` - остання команда, хоча ці абревіатури часто заміняються шорткати **ctrl-r** та **alt-.**. +- Для того, щоб стрибнути до останньої робочої директорії, використовуйте `cd -` +- Якщо Ви написали команду наполовину і раптом передумали, натисніть **alt-#** для того, щоб додати `#` на початок команди, та відправте команду як коментар. Потім ви зможете повернутися до неї через історію команд. +- Використовуйти `xargs` (або` parallel`). Це дуже корисно. Зверніть увагу, що Ви можете контролювати кількість команд на кожен рядок (`-L`) також паралельність (`-P`). Якщо Ви не впевнені, що робите щось правильно, почніть з `xargs echo`. Також `-I{}` - корисно. Приклади: +```bash + find . -name '*.py' | xargs grep some_function + cat hosts | xargs -I{} ssh root@{} hostname +``` +- `pstree -p` - допоможе побачити дерево процесів. +- Використовуйте `pgrep` і `pkill` для того, щоб знаходити або слати сигнали до процесів по імені (`-f` корисна опція). +- Знайте різні сигнали, які можна слати процесам. Наприклад, щоб призупинити процес, використовуйте `kill -STOP [pid]`. Для повного списку подивіться `man 7 signal`. +- Використовуйте `nohup` або` disown`, якщо ви хочете запустити фоновий процес що б він постійн виконувався у фоні. +- Дізнайтеся, які процеси слухають порти через `netstat -lntp` або `ss -plat` (для TCP; додайте `-u` для UDP). +- Зверніть увагу на `lsof` щоб подивитися відкриті сокети і файли. +- Команда `uptime` or `w` показує як довго працює система. +- Використовуйте `alias`, щоб створити скорочення для часто використовуємих команд. Наприклад, `alias ll='ls -latr'` створить нове скорочення(alias) `ll`. +- У Bash скриптах використовуйте `set -x` (або `set -v`) щоб дебажити вивід. Використовуйте строгий(strict) режим скрізь, де це можливо. Використовуйте `set -e` для того, щоб припиняти виконання при помилках (не нульовий вихідний код). Використовуйте `set -u` що б визначити невстановленні змінні. Використовуйте `set -o pipefail` щоб при помилках невикористовувати пайпи(вертикальна риска). Для більш складних скриптів також використовуйте `trap` на EXIT or ERR. +Корисний звичка почати використовувати настипний скрипт, який допоможе виявити і перервати на загальних помилоках і вивести повідомлення: +```bash + set -euo pipefail + trap "echo 'error: Script failed: see failed command above'" ERR +``` +- У Bash-скриптах підоболочки(subshells) - зручний спосіб групувати команди. Один із найпоширеніших прикладів - тимчасово пересунутися в іншу робочу директорію: +```bash + # Do something in current dir + (cd / some / other / dir && other-command) + # Continue in original dir +``` +- У Bash багато типів простору змінних. Перевірити, чи існує змінна - `${name:? Error message}`. Наприклад, якщо Bash-скрипту потрібен всього один аргумент, просто напишіть `input_file=${1:?usage: $0 input_file}`. Арифметична область видимості: `i=$(( (i + 1) % 5 ))`. Послідовності: `{1..10}`. Обрізка рядків: `${var%suffix}` і `${var#prefix}`. Наприклад, якщо `var=foo.pdf` тоді `echo ${var%.pdf}.txt` виведе `foo.txt`. +- Фігурні скобки, використовуючи `{`...`}` може зменшити необхідність повторно вводити той самий текст і автоматизувати. Це корисно в такому прикладі як `mv foo.{txt,pdf} some-dir` (який пересуває обидва файла), `cp somefile{,.bak}` (який розширюється у `cp somefile somefile.bak`) або `mkdir -p test-{a,b,c}/subtest-{1,2,3}` (яка розширює всі можливі комбінації і створює дерево деректорій). + + ##Обробка-файлів-та-інформації ##Дебаггінг From f03b6ca3f09e7fa5f7fa4da0f117f96b8cd1247b Mon Sep 17 00:00:00 2001 From: stepan Date: Sun, 25 Oct 2015 21:07:13 +0200 Subject: [PATCH 13/34] * --- AUTHORS.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/AUTHORS.md b/AUTHORS.md index 4522912..727b3a4 100644 --- a/AUTHORS.md +++ b/AUTHORS.md @@ -78,7 +78,7 @@ Contributors are listed in alphabetical order by GitHub login. * [Alex F. (youmee)](https://github.com/youmee) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=youmee)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ayoumee) * [Zack Piper (zackp30)](https://github.com/zackp30) — [2+](https://github.com/jlevy/the-art-of-command-line/commits?author=zackp30)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Azackp30) * [Xudong Zhang (zxdvd)](https://github.com/zxdvd) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=zxdvd)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Azxdvd) -* [Stepan Babala (stepan0904)](https://github.com/stepan0904) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=stepan0904)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Astepan0904) — _translator (ua)_ +* [Stepan Babala (stepan0904)](https://github.com/stepan0904) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=stepan0904)/[0](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Astepan0904) — _translator (ua)_ Numbers link to commits/issues. For simplicity, this file is maintained only in English. From 00584d40c71c8ebcefe6926fca38ff92c6bd8d92 Mon Sep 17 00:00:00 2001 From: stepan Date: Sun, 25 Oct 2015 21:09:18 +0200 Subject: [PATCH 14/34] for every day usage part 2 --- README-ua.md | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/README-ua.md b/README-ua.md index 5c529b8..5333f51 100644 --- a/README-ua.md +++ b/README-ua.md @@ -93,6 +93,36 @@ ``` - У Bash багато типів простору змінних. Перевірити, чи існує змінна - `${name:? Error message}`. Наприклад, якщо Bash-скрипту потрібен всього один аргумент, просто напишіть `input_file=${1:?usage: $0 input_file}`. Арифметична область видимості: `i=$(( (i + 1) % 5 ))`. Послідовності: `{1..10}`. Обрізка рядків: `${var%suffix}` і `${var#prefix}`. Наприклад, якщо `var=foo.pdf` тоді `echo ${var%.pdf}.txt` виведе `foo.txt`. - Фігурні скобки, використовуючи `{`...`}` може зменшити необхідність повторно вводити той самий текст і автоматизувати. Це корисно в такому прикладі як `mv foo.{txt,pdf} some-dir` (який пересуває обидва файла), `cp somefile{,.bak}` (який розширюється у `cp somefile somefile.bak`) або `mkdir -p test-{a,b,c}/subtest-{1,2,3}` (яка розширює всі можливі комбінації і створює дерево деректорій). +- Вивід будь-якої команди можна обробити як файл наступним чином `<(some command)`. Наприклад, порівняння локального файлу `/etc/hosts з віддаленим: +```sh + diff /etc/hosts <(ssh somehost cat /etc/hosts) +``` +- Знайте про *heredoc* -сінтаксис в Bash: `cat << EOF ...`. +- У Bash перенаправляйте стандартні потоки виводу(output) та помилок, ось так: `some-command >logfile 2>&1`. Найчастіше, для того, щоб переконається, що команда не залишить відкритим файл, прив'язавши його до відкритого терміналу, вважається хорошою практикою додавати ` Date: Sun, 25 Oct 2015 22:29:46 +0200 Subject: [PATCH 15/34] + works with files --- README-ua.md | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/README-ua.md b/README-ua.md index 5333f51..e94f0d2 100644 --- a/README-ua.md +++ b/README-ua.md @@ -127,6 +127,52 @@ ##Обробка-файлів-та-інформації +- Для того, щоб знайти файл в поточній директорії, зробіть `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`. +- Для роботи з 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` і т.д. +- Для Amazon S3 [`s3cmd`](https://github.com/s3tools/s3cmd) є зручним і [`s4cmd`](https://github.com/bloomreach/s4cmd) є швидшим. Для решти сервісів Амазону використовуйте стандартний [`aws`](https://github.com/aws/aws-cli) і удосконалений [`saws`](https://github.com/donnemartin/saws). +- Знайте про `sort` і `uniq`, включаючи опції `-u` і `-d`, дивіться приклади нижче. Ще спробуйте `comm`. +- Знайте про `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`. +- Знайте основи `awk` і `sed` для простих маніпуляцій з даними. Наприклад, щоб отримати суму всіх чисел, які знаходяться в третій колонці текстового файлу, можна використати `awk '{ x += $3 } END { print x }'`. Швидше за все, це вийде в рази 3 швидше і рази в 3 простіше, ніж робити це в Пітоні. +- Щоб замінити всі знаходження підрядка в одному або декількох файлах: +```sh + perl -pi.bak -e 's/old-string/new-string/g' my-files-*.txt +``` +- Щоб перейменувати відразу багато файлів за шаблоном, використовуйте `rename`. Для складних перейменувань може допомогти [`repren`](https://github.com/jlevy/repren): +```sh + # Recover backup files foo.bak -> foo: + rename 's/\.bak$//' *.bak + # Full rename of filenames, directories, and contents foo -> bar: + repren --full --preserve-case --from foo --to bar . +``` +- Як говорить man сторінка, `rsync` дійсно є швидким і універсальним інструментом копіювання файлів, для синхронізації між машинами, але в рівній мірі корисні на локальному рівні. Також [швидке рішення](https://web.archive.org/web/20130929001850/http://linuxnote.net/jianingy/en/linux/a-fast-way-to-remove-huge-number-of-files.html) що б видалити велику кількість файлів: +```sh + mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir +``` +- Використовуйте `shuf`, щоб перемішати або вибрати випадкові рядки з файлу. +- Знайте опції для команди `sort`. Для чисел використовуйте `-n` або `-h`, для роботи з числами (наприклад `du -h`). Знайте як працюють ключі (`-t` і `-k`). Зокрема, не забувайте, що вам потрібно писати `-k1,1` для того, щоб впорядкувати тільки перше поле; `-k1` - це означає сортування враховуючи цілий рядок. Може бути корисною (`sort -s`). Наприклад для того, щоб відсортувати найважливіше по другому полю, а другорядне по першому, можна використовувати `sort -k1,1 | sort -s -k2,2`. +- Якщо вам коли-небудь доведеться написати код символу табуляції в терміналі, наприклад, для сортування за табуляції з прапором -t, використовуйте скорочення **ctrl-v** **[Tab]** або напишіть `$'\t'`. Останнє краще, тому що його можна скопіювати/вставити. +- Стандартні інструменти для виправлення вихідного коду це `diff` і` patch`. Також зверніть увагу на `diffstat` для перегляду статистики diff і `sdiff` для крок за кроком diff. Запамятайте `diff -r` працює рекурсивно по всій директорії. Використовуйте `diff -r tree1 tree2 | diffstat` для повного зведення змін. Використовуйте `vimdiff` порівняти і редагувати файли. +- Для бінарних файлів використовуйте `hd`, `hexdump` або `xxd` для простих hex-дампом, і` bvi` або `biew` для зміни бінарників. +- Також для бінарних файлів, `strings` (plus `grep`, etc.) дозволить Вам знайти біти тексту. +- Щоб подивитися різницю в бінарниках (дельта-кодування): `xdelta3`. +- Для конвертування кодувань використовуйте `iconv`. Для більш складних завдань - `uconv`, він підтримує деякі складні фічі Юникода. Наприклад, ця команда переводить рядки з файлу в нижній регістр і прибирає наголоси (наприклад в іспанській мові) +```sh + uconv -f utf-8 -t utf-8 -x '::Any-Lower; ::Any-NFD; [:Nonspacing Mark:] >; ::Any-NFC; ' < input.txt > output.txt +``` +- Для того, щоб розбити файл на шматки, використовуйте `split` (розбиває на шматки за розміром), або `csplit` (за шаблоном або по регулярному виразу). +- Для дати і часу використовуйте `dateadd`, `datediff`, `strptime` ще можете знайти на [`dateutils`](http://www.fresse.org/dateutils). +- Використовуйте `zless`,` zmore`, `zcat`, і `zgrep` для роботи зі стиснутими файлами. + + ##Дебаггінг ##Одним-рядком From 9e242fbec57dc094f8a36510b8d6533a3483e744 Mon Sep 17 00:00:00 2001 From: stepan Date: Sun, 25 Oct 2015 23:07:53 +0200 Subject: [PATCH 16/34] + debuging --- README-ua.md | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/README-ua.md b/README-ua.md index e94f0d2..3182dbd 100644 --- a/README-ua.md +++ b/README-ua.md @@ -175,6 +175,26 @@ ##Дебаггінг +- Дле веб-дебаггінга використовуйте `curl` і `curl -I`, або альтернативу - `wget` або [`httpie`](https://github.com/jakubroztocil/httpie). +- Щоб отримати інформацію про диск/CPU/мережі використовуйте `iostat`,` netstat`, `top` (краще `htop`) і `dstat`. Використовуйте `iostat -mxz 15` для отримання основної інформації CPU. +- Для інформації про мережу використовуйте `netstat` і `ss`. +- Для більш детальної інформації використовуйте [`glances`](https://github.com/nicolargo/glances). Ця програма показує відразу кілька різних статистик в одному вікні терміналу. Корисно, коли стежите за відразу декількома системами. +- Для того, щоб стежити за пам'яттю вокористовуйте `free` і `vmstat`. Зокрема, не забувайте, що значення кешування ("cached" value) - Це пам'ять, яку тримає ядро і ці значення є частиною `free`. +- Використовуйте `mtr` для кращого трасування(простежити маршрут), щоб знаходити проблеми мережі. +- Для того, щоб дізнатися, чому диск повністю забитий, використовуйте `ncdu`, це зберігає час у порівнянні з тим же `du -sh *`. +- Для того, щоб дізнатися, який сокет або процес використовує інтернет, використовуйте `iftop` або `nethogs`. +- додаток `ab` який поставляється разом з apache, корисний для швидкої і поверхневої перевірки продуктивності веб-сервера. Для більш серйозного лоад-тестінгу використовуйте `siege`. +- Для більш серйозного дебаггінга мережі використовуйте `wireshark`,` tshark`, і `ngrep`. +- Знайте про `strace` і` ltrace`. Ці команди можуть бути корисні, якщо програма падає або висить, і ви не знаєте чому або якщо ви хочете протестувати продуктивність програми. Не забувайте про можливість дебаггінга (`-c`) і можливість причепитися до процесу по pid (` -p`). +- `ldd` для перевірки системних бібліотек. +- Знайте як причепитися до працюючого процесу через `gdb` і отримати трасування стека. +- Використовуйте `/proc`. Іноді він неймовірно корисний для налагодження запущених програм. Приклади: `/proc/cpuinfo`, `/proc/xxx/cwd`, ​​`/proc/xxx/exe`, `/proc/xxx/fd/`, `/proc/xxx/smaps` (де `xxx` id or pid процесу). +- Коли дебажите щось, що зламалося в минулому, використовуйте `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`. +- Використовуйте `dmesg`, коли щось відбувається зовсім дивне (це може бути проблеми із залізом або драйверами). + + ##Одним-рядком ##Складно-але-корисно From a96d61eec22974bdbbd647b0d9ba9484495025a8 Mon Sep 17 00:00:00 2001 From: stepan Date: Mon, 26 Oct 2015 00:57:56 +0200 Subject: [PATCH 17/34] one line --- README-ua.md | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/README-ua.md b/README-ua.md index 3182dbd..4fb2f29 100644 --- a/README-ua.md +++ b/README-ua.md @@ -197,6 +197,43 @@ ##Одним-рядком +Кілька прикладів склеювання команд: +- Це досить круто, що можна знайти множинні перетину файлів, з'єднати відсортовані файли і подивитися різницю в декількох файлів через `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 рази простіше, ніж робити це в Пітоні): +```sh + awk '{ x += $3 } END { print x }' myfile +``` +- Якщо вам потрібно подивитися розміри/дати файлів в дереві, це як рекурсивний `ls -l` але легше прочитати це `ls -lR`: +```sh + find . -type f -ls +``` +- Скажемо що у нас є якийсь текстовий файл, наприклад лог веб сервера і на якихось рядках з'являється значення, рядки з яким нам цікаві. Наприклад, `acct_id`. Давайте підрахуємо, скільки таких запитів в нашому логе: +```sh + cat access.log | egrep -o 'acct_id=[0-9]+' | cut -d= -f2 | sort | uniq -c | sort -rn +``` +- Використовуйте `xargs` (або` parallel`). Зверніть увагу, що Ви можете контролювати кількість команд на кожен рядок, а так само паралельність. Якщо Ви не впевнені, що робите правильно, почніть з `xargs echo`. Ще `-I {}` - корисна штука. Приклади: +```sh + find. -name '* .py' | xargs grep some_function + cat hosts | xargs -I {} ssh root @ {} hostname +``` +- Запустіть цю функцію, щоб отримати випадкову вибірку із цього документа: +```sh + function taocl() { + curl -s https://raw.githubusercontent.com/jlevy/the-art-of-command-line/master/README.md | + pandoc -f markdown -t html | + xmlstarlet fo --html --dropdtd | + xmlstarlet sel -t -v "(html/body/ul/li[count(p)>0])[$RANDOM mod last()+1]" | + xmlstarlet unesc | fmt -80 + } +``` + + ##Складно-але-корисно ##Macos-only From d5806c6e0ee9a222734cc33caf326c752cac69ee Mon Sep 17 00:00:00 2001 From: stepan Date: Tue, 27 Oct 2015 23:39:03 +0200 Subject: [PATCH 18/34] + usefull --- README-ua.md | 76 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 76 insertions(+) diff --git a/README-ua.md b/README-ua.md index 4fb2f29..e35269f 100644 --- a/README-ua.md +++ b/README-ua.md @@ -236,6 +236,82 @@ ##Складно-але-корисно +- `expr`: для виконання арифметичних і булевих операцій, а також регулярних виразів +- `m4`: простий макро-процесор +- `yes`: безкінечно виводить рядок +- `cal`: хороший календар +- `env`: виводить змінні середовища (корисно в Bash-скриптах) +- `printenv`: показати змінні оточення (корисно в скриптах або дебаггінгу) +- `look`: знайде англійські слова (або рядки у файлі) які починаються із рядках +- `cut`, `paste` і` join`: маніпуляції з даними +- `fmt`: форматування параграфів у тексті +- `pr`: відформатовує текст в сторінки/колонки +- `fold`: (обернути) обмежити довжину рядків у файлі +- `column`: форматувати текст в колонки або таблиці +- `expand` і` unexpand`: конвертація між табами і пробілами +- `nl`: додає номери до рядків +- `seq`: вивести послідовність чисел +- `bc`: калькулятор +- `factor`: піднести число в степінь +- [`gpg`](https://gnupg.org/): зашифрувати і підписати файли +- `toe`: таблиця терміналів terminfo з описом +- `nc`: дебаггінг мережі і передачі даних +- `socat`: перемикач сокетів і перенаправлення tcp-портів (схоже на `netcat`) +- [`slurm`](https://github.com/mattthias/slurm): візуалізація трафіку мережі +- `dd`: перенесення інформації між файлами фбо пристроями +- `file`: визначає тип файлу +- `tree`: показує директорії і піддиректорії у вигляді дерева, як `ls`, але рекурсивно +- `stat`: інформація про файл +- `time`: execute and time a commands +- `lockfile`: створює позначку в файлі який може бути видаленим тільки через команду `rm -f` +- `logrotate`: змінити, зжати і відправити лаги. +- `watch`: запустити команду повторно, показуючи результати і/або виділення змін +- `tac`: вивести файли посимвольно навпаки ("тівирп") +- `shuf`: випадкова вибірка рядків з файлу +- `comm`: порядково порівняти відсортовані файли +- `pv`: моніторинг прогресу проходження інформації через пайп +- `hd`, `hexdump`, `xxd`, `biew` і `bvi`: дамп і редагування бінарних файлів +- `strings`: витягнути текст із бінарних файлів +- `tr`: маніпуляція з char (символьним типом) +- `iconv` або `uconv`: конвертація кодувань +- `split` і `csplit`: розбити файли +- `sponge`: прочитати весь інпут перед тим, як його записати. Корисно, коли читаєш з того ж файлу, куди записуєш. Наприклад, ось так: `grep -v something some-file | sponge some-file` +- `units`: конвертер. Метри в кілометри, версти в п'яді (дивіться `/usr/share/units/definitions.units`) +- `apg`: генерація паролів +- `7z`: архіватор з високим ступенем стиснення +- `ldd`: показує залежності програми від системних бібліотек +- `nm`: symbols from object files +- `ab`: бенчмаркінг веб-серверів +- `strace`: дебагінг системних викликів +- `mtr`: трасування для дебаггінга мережі +- `cssh`: графічний конкурент Shel +- `rsync`: синхронізація файлів і папок через SSH або на локальній файловій системі +- `wireshark` і `tshark`: перехоплення пакетів і дебагінг мережі +- `ngrep`: grep для шару мережі (network layer) +- `host` і `dig`: пошук DNS +- `lsof`: процесинг дескрипторів і інформація по сокетах +- `dstat`: корисна статистика ОС +- [`glances`](https://github.com/nicolargo/glances): високорівнева статистика з багатьма підсистемам +- `iostat`: статистика використання жорсткого диска +- `mpstat`: статистика використання CPU +- `vmstat`: статистика використання оперативної пам'яті +- `htop`: вдосконалена версія `top` +- `last`: історія входів у систему +- `w`: хто є залогіненим +- `id`: інформація про користувача/групу +- `sar`: historic system stats +- `iftop` або` nethogs`: використання мережі конкретним сокетом або процесом +- `ss`: статистика сокетів +- `dmesg`: помилки завантаження і помилки системи +- `sysctl`: перегляду і налаштування параметрів ядра Linux коли воно запущене +- `hdparm`: маніпуляція/налаштування SATA/ATA диску +- `lsb_release`: інформація про дистрибутив Linux +- `lsblk`: cписок блокових пристроїв комп'ютера: дерево ваших дисків і логічних дисків +- `lshw`, `lscpu`, `lspci`, `lsusb`, `dmidecode`: інформація про апаратне забезпечення, включає CPU, BIOS, RAID, графічну карту і т.д. +- `lsmod` і `modinfo`: показує список і детальну інформацію модулів ядра. +- `fortune`, `ddate`, and `sl`: um, well, it depends on whether you consider steam locomotives and Zippy quotations "useful" + + ##Macos-only ##Інші-джерела From e6d6c730ab691a08cefd7098e71f2cc36ff23634 Mon Sep 17 00:00:00 2001 From: stepan Date: Tue, 27 Oct 2015 23:39:13 +0200 Subject: [PATCH 19/34] * --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index e7407e1..86c7c38 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -[ Languages: [English](README.md), [Español](README-es.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [中文](README-zh.md)] +[ Languages: [English](README.md), [Español](README-es.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [中文](README-zh.md)], [Українська](README-ua.md)] # The Art of Command Line From a15102dfd1f5f3671cfcc3f18f39f4287f0a0bd9 Mon Sep 17 00:00:00 2001 From: stepan Date: Tue, 27 Oct 2015 23:39:33 +0200 Subject: [PATCH 20/34] macos only --- README-ua.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/README-ua.md b/README-ua.md index e35269f..ae51c6b 100644 --- a/README-ua.md +++ b/README-ua.md @@ -314,6 +314,15 @@ ##Macos-only +Деякі речі, які підходять *тільки* для Мака. + +- Система управління пакетами - `brew` (Homebrew) і `port` (MacPorts) можуть бути використані для того, щоб встановити більшість програм, згаданих у цьому документі. +- Копіюйте вивід будь-якої консольної команди до графічної за допомогою `pbcopy` і вставляйте вивід за допомогою `pbpaste`. +- Щоб відкрити файл або десктопну програму, використовуйте `open` або `open -a /Applications/Whatever.app`. +- Spotlight: Шукає файли в консолі, через `mdfind`, і дивиться метадані (наприклад EXIF ​​інформацію із фотографії) із `mdls`. +- Не забувайте, що MacOS створений на основі BSD Unix і багато команд (наприклад `ps`, `ls`, `tail`, `awk`, `sed`) мають невеликі відмінності від лінуксових. Це обумовлено впливом `UNIX System V` і `GNU Tools`. Різницю можна помітити, побачивши заголовок "BSD General Commands Manual." Інколи на MacOS можна поставити GNU-версії програм, наприклад `gawk` і `gsed`. Коли пишете кросплатформені Bash-скрипти, намагайтеся уникати використовувати команди, які можуть відрізнятися (наприклад, краще використовуйте Python або `perl`), або ретельно все перевіряйте. + + ##Інші-джерела ##Декламація From 52bd821a2f161b01a05f1d5287f83435dcff235b Mon Sep 17 00:00:00 2001 From: stepan Date: Tue, 27 Oct 2015 23:39:55 +0200 Subject: [PATCH 21/34] + others source --- README-ua.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/README-ua.md b/README-ua.md index ae51c6b..eb5a489 100644 --- a/README-ua.md +++ b/README-ua.md @@ -325,6 +325,12 @@ ##Інші-джерела +- [awesome-shell](https://github.com/alebcay/awesome-shell): Розширює Shell. +- [Strict mode](http://redsymbol.net/articles/unofficial-bash-strict-mode/) щоб краще писати Shell скрипти. +- [shellcheck](https://github.com/koalaman/shellcheck): A shell script static analysis tool. Essentially, lint for bash/sh/zsh. +- [Filenames and Pathnames in Shell](http://www.dwheeler.com/essays/filenames-in-shell.html): The sadly complex minutiae on how to handle filenames correctly in shell scripts. + + ##Декламація From 67f92e80f68069f6db57d28849fa29e0780a21ac Mon Sep 17 00:00:00 2001 From: stepan Date: Tue, 27 Oct 2015 23:40:21 +0200 Subject: [PATCH 22/34] + declamation --- README-ua.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README-ua.md b/README-ua.md index eb5a489..11b91fb 100644 --- a/README-ua.md +++ b/README-ua.md @@ -333,4 +333,7 @@ ##Декламація +За невеликим винятком, весь код написаний так, щоб інші його змогли прочитати. +Той факт, що щось може бути написано на Bash, зовсім не означає, що воно має бути на ньому написано. ;) + From 7c58e983383ab089687c37b75dee516477743d90 Mon Sep 17 00:00:00 2001 From: stepan Date: Tue, 27 Oct 2015 23:41:18 +0200 Subject: [PATCH 23/34] + license --- README-ua.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/README-ua.md b/README-ua.md index 11b91fb..c20d476 100644 --- a/README-ua.md +++ b/README-ua.md @@ -337,3 +337,8 @@ Той факт, що щось може бути написано на Bash, зовсім не означає, що воно має бути на ньому написано. ;) +## Лицензія + +[![Creative Commons License](https://i.creativecommons.org/l/by-sa/4.0/88x31.png)](http://creativecommons.org/licenses/by-sa/4.0/) + +Ця работа і переклад на Українську мову розповсюджується за ліцензією [Creative Commons Attribution-ShareAlike 4.0 International License](http://creativecommons.org/licenses/by-sa/4.0/). From eac3b7bc266dc94d7b1397744c5bb3ed070a693f Mon Sep 17 00:00:00 2001 From: rahul kavale Date: Thu, 29 Oct 2015 23:57:53 +0530 Subject: [PATCH 24/34] Added timeout command --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index e7407e1..4576a0d 100644 --- a/README.md +++ b/README.md @@ -386,6 +386,8 @@ A few examples of piecing together commands: - `time`: execute and time a command +- `timeout`: execute a command for specified amount of time and stop the process when the specified amount of time completes. + - `lockfile`: create semaphore file that can only be removed by `rm -f` - `logrotate`: rotate, compress and mail logs. From 96ecd31c47ed438ce9f95b28a4f4417bd0f8b818 Mon Sep 17 00:00:00 2001 From: Joshua Levy Date: Sun, 1 Nov 2015 19:26:29 -0800 Subject: [PATCH 25/34] Clarify rename command. Fixes #296. --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index e7407e1..656f628 100644 --- a/README.md +++ b/README.md @@ -207,12 +207,12 @@ Notes: perl -pi.bak -e 's/old-string/new-string/g' my-files-*.txt ``` -- To rename many files at once according to a pattern, use `rename`. For complex renames, [`repren`](https://github.com/jlevy/repren) may help. +- To rename many files and/or search and search and replace within files, try [`repren`](https://github.com/jlevy/repren). The `rename` command also does renames on some Linux distributions (but it is less consistently available). ```sh - # Recover backup files foo.bak -> foo: - rename 's/\.bak$//' *.bak # Full rename of filenames, directories, and contents foo -> bar: repren --full --preserve-case --from foo --to bar . + # Recover backup files foo.bak -> foo: + rename 's/\.bak$//' *.bak ``` - As the man page says, `rsync` really is a fast and extraordinarily versatile file copying tool. It's known for synchronizing between machines but is equally useful locally. It also is among the [fastest ways](https://web.archive.org/web/20130929001850/http://linuxnote.net/jianingy/en/linux/a-fast-way-to-remove-huge-number-of-files.html) to delete large numbers of files: From 122a25db8c164ba6df7213cc442a2a1f0899b0ee Mon Sep 17 00:00:00 2001 From: Joshua Levy Date: Mon, 2 Nov 2015 10:20:25 -0800 Subject: [PATCH 26/34] More fixups on repren and rename. Re #296. --- README.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 218ab42..d5f74d3 100644 --- a/README.md +++ b/README.md @@ -207,11 +207,13 @@ Notes: perl -pi.bak -e 's/old-string/new-string/g' my-files-*.txt ``` -- To rename many files and/or search and search and replace within files, try [`repren`](https://github.com/jlevy/repren). The `rename` command also does renames on some Linux distributions (but it is less consistently available). +- To rename multiple files and/or search and replace within files, try [`repren`](https://github.com/jlevy/repren). (In some cases the `rename` command also allows multiple renames, but be careful as its functionality is not the same on all Linux distributions.) ```sh # Full rename of filenames, directories, and contents foo -> bar: repren --full --preserve-case --from foo --to bar . - # Recover backup files foo.bak -> foo: + # Recover backup files whatever.bak -> whatever: + repren --renames --from '(.*)\.bak' --to '\1' *.bak + # Same as above, using rename, if available: rename 's/\.bak$//' *.bak ``` From 24510aab57a49742c55fd17576c3355c33dd1b4c Mon Sep 17 00:00:00 2001 From: stepan Date: Tue, 3 Nov 2015 00:06:54 +0200 Subject: [PATCH 27/34] - typo --- README-ua.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README-ua.md b/README-ua.md index c20d476..b817b12 100644 --- a/README-ua.md +++ b/README-ua.md @@ -264,7 +264,7 @@ - `stat`: інформація про файл - `time`: execute and time a commands - `lockfile`: створює позначку в файлі який може бути видаленим тільки через команду `rm -f` -- `logrotate`: змінити, зжати і відправити лаги. +- `logrotate`: змінити, зжати і відправити логи. - `watch`: запустити команду повторно, показуючи результати і/або виділення змін - `tac`: вивести файли посимвольно навпаки ("тівирп") - `shuf`: випадкова вибірка рядків з файлу From fdf6fed6b05f3f307cea29c4ef754f5485ae68a3 Mon Sep 17 00:00:00 2001 From: stepan Date: Tue, 3 Nov 2015 00:07:03 +0200 Subject: [PATCH 28/34] + timeout --- README-ua.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README-ua.md b/README-ua.md index b817b12..fa75fb7 100644 --- a/README-ua.md +++ b/README-ua.md @@ -263,6 +263,7 @@ - `tree`: показує директорії і піддиректорії у вигляді дерева, як `ls`, але рекурсивно - `stat`: інформація про файл - `time`: execute and time a commands +- `timeout`: зупиняє коменду після того як завершиться вказаний чав в аргументі - `lockfile`: створює позначку в файлі який може бути видаленим тільки через команду `rm -f` - `logrotate`: змінити, зжати і відправити логи. - `watch`: запустити команду повторно, показуючи результати і/або виділення змін From 434dace89b0a9f934c578dacfc97d7a60269aa00 Mon Sep 17 00:00:00 2001 From: stepan Date: Tue, 3 Nov 2015 00:10:17 +0200 Subject: [PATCH 29/34] rename --- README-ua.md => README-uk.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename README-ua.md => README-uk.md (100%) diff --git a/README-ua.md b/README-uk.md similarity index 100% rename from README-ua.md rename to README-uk.md From 2b8e74cc24c3308affb22e5539bb198dfafc63ad Mon Sep 17 00:00:00 2001 From: stepan Date: Tue, 3 Nov 2015 00:15:43 +0200 Subject: [PATCH 30/34] sort --- README-es.md | 2 +- README-ja.md | 2 +- README-ko.md | 2 +- README-pt.md | 2 +- README-ru.md | 2 +- README-sl.md | 2 +- README-uk.md | 3 +-- README-zh.md | 2 +- README.md | 2 +- 9 files changed, 9 insertions(+), 10 deletions(-) diff --git a/README-es.md b/README-es.md index 00ce770..3c4fa6c 100644 --- a/README-es.md +++ b/README-es.md @@ -1,5 +1,5 @@ [ Languages: -[English](README.md), [Español](README-es.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [中文](README-zh.md), [Українська](README-ua.md) +[English](README.md), [Español](README-es.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [Українська](README-uk.md), [中文](README-zh.md) ] diff --git a/README-ja.md b/README-ja.md index c9fd8ae..6c348b9 100644 --- a/README-ja.md +++ b/README-ja.md @@ -1,5 +1,5 @@ [ Languages: -[English](README.md), [Español](README-es.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [中文](README-zh.md), [Українська](README-ua.md) +[English](README.md), [Español](README-es.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [Українська](README-uk.md), [中文](README-zh.md) ] 原文のコミット [bb0c38c0899339e836c37eead4a9534b06c56662](https://github.com/jlevy/the-art-of-command-line/blob/bb0c38c0899339e836c37eead4a9534b06c56662/README.md) diff --git a/README-ko.md b/README-ko.md index 5f78304..1b1e820 100644 --- a/README-ko.md +++ b/README-ko.md @@ -1,5 +1,5 @@ [ Languages: -[English](README.md), [Español](README-es.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [中文](README-zh.md), [Українська](README-ua.md) +[English](README.md), [Español](README-es.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [Українська](README-uk.md), [中文](README-zh.md) ] diff --git a/README-pt.md b/README-pt.md index 659586a..1372a51 100644 --- a/README-pt.md +++ b/README-pt.md @@ -1,5 +1,5 @@ [ Languages: -[English](README.md), [Español](README-es.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [中文](README-zh.md), [Українська](README-ua.md) +[English](README.md), [Español](README-es.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [Українська](README-uk.md), [中文](README-zh.md) ] diff --git a/README-ru.md b/README-ru.md index 335f7c4..1743d93 100644 --- a/README-ru.md +++ b/README-ru.md @@ -1,5 +1,5 @@ [ Languages: -[English](README.md), [Español](README-es.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [中文](README-zh.md), [Українська](README-ua.md) +[English](README.md), [Español](README-es.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [Українська](README-uk.md), [中文](README-zh.md) ] diff --git a/README-sl.md b/README-sl.md index 562c239..dc2d310 100644 --- a/README-sl.md +++ b/README-sl.md @@ -1,5 +1,5 @@ [ Languages: -[English](README.md), [Español](README-es.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [中文](README-zh.md), [Українська](README-ua.md) +[English](README.md), [Español](README-es.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [Українська](README-uk.md), [中文](README-zh.md) ] diff --git a/README-uk.md b/README-uk.md index fa75fb7..4d350a7 100644 --- a/README-uk.md +++ b/README-uk.md @@ -1,6 +1,5 @@ [ Languages: -[English](README.md), [Español](README-es.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [中文](README-zh.md), [Українська](README-ua.md) -] +[English](README.md), [Español](README-es.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [Українська](README-uk.md), [中文](README-zh.md)] # Мистецтво командного рядка diff --git a/README-zh.md b/README-zh.md index 2d04cf1..6be9d9a 100644 --- a/README-zh.md +++ b/README-zh.md @@ -1,5 +1,5 @@ [ Languages: -[English](README.md), [Español](README-es.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [中文](README-zh.md), [Українська](README-ua.md) +[English](README.md), [Español](README-es.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [Українська](README-uk.md), [中文](README-zh.md) ] diff --git a/README.md b/README.md index 86c7c38..59b0a58 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -[ Languages: [English](README.md), [Español](README-es.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [中文](README-zh.md)], [Українська](README-ua.md)] +[ Languages: [English](README.md), [Español](README-es.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [Українська](README-uk.md), [中文](README-zh.md)]] # The Art of Command Line From efdc807dc313bf674ce9549b843cfbc9909e8960 Mon Sep 17 00:00:00 2001 From: Joshua Levy Date: Mon, 2 Nov 2015 18:25:20 -0800 Subject: [PATCH 31/34] Update author roles and stats. Add uk maintainer. Run "ghizmo assemble-authors". --- AUTHORS.md | 16 +++++++++------- admin/authors-info.yml | 2 +- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/AUTHORS.md b/AUTHORS.md index 727b3a4..3d4ce01 100644 --- a/AUTHORS.md +++ b/AUTHORS.md @@ -14,7 +14,7 @@ Contributors are listed in alphabetical order by GitHub login. * [Bryce J. (bj1)](https://github.com/bj1) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=bj1)/[0+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Abj1) * [Arturo Fernandez (bsnux)](https://github.com/bsnux) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=bsnux)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Absnux) * [Alex Cabrera (cabreraalex)](https://github.com/cabreraalex) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=cabreraalex)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Acabreraalex) -* [Carlos Mantilla (ceoaliongroo)](https://github.com/ceoaliongroo) — [17+](https://github.com/jlevy/the-art-of-command-line/commits?author=ceoaliongroo)/[11+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aceoaliongroo) — _translator and maintainer (es)_ +* [Carlos Mantilla (ceoaliongroo)](https://github.com/ceoaliongroo) — [21+](https://github.com/jlevy/the-art-of-command-line/commits?author=ceoaliongroo)/[12+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aceoaliongroo) — _translator and maintainer (es)_ * [Chris Kuehl (chriskuehl)](https://github.com/chriskuehl) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=chriskuehl)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Achriskuehl) * [Corey "See More" Richardson (cmr)](https://github.com/cmr) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=cmr)/[3+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Acmr) * [Colas BROUX (ColasBroux)](https://github.com/ColasBroux) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=ColasBroux)/[2+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3AColasBroux) @@ -24,8 +24,9 @@ Contributors are listed in alphabetical order by GitHub login. * [Dmytro Danylevskyi (danylevskyi)](https://github.com/danylevskyi) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=danylevskyi)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Adanylevskyi) * [Dave Loyall (daveloyall)](https://github.com/daveloyall) — [2+](https://github.com/jlevy/the-art-of-command-line/commits?author=daveloyall)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Adaveloyall) * [Deborah Digges (Deborah-Digges)](https://github.com/Deborah-Digges) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=Deborah-Digges)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3ADeborah-Digges) -* [James Luck (delucks)](https://github.com/delucks) — [2+](https://github.com/jlevy/the-art-of-command-line/commits?author=delucks)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Adelucks) +* [Jamie Luck (delucks)](https://github.com/delucks) — [2+](https://github.com/jlevy/the-art-of-command-line/commits?author=delucks)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Adelucks) * [Dima Paloskin (dimapaloskin)](https://github.com/dimapaloskin) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=dimapaloskin)/[0+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Adimapaloskin) +* [Michael Diamond (dimo414)](https://github.com/dimo414) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=dimo414)/[4+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Adimo414) * [doublemarket (doublemarket)](https://github.com/doublemarket) — [2+](https://github.com/jlevy/the-art-of-command-line/commits?author=doublemarket)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Adoublemarket) — _translator and maintainer (ja)_ * [Vincent Wong (EaterOA)](https://github.com/EaterOA) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=EaterOA)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3AEaterOA) * [Fazle Arefin (fazlearefin)](https://github.com/fazlearefin) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=fazlearefin)/[2+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Afazlearefin) @@ -35,9 +36,9 @@ Contributors are listed in alphabetical order by GitHub login. * [Beau Hastings (hastinbe)](https://github.com/hastinbe) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=hastinbe)/[4+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ahastinbe) * [Sung Kim (hunkim)](https://github.com/hunkim) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=hunkim)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ahunkim) — _translator (ko)_ * [Hunter-Github](https://github.com/Hunter-Github) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=Hunter-Github)/[3+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3AHunter-Github) -* [Ivgeni Segal (isegal)](https://github.com/isegal) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=isegal)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aisegal) +* [Ivgeni "Iv" Segal (isegal)](https://github.com/isegal) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=isegal)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aisegal) * [Alan Brogan (jalanb)](https://github.com/jalanb) — [2+](https://github.com/jlevy/the-art-of-command-line/commits?author=jalanb)/[3+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ajalanb) -* [Joshua Levy (jlevy)](https://github.com/jlevy) — [102+](https://github.com/jlevy/the-art-of-command-line/commits?author=jlevy)/[19+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ajlevy) — _original author and maintainer_ +* [Joshua Levy (jlevy)](https://github.com/jlevy) — [109+](https://github.com/jlevy/the-art-of-command-line/commits?author=jlevy)/[19+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ajlevy) — _original author and maintainer_ * [Jesse Sightler (jsight)](https://github.com/jsight) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=jsight)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ajsight) * [Konstantin Mikhaylov (jtraub)](https://github.com/jtraub) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=jtraub)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ajtraub) * [Wael M. Nasreddine (kalbasit)](https://github.com/kalbasit) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=kalbasit)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Akalbasit) @@ -55,8 +56,9 @@ Contributors are listed in alphabetical order by GitHub login. * [Oleg Berman (olegberman)](https://github.com/olegberman) — [15+](https://github.com/jlevy/the-art-of-command-line/commits?author=olegberman)/[2+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aolegberman) — _translator and maintainer (ru)_ * [osmero](https://github.com/osmero) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=osmero)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aosmero) — _translator (ru)_ * [Serg Petrov (p12se)](https://github.com/p12se) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=p12se)/[0+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ap12se) -* [Peter Kokot (peterkokot)](https://github.com/peterkokot) — [25+](https://github.com/jlevy/the-art-of-command-line/commits?author=peterkokot)/[18+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Apeterkokot) — _translator and maintainer (sl)_ -* [曾楚杰 (Psycho7)](https://github.com/Psycho7) — [16+](https://github.com/jlevy/the-art-of-command-line/commits?author=Psycho7)/[7+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3APsycho7) — _translator and maintainer (zh)_ +* [Peter Kokot (peterkokot)](https://github.com/peterkokot) — [29+](https://github.com/jlevy/the-art-of-command-line/commits?author=peterkokot)/[20+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Apeterkokot) — _translator and maintainer (sl)_ +* [曾楚杰 (Psycho7)](https://github.com/Psycho7) — [19+](https://github.com/jlevy/the-art-of-command-line/commits?author=Psycho7)/[8+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3APsycho7) — _translator and maintainer (zh)_ +* [Rahul Kavale (rahulkavale)](https://github.com/rahulkavale) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=rahulkavale)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Arahulkavale) * [Raju Devidas Vindane (rajuvindane)](https://github.com/rajuvindane) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=rajuvindane)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Arajuvindane) * [Rasmus Wriedt Larsen (RasmusWL)](https://github.com/RasmusWL) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=RasmusWL)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3ARasmusWL) * [Saksham Sharma (saksham0808)](https://github.com/saksham0808) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=saksham0808)/[3+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Asaksham0808) @@ -65,6 +67,7 @@ Contributors are listed in alphabetical order by GitHub login. * [Snowcat8436 (Snowcat8436)](https://github.com/Snowcat8436) — [4+](https://github.com/jlevy/the-art-of-command-line/commits?author=Snowcat8436)/[0+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3ASnowcat8436) — _translator (ko)_ * [Soham Chakraborty (SohamChakraborty)](https://github.com/SohamChakraborty) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=SohamChakraborty)/[3+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3ASohamChakraborty) * [spmbt (spmbt)](https://github.com/spmbt) — [13+](https://github.com/jlevy/the-art-of-command-line/commits?author=spmbt)/[0+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Aspmbt) — _translator (ru)_ +* [Stepan Babala (stepan0904)](https://github.com/stepan0904) — [27+](https://github.com/jlevy/the-art-of-command-line/commits?author=stepan0904)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Astepan0904) — _translator and maintaner (uk)_ * [Steven Liu (stevenlordiam)](https://github.com/stevenlordiam) — [2+](https://github.com/jlevy/the-art-of-command-line/commits?author=stevenlordiam)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Astevenlordiam) — _translator (zh)_ * [Fabien Dubosson (StreakyCobra)](https://github.com/StreakyCobra) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=StreakyCobra)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3AStreakyCobra) * [taxusyew](https://github.com/taxusyew) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=taxusyew)/[2+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ataxusyew) @@ -78,7 +81,6 @@ Contributors are listed in alphabetical order by GitHub login. * [Alex F. (youmee)](https://github.com/youmee) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=youmee)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Ayoumee) * [Zack Piper (zackp30)](https://github.com/zackp30) — [2+](https://github.com/jlevy/the-art-of-command-line/commits?author=zackp30)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Azackp30) * [Xudong Zhang (zxdvd)](https://github.com/zxdvd) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=zxdvd)/[1+](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Azxdvd) -* [Stepan Babala (stepan0904)](https://github.com/stepan0904) — [1+](https://github.com/jlevy/the-art-of-command-line/commits?author=stepan0904)/[0](https://github.com/jlevy/the-art-of-command-line/issues?q=author%3Astepan0904) — _translator (ua)_ Numbers link to commits/issues. For simplicity, this file is maintained only in English. diff --git a/admin/authors-info.yml b/admin/authors-info.yml index 30438d6..023f5af 100644 --- a/admin/authors-info.yml +++ b/admin/authors-info.yml @@ -36,4 +36,4 @@ roles: xuchunyang: translator (zh) stevenlordiam: translator (zh) Armour: translator (zh) - stepan0904: translator (ua) + stepan0904: translator and maintaner (uk) From cdf9ee30cbb6d8e0fa718ca89323b82b18dc93d5 Mon Sep 17 00:00:00 2001 From: Joshua Levy Date: Mon, 2 Nov 2015 18:27:06 -0800 Subject: [PATCH 32/34] Typo. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 666e78b..3933df4 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -[ Languages: [English](README.md), [Español](README-es.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [Українська](README-uk.md), [中文](README-zh.md)]] +[ Languages: [English](README.md), [Español](README-es.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [Українська](README-uk.md), [中文](README-zh.md) ] # The Art of Command Line From f57d4237462d97b8a54470cafbcdf04afab97f88 Mon Sep 17 00:00:00 2001 From: frankenbot Date: Mon, 2 Nov 2015 21:13:11 -0800 Subject: [PATCH 33/34] Update redirects --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 3933df4..f160541 100644 --- a/README.md +++ b/README.md @@ -243,14 +243,14 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - To split files into pieces, see `split` (to split by size) and `csplit` (to split by a pattern). -- To manipulate date and time expressions, use `dateadd`, `datediff`, `strptime` etc. from [`dateutils`](http://www.fresse.org/dateutils). +- To manipulate date and time expressions, use `dateadd`, `datediff`, `strptime` etc. from [`dateutils`](http://www.fresse.org/dateutils/). - Use `zless`, `zmore`, `zcat`, and `zgrep` to operate on compressed files. ## System debugging -- For web debugging, `curl` and `curl -I` are handy, or their `wget` equivalents, or the more modern [`httpie`](https://github.com/jakubroztocil/httpie). +- For web debugging, `curl` and `curl -I` are handy, or their `wget` equivalents, or the more modern [`httpie`](https://github.com/jkbrzt/httpie). - To know current cpu/disk status, the classic tools are `top` (or the better `htop`), `iostat`, and `iotop`. Use `iostat -mxz 15` for basic CPU and detailed per-partition disk stats and performance insight. @@ -282,7 +282,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - When debugging why something went wrong in the past, `sar` can be very helpful. It shows historic statistics on CPU, memory, network, etc. -- For deeper systems and performance analyses, look at `stap` ([SystemTap](https://sourceware.org/systemtap/wiki)), [`perf`](http://en.wikipedia.org/wiki/Perf_(Linux)), and [`sysdig`](https://github.com/draios/sysdig). +- For deeper systems and performance analyses, look at `stap` ([SystemTap](https://sourceware.org/systemtap/wiki)), [`perf`](https://en.wikipedia.org/wiki/Perf_(Linux)), and [`sysdig`](https://github.com/draios/sysdig). - Check what OS you're on with `uname` or `uname -a` (general Unix/kernel info) or `lsb_release -a` (Linux distro info). From f2fc6b588114ada9c5b270a6d1f33b7a53772091 Mon Sep 17 00:00:00 2001 From: Peter Kokot Date: Fri, 6 Nov 2015 08:41:34 +0100 Subject: [PATCH 34/34] sl: sync translation --- README-sl.md | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/README-sl.md b/README-sl.md index dc2d310..e502e67 100644 --- a/README-sl.md +++ b/README-sl.md @@ -1,6 +1,4 @@ -[ Languages: -[English](README.md), [Español](README-es.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [Українська](README-uk.md), [中文](README-zh.md) -] +[ Languages: [English](README.md), [Español](README-es.md), [日本語](README-ja.md), [한국어](README-ko.md), [Português](README-pt.md), [Русский](README-ru.md), [Slovenščina](README-sl.md), [Українська](README-uk.md), [中文](README-zh.md) ] # Umetnost ukazne vrstice @@ -209,12 +207,14 @@ Opombe: perl -pi.bak -e 's/old-string/new-string/g' my-files-*.txt ``` -- Da preimenujete mnoge datoteke naenkrat glede na vzorec, uporabite `rename`. Za kompleksna preimenovanja lahko pomaga [`repren`](https://github.com/jlevy/repren). +- Da preimenujete več datotek in/ali poiščete in poiščete in zamenjate znotraj datotek, poskusite [`repren`](https://github.com/jlevy/repren). (V nekaterih primerih ukaz `rename` tudi omogoča preimenovanje, vendar bodite pozorni, saj funkcionalnost ni enaka na vseh distribucijah Linux). ```sh - # Recover backup files foo.bak -> foo: - rename 's/\.bak$//' *.bak # Full rename of filenames, directories, and contents foo -> bar: repren --full --preserve-case --from foo --to bar . + # Recover backup files whatever.bak -> whatever: + repren --renames --from '(.*)\.bak' --to '\1' *.bak + # Same as above, using rename, if available: + rename 's/\.bak$//' *.bak ``` - Kot pravi stran vodiča, je `rsync` resnično hiter in izredno vsestransko orodje kopiranja datotek. Znano je po sinhronizaciji med napravami vendar je enakovredno uporaben tudi lokalno. Je tudi eden izmed [najhitrejših načinov](https://web.archive.org/web/20130929001850/http://linuxnote.net/jianingy/en/linux/a-fast-way-to-remove-huge-number-of-files.html) za izbris velikega števila datotek: @@ -243,14 +243,14 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - Da razcepite datoteke na dele, glejte `split` (da razcepite po velikosti) in `csplit` (da razcepite po vzorcu). -- Za manipuliranje izrazov datuma in časa, uporabite `dateadd`, `datediff`, `strptime` itd. iz [`dateutils`](http://www.fresse.org/dateutils). +- Za manipuliranje izrazov datuma in časa, uporabite `dateadd`, `datediff`, `strptime` itd. iz [`dateutils`](http://www.fresse.org/dateutils/). - Uporabite `zless`, `zmore`, `zcat` in `zgrep` za operiranje na kompresiranih datotekah. ## Sistemsko razhroščevanje -- Za spletno razhroščevanje, sta priročna `curl` in `curl -I` ali pa njun ekvivalent `wget`, ali bolj moderen [`httpie`](https://github.com/jakubroztocil/httpie). +- Za spletno razhroščevanje, sta priročna `curl` in `curl -I` ali pa njun ekvivalent `wget`, ali bolj moderen [`httpie`](https://github.com/jkbrzt/httpie). - Da izveste trenutni status diska/procesorja/omrežja, so na voljo klasična orodja `top`, (ali bolje `htop`), `iostat` in `iotop` . Uporabite `iostat -mxz 15` za osnovno statistiko CPU in podrobno na particijo statistiko diska in vpogled v uspešnost. @@ -282,7 +282,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - Ko se razhroščuje, zakaj je šlo nekaj narobe v preteklosti, je lahko zelo uporaben `sar`. Prikazuje statistiko zgodovine na procesorju, spominu, omrežju itd. -- Za globlje analize sistema in uspešnosti, poglejte `stap` ([SystemTap](https://sourceware.org/systemtap/wiki)), [`perf`](http://en.wikipedia.org/wiki/Perf_(Linux)) in [`sysdig`](https://github.com/draios/sysdig). +- Za globlje analize sistema in uspešnosti, poglejte `stap` ([SystemTap](https://sourceware.org/systemtap/wiki)), [`perf`](https://en.wikipedia.org/wiki/Perf_(Linux)) in [`sysdig`](https://github.com/draios/sysdig). - Preverite na katerem operacijskem sistemu ste z `uname` ali `uname -a` (splošne informacije Unix-a/jedra) ali `lsb_release -a` (informacije distribucuje Linux). @@ -388,6 +388,8 @@ Nekaj primerov sestavljanja ukazov skupaj: - `time`: izvrši in da ukaz v čas +- `timeout`: izvršite ukaz za določen čas in ustavite proces, ko se določen čas konča. + - `lockfile`: ustvari semaforno datoteko, ki je lahko odstranjena samo z `rm -f` - `logrotate`: rotiranje, kompresiranje in pošiljanje dnevnikov po e-pošti.