diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..723ef36 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.idea \ No newline at end of file diff --git a/README-ru.md b/README-ru.md index 2fef7b7..c67378d 100644 --- a/README-ru.md +++ b/README-ru.md @@ -11,7 +11,7 @@ - [Системный дебаггинг](#Системный-дебаггинг) - [В одну строчку](#В-одну-строчку) - [Сложно, но полезно](#Сложно-но-полезно) -- [MacOS only](#Macos-only) +- [MacOS X only](#Macos-x-only) - [Больше информации по теме](#Больше-информации-по-теме) - [Дисклеймер](#Дисклеймер) @@ -22,16 +22,15 @@ Многое из того, что тут написано, [изначально](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). -Начав идею там — похоже, что стоит развить её на Gihub, где обитают люди, талантливее меня, и могут предлагать улучшения данной подборки. Если вы заметили ошибки (во всех вариантах перевода), пожалуйста, оставьте тикет или киньте пулл-реквест (заранее изучив описание и посмотрев на уже созданнные тикеты и пулл-реквесты). +на [Quora](http://www.quora.com/What-are-some-time-saving-tips-that-every-Linux-user-should-know), и увидев там заинтересованность, подумалось, что стоит подключить и Github, где обитают люди, талантливее меня, и могут предлагать улучшения данной подборки. Если вы заметили ошибки (во всех вариантах перевода), пожалуйста, оставьте тикет или киньте пулл-реквест (заранее изучив описание и посмотрев на уже созданнные тикеты и пулл-реквесты). ## Описание Основное: - Данная публикация предназначена как для новичков, так и для опытных людей. Цели: *объёмность* (собрать все важные аспекты использования командной строки), *практичность* (давать конкретные примеры для самых частых юзкейсов) и *краткость* (не стоит углубляться в неочевидные вещи, о которых можно почитать в другом месте). -- Этот документ написан для пользователей Linux, с единственным исключением – секцией "[MacOS only](#macos-only)". Всё остальное подходит и может быть установлено под все UNIX/MacOS системы (и даже Cygwin). -- Фокусируемся на интерактивном Баше, но многие вещи также могут быть использованы с другими шеллами; и в общем применимы к Баш-скриптингу +- Этот документ написан для пользователей Linux, с единственным исключением – секцией "[MacOS X only](#macos-x-only)". Всё остальное подходит и может быть установлено под все UNIX/MacOS системы (и даже Cygwin). +- Фокусируемся на интерактивном Баше, но многие вещи могут быть использованы с другими шеллами; и в общем применимы к Баш-скриптингу - Эта инструкция включает в себя стандартные Unix-команды и те, для которых нужно устанавливать сторонние пакеты – они настолько полезны, что стоят того, чтобы их установили. Заметки: @@ -46,11 +45,11 @@ - Выучите хотя бы один консольный редактор текста. Идеально – Vim (`vi`), ведь у него нет конкурентов, когда вам нужно быстренько что-то подправить (даже если вы постоянно сидите на Emacs или какой-нибудь тяжёлой IDE, или на модном хипстерском редакторе). -- Знайте как читать документацию через `man` (для любознательных – `man man`; `man` по углам документа в скобках добавляет номер, например 1 – для обычных команд, 5 – для файлов, конвенций, 8 – для административных команд). Ищите мануалы через `apropos`, и помните, что некоторые команды – не бинарники, а встроенные команды Баша, и помощь по ним можно получить через `help` и `help -d`. +- Знайте как читать документацию через `man` (для любознательных – `man man`; `man` по углам документа в скобках добавляет номер, например 1 – для обычных команд, 5 – для файлов, конвенций, 8 – для административных команд). Ищите мануалы через `apropos` и помните, что некоторые команды – не бинарники, а встроенные команды Баша, и помощь по ним можно получить через `help` и `help -d`. - Узнайте о том, как перенаправлять ввод и вывод через `>` и `<` и пайпы `|`. Помните, что `>` – переписывает выходной файл, а `>>` добавляет к нему. Узнайте побольше про stdout и stderr. -- Узнайте побольше про раскрытие file glob элементов `*` (а также `?` и `{`...`}`), кавычки, а также разницу между двойными `"` и одинарными `'` кавычками. (Больше о расширении переменных читайте ниже) +- Узнайте побольше про раскрытие file glob элементов `*` (а также `?` и `{`...`}`), кавычки, а также разницу между двойными `"` и одинарными `'` кавычками. (Больше о расширении переменных читайте ниже.) - Будьте знакомы с работой с процессами в Bash: `&`, **ctrl-z**, **ctrl-c**, `jobs`, `fg`, `bg`, `kill`, и т.д. @@ -68,11 +67,11 @@ - Используйте **tab** в Баше для автодополнения аргументов к командам и **ctrl-r** для поиска по истории командной строки -- Используйте **ctrl-w** в Баше для того, чтобы удалить последнее слово в команде; **ctrl-u** – чтобы удалить команду полностью. Используйте **alt-b** и **alt-f** для того, чтобы бегать между словами команды, **ctrl-k** – чтобы удалить символы от курсора до конца строки, **ctrl-l** – чтобы очистить экран. Взгляните на `man readline`, чтобы узнать о всех клавиатурных сокращениях Баша. [Их много](http://ss64.com/bash/syntax-keyboard.html)! Например, **alt-.** вставляет последний аргумент предыдущей команды, а **ctrl-x *** [разворачивает глоб](http://superuser.com/questions/215950/how-to-expand-on-bash-command-line). +- Используйте **ctrl-w** в Баше для того, чтобы удалить последнее слово в команде; **ctrl-u** – чтобы удалить команду полностью. Используйте **alt-b** и **alt-f** для того, чтобы бегать между словами команды, **ctrl-k** – чтобы удалить символы от курсора до конца строки, **ctrl-l** – чтобы очистить экран. Взгляните на `man readline`, чтобы узнать о всех клавиатурных сокращениях Баша. [Их много](http://ss64.com/bash/syntax-keyboard.html)! Например, **alt-.** вставляет последний аргумент предыдущей команды, а **ctrl-x** [разворачивает глоб](http://superuser.com/questions/215950/how-to-expand-on-bash-command-line). - Если Вам нравятся шорткаты Вима, сделайте `set -o vi`. -- Для того, чтобы посмотреть историю, введите `history`. Также существует множество аббревиатур, например, `!$` – последний аргумент, `!!` – последняя команда, хотя эти аббревиатуры часто заменяются шорткатами **ctrl-r** и **alt-.**. +- Чтобы посмотреть историю, введите `history`. Также существует множество аббревиатур, например, `!$` – последний аргумент, `!!` – последняя команда, хотя эти аббревиатуры часто заменяются шорткатами **ctrl-r** и **alt-.**. - Для того, чтобы прыгнуть к последней рабочей директории, используйте `cd -` @@ -98,7 +97,7 @@ - Используйте `alias`, чтобы поименовать частоиспользуемые команды. Например, `alias ll='ls -latr'` создаст новое сокращение `ll`. -- В Баш-скриптах используйте `set -x` для того, чтобы отлаживать вывод. Используйте строгие режимы везде, где возможно. Используйте `set -e` для того, чтобы прекращать выполнение при ошибках. Используйте `set -o pipefail` для того, чтобы строго относится к ошибкам (это более глубокая тема). Для более сложных скриптов также используйте `trap`. +- В Баш-скриптах используйте `set -x`, чтобы отлаживать вывод. Используйте строгие режимы везде, где возможно. Используйте `set -e` для того, чтобы прекращать выполнение при ошибках. Используйте `set -o pipefail`, чтобы строго относиться к ошибкам (это более глубокая тема). Для более сложных скриптов выбирайте `trap`. - В Баш-скриптах подоболочки (subshells) – удобный способ группировать команды. Один из самых распространенных примеров – временно передвинуться в другую рабочую директорию, вот так: ```bash @@ -116,7 +115,7 @@ - Знайте про *heredoc*-синтаксис в Баше, работает он так: `cat <logfile 2>&1`. Зачастую для того, чтобы убедится, что команда не оставит открытым файл, привязав его к открытому терминалу, считается хорошей практикой добавлять `logfile 2>&1`. Зачастую, для того, чтобы убедиться, что команда не оставит открытым файл, привязав его к открытому терминалу, считается хорошей практикой добавлять `