- Основы работы с сетью: `ip` или `ifconfig`, `dig`.
- Основы работы с сетью: `ip` или `ifconfig`, `dig`.
- Освойте работу с системой контроля версий, например, `git`
- Хорошо знайте регулярные выражения и разные флаги к `grep`/`egrep`. Такие флаги как `-i`, `-o`, `-v`, `-A`, `-B` и `-C` стоит знать.
- Хорошо знайте регулярные выражения и разные флаги к `grep`/`egrep`. Такие флаги как `-i`, `-o`, `-v`, `-A`, `-B` и `-C` стоит знать.
- Обучитесь использованию системами управления пакетами `apt-get`, `yum`, `dnf` или `pacman` (в зависимости от дистрибутива) чтобы искать и устанавливать пакеты и обязательно имейте установленым `pip` для установки командных утилит, написанных на Python (некоторые из тех, что вы найдёте ниже, легче всего установить через `pip`).
- Обучитесь использованию системами управления пакетами `apt-get`, `yum`, `dnf` или `pacman` (в зависимости от дистрибутива) чтобы искать и устанавливать пакеты и обязательно имейте установленым `pip` для установки командных утилит, написанных на Python (некоторые из тех, что вы найдёте ниже, легче всего установить через `pip`).
@ -80,6 +82,8 @@
- Для просмотра последних команд используйте `history`. Также есть много сокращений, например, `!$` (последний аргумент) и `!!` последняя команда, хотя их часто можно заменить с помощью **ctrl-r** и **alt-.**.
- Для просмотра последних команд используйте `history`. Также есть много сокращений, например, `!$` (последний аргумент) и `!!` последняя команда, хотя их часто можно заменить с помощью **ctrl-r** и **alt-.**.
- Перейти в домашнюю директорию можно с помощью `cd`. Для указания пути к файлам из домашней директории можно воспользоваться префиксом `~` (например, `~/.bashrc`). В`sh` скриптах для обращения к домашней директории можно использовать переменную `$HOME`
- Для того, чтобы перейти к предыдущей рабочей директории, используйте `cd -`
- Для того, чтобы перейти к предыдущей рабочей директории, используйте `cd -`
- Если вы написали команду наполовину и вдруг передумали, нажмите **alt-#** для того, чтобы добавить `#` к началу, и отправьте команду как комментарий (или используйте **ctrl-a**, **#**, **enter**). Потом вы сможете вернуться к ней через историю.
- Если вы написали команду наполовину и вдруг передумали, нажмите **alt-#** для того, чтобы добавить `#` к началу, и отправьте команду как комментарий (или используйте **ctrl-a**, **#**, **enter**). Потом вы сможете вернуться к ней через историю.
@ -105,6 +109,13 @@
- Используйте `uptime` или `w` для того, чтобы узнать продолжительность работы системы.
- Используйте `uptime` или `w` для того, чтобы узнать продолжительность работы системы.
- Используйте `alias`, чтобы поименовать частоиспользуемые команды. Например, `alias ll='ls -latr'` создаст новое сокращение `ll`.
- Используйте `alias`, чтобы поименовать частоиспользуемые команды. Например, `alias ll='ls -latr'` создаст новое сокращение `ll`.
- Сохраняйте псевдонимы (aliases), настройки оболочки и частоиспользуемые сокращения в `~/.bashrc`, и [организуйте их подгрузку](http://superuser.com/a/183980/7106). Это сделает ваши настройки доступными во всех сессиях оболочки.
- Пропишите настройки переменных окружения и команды, которые должны быть выполнены при входе в систему в файл `~/.bash_profile`. Отдельная настройка будет необходима для оболочек, которые запускаются из GUI и `cron`.
- Синхронизируйте ваши конфигурационные файлы (например, `.bashrc` и `.bash_profile`) между разными компьютерами с помощью Git.
- Помните, что необходима осторожность при работе с переменными, которые содержат пробелы. Оберните свои переменные в кавычки, например `"$FOO"`. Предпочтительно использовать `-0` или `-print0` флаги чтобы использовать нулевой символ для разделения имен файлов, например: `locate -0 pattern | xargs -0 ls -al` или `find / -print0 -type d | xargs -0 ls -al`. Для циклов, которые используют имена файлов содержащие пробелы, установите IFS чтобы символом новой строки был только `\n`:`IFS=$'\n'`.
- Помните, что необходима осторожность при работе с переменными, которые содержат пробелы. Оберните свои переменные в кавычки, например `"$FOO"`. Предпочтительно использовать `-0` или `-print0` флаги чтобы использовать нулевой символ для разделения имен файлов, например: `locate -0 pattern | xargs -0 ls -al` или `find / -print0 -type d | xargs -0 ls -al`. Для циклов, которые используют имена файлов содержащие пробелы, установите IFS чтобы символом новой строки был только `\n`:`IFS=$'\n'`.
- В Баш-скриптах используйте `set -x` (или вариант `set -v`, который логгирует сырой ввод, включая нераскрытые переменные и комментарии) для того, чтобы отлаживать вывод (output). Используйте строгие режимы везде, где возможно. Используйте `set -e` для того, чтобы прекращать выполнение при ошибках (ненулевой код возврата). Используйте `set -u` чтобы определять использование неициализированных переменных. Используйте `set -o pipefail` для того, чтобы строго относиться к ошибкам (это немного глубокая тема). Для более сложных скриптов также используйте `trap` на EXIT или ERR. Полезная привычка - начинать скрипт примерно так (это поможет обнаружить ошибки и выведет предупреждение):
- В Баш-скриптах используйте `set -x` (или вариант `set -v`, который логгирует сырой ввод, включая нераскрытые переменные и комментарии) для того, чтобы отлаживать вывод (output). Используйте строгие режимы везде, где возможно. Используйте `set -e` для того, чтобы прекращать выполнение при ошибках (ненулевой код возврата). Используйте `set -u` чтобы определять использование неициализированных переменных. Используйте `set -o pipefail` для того, чтобы строго относиться к ошибкам (это немного глубокая тема). Для более сложных скриптов также используйте `trap` на EXIT или ERR. Полезная привычка - начинать скрипт примерно так (это поможет обнаружить ошибки и выведет предупреждение):
@ -201,6 +212,8 @@
- Не забывайте, что локализация вашей системы влияет на многие команды, включая порядки сортировки, сравнение и производительность. Многие дистрибутивы 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 проще, чем делать это в Питоне.
- Знайте основы `awk` и `sed` для простых манипуляций с данными. Например, чтобы получить сумму всех чисел, которые находятся в третьей колонке текстового файла, можно использовать `awk '{ x += $3 } END { print x }'`. Скорее всего, это получится раза в 3 быстрее и раза в 3 проще, чем делать это в Питоне.
- Чтобы заменить все вхождения подстроки в одном или нескольких файлах:
- Чтобы заменить все вхождения подстроки в одном или нескольких файлах: