mirror of
https://github.com/xmengnet/the-art-of-command-line.git
synced 2024-12-24 03:46:29 +08:00
verification of all fixes after all PRs
This commit is contained in:
parent
7508bda543
commit
82a40e740e
2 changed files with 13 additions and 13 deletions
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
.idea
|
25
README-ru.md
25
README-ru.md
|
@ -31,7 +31,7 @@
|
|||
|
||||
- Данная публикация предназначена как для новичков, так и для опытных людей. Цели: *объёмность* (собрать все важные аспекты использования командной строки), *практичность* (давать конкретные примеры для самых частых юзкейсов) и *краткость* (не стоит углубляться в неочевидные вещи, о которых можно почитать в другом месте).
|
||||
- Этот документ написан для пользователей Linux, с единственным исключением – секцией "[MacOS only](#macos-only)". Всё остальное подходит и может быть установлено под все UNIX/MacOS системы (и даже Cygwin).
|
||||
- Фокусируемся на интерактивном Баше, но многие вещи также могут быть использованы с другими шеллами; и в общем применимы к Баш-скирптингу.
|
||||
- Фокусируемся на интерактивном Баше, но многие вещи также могут быть использованы с другими шеллами; и в общем применимы к Баш-скриптингу
|
||||
- Эта инструкция включает в себя стандартные Unix-команды и те, для которых нужно устанавливать сторонние пакеты – они настолько полезны, что стоят того, чтобы их установили.
|
||||
|
||||
Заметки:
|
||||
|
@ -46,11 +46,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 expansion with `*` (и, возможно, `?` и `{`...`}`), кавычки, а также разницу между двойными `"` и одинарными `'` кавычками. (Больше о расширении переменных читайте ниже.)
|
||||
- Узнайте побольше про раскрытие file glob элементов `*` (а также `?` и `{`...`}`), кавычки, а также разницу между двойными `"` и одинарными `'` кавычками. (Больше о расширении переменных читайте ниже.)
|
||||
|
||||
- Будьте знакомы с работой с процессами в Bash: `&`, **ctrl-z**, **ctrl-c**, `jobs`, `fg`, `bg`, `kill`, и т.д.
|
||||
|
||||
|
@ -64,7 +64,6 @@
|
|||
|
||||
- Обучитесь использованию системами управления пакетами `apt-get`, `yum`, `dnf` или `pacman` (в зависимости от дистрибутива). Знайте, как искать и устанавливать пакеты и обязательно имейте установленым `pip` для установки командных утилит, написаных на Python (некоторые из тех, что вы найдёте ниже, легче всего установить через `pip`).
|
||||
|
||||
|
||||
## Ежедневное использование
|
||||
|
||||
- Используйте **tab** в Баше для автодополнения аргументов к командам и **ctrl-r** для поиска по истории командной строки
|
||||
|
@ -73,7 +72,7 @@
|
|||
|
||||
- Если Вам нравятся шорткаты Вима, сделайте `set -o vi`.
|
||||
|
||||
- Чтобы посмотреть историю, введите `history`. Также, существует множество аббривиатур, например, `!$` – последний аргумент, `!!` – последняя команда, хотя эти аббривиатуры часто заменяются шорткатами **ctrl-r** и **alt-.**.
|
||||
- Чтобы посмотреть историю, введите `history`. Также существует множество аббревиатур, например, `!$` – последний аргумент, `!!` – последняя команда, хотя эти аббревиатуры часто заменяются шорткатами **ctrl-r** и **alt-.**.
|
||||
|
||||
- Перейти к последней рабочей директории – `cd -`
|
||||
|
||||
|
@ -95,11 +94,11 @@
|
|||
|
||||
- Узнайте, какие процессы слушают порты через `netstat -lntp` или `ss -plat` (для TCP; добавьте `-u` для UDP).
|
||||
|
||||
- Также – `lsof` для того, чтобы посмотреть открытые сокеты и файлы.
|
||||
- Используйте `lsof` для того, чтобы посмотреть открытые сокеты и файлы.
|
||||
|
||||
- Используйте `alias`, чтобы поименовать частоиспользуемые команды. Например, `alias ll='ls -latr'` создаст новое сокращение `ll`.
|
||||
|
||||
- В Баш-скритах используйте `set -x`, чтобы отлаживать вывод. Используйте строгие режимы везде, где возможно. Используйте `set -e` для того, чтобы прекращать выполнение при ошибках. Используйте `set -o pipefail`, чтобы строго относиться к ошибкам (это немного более глубокая тема). Для более сложных скриптов выбирайте `trap`.
|
||||
- В Баш-скриптах используйте `set -x`, чтобы отлаживать вывод. Используйте строгие режимы везде, где возможно. Используйте `set -e` для того, чтобы прекращать выполнение при ошибках. Используйте `set -o pipefail`, чтобы строго относиться к ошибкам (это более глубокая тема). Для более сложных скриптов выбирайте `trap`.
|
||||
|
||||
- В Баш-скриптах под-оболочки (subshells) – удобный способ группировать команды. Один из самых распространённых примеров – временно перейти в другой рабочий каталог:
|
||||
```bash
|
||||
|
@ -117,7 +116,7 @@
|
|||
|
||||
- Знайте про *heredoc*-синтаксис в Баше, работает он так: `cat <<EOF ...`.
|
||||
|
||||
- В Баше перенаправляйте стандартный вывод, а также предупреждайте стандартные ошибки: `some-command >logfile 2>&1`. Зачастую, для того, чтобы убедиться, что команда не оставит открытым файл, привязав его к открытому терминалу, считается хорошей практикой добавлять `</dev/null`.
|
||||
- В Баше перенаправляйте стандартный вывод, а также вывод stderr вот так: `some-command >logfile 2>&1`. Зачастую, для того, чтобы убедиться, что команда не оставит открытым файл, привязав его к открытому терминалу, считается хорошей практикой добавлять `</dev/null`.
|
||||
|
||||
- Используйте `man ascii` для хорошей ASCII таблицы, с *hex-* и десятичными значениями. Для информации по основным кодировкам полезны: `man unicode`, `man utf-8` и `man latin1`.
|
||||
|
||||
|
@ -223,7 +222,7 @@
|
|||
|
||||
## Системный дебаггинг
|
||||
|
||||
- Дле веб-дебаггинга используйте `curl` и `curl -I`, или их альтернативу `wget`. Также, есть более современные альтернативы, типа [`httpie`](https://github.com/jakubroztocil/httpie).
|
||||
- Для веб-дебаггинга используйте `curl` и `curl -I`, или их альтернативу `wget`. Также, есть более современные альтернативы, типа [`httpie`](https://github.com/jakubroztocil/httpie).
|
||||
|
||||
- Чтобы получить информацию о диске/CPU/сети, используйте `iostat`, `netstat`, `top` (или лучшую альтернатву `htop`) и особенно `dstat`. Хороший старт для того, чтобы понимать что происходит в системе.
|
||||
|
||||
|
@ -247,7 +246,7 @@
|
|||
|
||||
- Не забывайте про `ldd` для проверки системных библиотек.
|
||||
|
||||
- Знайте, как прицепиться к работающему процессу (через `gdb`) и получить трассировку стека.
|
||||
- Знайте, как прицепиться к запущенному процессу (через `gdb`) и получить трассировку стека.
|
||||
|
||||
- Используйте `/proc`. Иногда он невероятно полезен для отладки запущенных программ. Примеры: `/proc/cpuinfo`, `/proc/xxx/cwd`, `/proc/xxx/exe`, `/proc/xxx/fd/`, `/proc/xxx/smaps`.
|
||||
|
||||
|
@ -331,7 +330,7 @@
|
|||
|
||||
- `nl`: добавить номера строк
|
||||
|
||||
- `seq`: вывести числа
|
||||
- `seq`: вывести последовательность чисел
|
||||
|
||||
- `bc`: калькулятор
|
||||
|
||||
|
@ -347,7 +346,7 @@
|
|||
|
||||
- `slurm`: визуализация трафика сети
|
||||
|
||||
- `dd`: перенос информации между файлами и девайсами
|
||||
- `dd`: перенос информации между файлами и устройствами
|
||||
|
||||
- `file`: узнать тип файла
|
||||
|
||||
|
@ -365,7 +364,7 @@
|
|||
|
||||
- `hd`, `hexdump`, `xxd`, `biew`: hex-дамп и редактирование бинарников
|
||||
|
||||
- `strings`: найти текст в бинарникх
|
||||
- `strings`: найти текст в бинарниках
|
||||
|
||||
- `tr`: манипуляция с char (символьным типом)
|
||||
|
||||
|
|
Loading…
Reference in a new issue