mirror of
https://github.com/xmengnet/the-art-of-command-line.git
synced 2024-12-24 09:16:29 +08:00
Synced russian version to original line-by-line to merge changes easly. Corrected a couple of words, removed a duplicate, joined few strings
This commit is contained in:
parent
ad5d25ffd7
commit
5440364e80
1 changed files with 21 additions and 21 deletions
42
README-ru.md
42
README-ru.md
|
@ -1,6 +1,7 @@
|
|||
🌍
|
||||
*[Čeština](README-cs.md) ∙ [Ελληνικά](README-el.md) ∙ [English](README.md) ∙ [Español](README-es.md) ∙ [Français](README-fr.md) ∙ [Italiano](README-it.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) ∙ [繁體中文](README-zh-Hant.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)
|
||||
|
@ -22,10 +23,12 @@
|
|||
Продвинутому использованию командной строки зачастую не уделяют достаточного внимания. О терминале говорят как о чем-то мистическом. На самом же деле, это умение очевидно (и не очевидно) увеличивает Вашу продуктивность в работе. Данный документ является подборкой заметок и советов, которые я нашел для себя полезными, работая с командной строкой в Linux. Некоторые из их них – простые и очевидные, но некоторые - довольно сложные. И предназначены для решения конкретных задач. Это небольшая публикация, но если Вы уже знаете обо всем, что тут написано, и можете вспомнить, как это все использовать – вы много знаете!
|
||||
|
||||
Этот гайд является результатом работы [большого числа авторов и переводчиков](AUTHORS.md)
|
||||
Многое из того, что тут написано, [изначально](http://www.quora.com/What-are-some-lesser-known-but-useful-Unix-commands)
|
||||
Многое из того, что тут написано,
|
||||
[изначально](http://www.quora.com/What-are-some-lesser-known-but-useful-Unix-commands)
|
||||
[появилось](http://www.quora.com/What-are-the-most-useful-Swiss-army-knife-one-liners-on-Unix)
|
||||
на [Quora](http://www.quora.com/What-are-some-time-saving-tips-that-every-Linux-user-should-know),
|
||||
начав идею там, похоже, что стоит развить ее на Github, где обитают люди, которые талантливее меня и могут предлагать улучшения данной подборки. Если Вы заметили ошибки (во всех вариантах перевода), пожалуйста [**оставьте тикет или добавьте пулл-реквест**](CONTRIBUTING.md) (заранее изучив описание и посмотрев на уже созданнные тикеты и пулл-реквесты).
|
||||
начав идею там, похоже, что стоит развить ее на Github, где обитают люди, которые талантливее меня и могут предлагать улучшения данной подборки. Если Вы заметили ошибки (во всех вариантах перевода), пожалуйста
|
||||
[**оставьте тикет или добавьте пулл-реквест**](CONTRIBUTING.md) (заранее изучив описание и посмотрев на уже созданнные тикеты и пулл-реквесты).
|
||||
|
||||
## Описание
|
||||
|
||||
|
@ -39,9 +42,9 @@
|
|||
Заметки:
|
||||
|
||||
- Для того, чтобы руководство оставалось одностраничным, вся информация вставлена прямо сюда. Вы достаточно умные для того, чтобы самостоятельно изучить вопрос более детально в другом месте. Используйте `apt-get`, `yum`, `dnf`, `pacman`, `pip` или `brew` (в зависимости от вашей системы управления пакетами) для установки новых программ.
|
||||
|
||||
- На [Explainshell](http://explainshell.com/) можно найти простое и подробное объяснение того, что такое команды, флаги, пайпы и т.д.
|
||||
|
||||
|
||||
## Основы
|
||||
|
||||
- Выучите основы Баша. Просто возьмите и напечатайте `man bash` в терминале и хотя бы просмотрите его; он довольно просто читается и он не очень большой. Другие шеллы тоже могут быть хороши, но Баш – мощная программа, и Баш всегда под рукой (использование *исключительно* zsh, fish и т.д., которые наверняка круто выглядят на Вашем ноутбуке во многом Вас ограничивает, например Вы не сможете использовать возможности этих шеллов на уже существующем сервере).
|
||||
|
@ -68,15 +71,15 @@
|
|||
|
||||
- Обучитесь использованию системами управления пакетами `apt-get`, `yum`, `dnf` или `pacman` (в зависимости от дистрибутива) чтобы искать и устанавливать пакеты и обязательно имейте установленым `pip` для установки командных утилит, написанных на Python (некоторые из тех, что вы найдёте ниже, легче всего установить через `pip`).
|
||||
|
||||
|
||||
## Ежедневное использование
|
||||
|
||||
- Используйте таб в Баше для автодополнения аргументов к командам и **ctrl-r** для поиска по истории командной строки (после нажатия введите запрос, нажмите **ctrl-r** снова чтобы натйи следующее сопадение, нажмите **Enter** для выполнения текущей найденной команды или стрелку вправо чтобы отредактировать команду).
|
||||
|
||||
- Используйте **ctrl-w** в Баше для того, чтобы удалить последнее слово в команде; **ctrl-u** для того, чтобы удалить команду полностью. Используйте **alt-b** и **alt-f** для того, чтобы бегать между словами команды, **ctrl-a** и **ctrl-e** для того, чтобы переместиться к началу и концу строки соответственно, **ctrl-k** для того, чтобы удалить часть команды от текущей позиции до конца строки, **ctrl-l** для того, чтобы очистить экран. Гляньте на `man readline` чтобы узнать о всех клавиатурных сочетаниях Баша. Их много! Например, **alt-.** бежит по предыдущим аргументам команды, а **alt-*** раскрывает глоб (globbing).
|
||||
|
||||
- Если Вам нравятся кравиатурных сочетаниях vim, сделайте `set -o vi` (и `set -o emacs` чтобы вернуться обратно).
|
||||
|
||||
- Для того, чтобы посмотреть историю, введите `history`. Также существует множество аббревиатур, например `!$` – последний аргумент, `!!` – последняя команда, хотя эти аббревиатуры часто заменяются шорткатами **ctrl-r** и **alt-.**.
|
||||
- Если Вам нравятся кравиатурных сочетаниях vim, сделайте `set -o vi` (и `set -o emacs` чтобы вернуться обратно).
|
||||
|
||||
- Для редактирования длинных команд после установки другого редактора (например `export EDITOR=vim`), нажатие **ctrl-x** **ctrl-e** откроет текущую команду в редакторе для многострочного редактирования. Или, как в vi, **escape-v**.
|
||||
|
||||
|
@ -94,6 +97,7 @@
|
|||
cat hosts | xargs -I{} ssh root@{} hostname
|
||||
```
|
||||
|
||||
|
||||
- `pstree -p` – полезный тип вывода дерева процессов.
|
||||
|
||||
- Используйте `pgrep` или `pkill` для того, чтобы находить/слать сигналы к процессам по имени (`-f` помогает).
|
||||
|
@ -124,7 +128,6 @@
|
|||
trap "echo 'error: Script failed: see failed command above'" ERR
|
||||
```
|
||||
|
||||
|
||||
- В Баш-скриптах подоболочки (subshells) – удобный способ группировать команды. Один из самых распространенных примеров – временно передвинуться в другую рабочую директорию, вот так:
|
||||
```bash
|
||||
# do something in current dir
|
||||
|
@ -197,7 +200,6 @@
|
|||
|
||||
- Для работы с 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).
|
||||
|
@ -231,7 +233,7 @@
|
|||
rename 's/\.bak$//' *.bak
|
||||
```
|
||||
|
||||
- Как говорит man, `rsync` действительно быстрая и очень универсальная утилита для копирования файлов. Но она хороша не только для синхронизацией между машинами, но и локально. Он также является [самым быстрым способом](https://web.archive.org/web/20130929001850/http://linuxnote.net/jianingy/en/linux/a-fast-way-to-remove-huge-number-of-files.html) удалить большое количество файлов:
|
||||
- Как говорит 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
|
||||
```
|
||||
|
@ -251,7 +253,6 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir
|
|||
- Чтобы посмотреть разницу в бинарниках (дельта-кодирование) используйте `xdelta3`.
|
||||
|
||||
- Для конвертирования кодировок используйте `iconv`. Для более сложных задач – `uconv`, он поддерживает некоторые сложные фичи Юникода. Например, эта команда переводит строки из файла в нижний регистр и убирает ударения (которые бывают, например, в испанском языке)
|
||||
|
||||
```sh
|
||||
uconv -f utf-8 -t utf-8 -x '::Any-Lower; ::Any-NFD; [:Nonspacing Mark:] >; ::Any-NFC; ' < input.txt > output.txt
|
||||
```
|
||||
|
@ -262,11 +263,10 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir
|
|||
|
||||
- Используйте `zless`, `zmore`, `zcat`, и `zgrep` для работы со сжатыми файлами.
|
||||
|
||||
|
||||
## Отладка системы
|
||||
|
||||
- Дле веб-отладки используйте `curl` и `curl -I`, или их альтернативу - `wget`. Также есть более современные альтернативы, например [`httpie`](https://github.com/jakubroztocil/httpie).
|
||||
|
||||
|
||||
- Дле веб-отладки используйте `curl` и `curl -I`, или их альтернативу - `wget`. Также есть более современные утилиты, например [`httpie`](https://github.com/jakubroztocil/httpie).
|
||||
|
||||
- Чтобы узнать текущее состояние процессора/диска можно использовать классический `top` (или улучшенную альтернативу `htop`) и `iostat`, `iotop`. Используйте `iostat -mxz 15` для получения бозовой информации о процессоре и детализированной о каждом разделе жесткого диска.
|
||||
|
||||
|
@ -304,6 +304,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir
|
|||
|
||||
- Используйте `dmesg`, когда что-то ведет себя совсем странно (например, железо или драйвера).
|
||||
|
||||
|
||||
## В одну строчку
|
||||
|
||||
Давайте соберем все вместе и напишем несколько команд:
|
||||
|
@ -323,17 +324,16 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir
|
|||
awk '{ x += $3 } END { print x }' myfile
|
||||
```
|
||||
|
||||
- Если вам нужно посмотреть размеры и даты создания дерева файлов используйте:
|
||||
- Чтобы посмотреть размеры и даты в дереве файлов, есть почти как рекурсивная `ls -l`, но легче читаемая, чем `ls -lR`:
|
||||
```sh
|
||||
find . -type f -ls
|
||||
```
|
||||
|
||||
Это почти как рекурсивная `ls -l`, но выглядит более читабельно чем `ls -lR`:
|
||||
|
||||
- Давайте представим, что у нас есть какой-то текстовый файл, например лог какого-то сервера и на каких-то строках появляется значение, строки с которым нам интересны. Например, `acct_id`. Давайте подсчитаем, сколько таких запросов в нашем логе:
|
||||
- Скажем, у нас есть какой-то текстовый файл, например лог какого-то сервера и на каких-то строках появляется значение, строки с которым нам интересны. Например, `acct_id`. Давайте подсчитаем, сколько таких запросов в нашем логе:
|
||||
```sh
|
||||
cat access.log | egrep -o 'acct_id=[0-9]+' | cut -d= -f2 | sort | uniq -c | sort -rn
|
||||
```
|
||||
|
||||
- Для непрерывного мониторинга измененний используйте `watch`, например, проверка измений файлов в директории: `watch -d -n 2 'ls -rtlh | tail'` или сетевых настроек во время устранения проблем с вашей wifi сетью: `watch -d -n 2 ifconfig`.
|
||||
|
||||
- Запустите этот скрипт, чтобы получить случайный совет из этой инструкции:
|
||||
|
@ -412,7 +412,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir
|
|||
|
||||
- `watch`: повторный запуск команды с выводом результата или подсветкой изменений
|
||||
|
||||
- `tac`: вывести файл посимвольно наоборот ("ласипан")
|
||||
- `tac`: вывести файл построчно в обратном порядке
|
||||
|
||||
- `shuf`: случайная выборка строк из файла
|
||||
|
||||
|
@ -498,7 +498,8 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir
|
|||
|
||||
- `lsmod` и `modinfo`: информация о модулях ядра.
|
||||
|
||||
- `fortune`, `ddate`, и `sl`: хм, не знаю, будут ли вам "полезные" веселые цитатки и поезда, пересекающие ваш терминал :)
|
||||
- `fortune`, `ddate`, и `sl`: хм, не знаю, будут ли вам "полезны" веселые цитатки и поезда, пересекающие ваш терминал :)
|
||||
|
||||
|
||||
## OS X only
|
||||
|
||||
|
@ -518,6 +519,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir
|
|||
|
||||
- Чтобы получить информацию о версии OS X используйте `sw_vers`.
|
||||
|
||||
|
||||
## Больше информации по теме
|
||||
|
||||
- [awesome-shell](https://github.com/alebcay/awesome-shell): Дополняемый список инструментов и ресурсов для командной строки.
|
||||
|
@ -529,9 +531,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir
|
|||
|
||||
## Дисклеймер
|
||||
|
||||
За небольшим исключением, весь код написан так, чтобы другие его смогли прочитать.
|
||||
|
||||
Кому много дано, с того много и спрашивается. Тот факт, что что-то может быть написано на Баше, вовсе не означает, что оно должно быть на нём написано. ;)
|
||||
За небольшим исключением, весь код написан так, чтобы другие его смогли прочитать. Кому много дано, с того много и спрашивается. Тот факт, что что-то может быть написано на Баше, вовсе не означает, что оно должно быть на нём написано. ;)
|
||||
|
||||
|
||||
## Лицензия
|
||||
|
|
Loading…
Reference in a new issue