mirror of
https://github.com/xmengnet/the-art-of-command-line.git
synced 2024-12-24 09:26:30 +08:00
Поправил орфографию, пунктуацию, опечатки
This commit is contained in:
parent
4e66f9a313
commit
4e944cae74
1 changed files with 28 additions and 28 deletions
40
README-ru.md
40
README-ru.md
|
@ -32,7 +32,7 @@
|
|||
|
||||
- Данная публикация предназначена как для новичков, так и для опытных людей. Цели: *объемность* (собрать все важные аспекты использования командной строки), *практичность* (давать конкретные примеры для самых частых юзкейсов) и *краткость* (не стоит углубляться в неочевидные вещи, о которых можно почитать в другом месте).
|
||||
- Этот документ написан для пользователей Linux, с единственным исключеним – секцией "[MacOS only](#macos-only)". Все остальное подходит и может быть установлено под все UNIX/MacOS системы (и даже Cygwin).
|
||||
- Фокусируемся на интерактивном Баше, но многие вещи так же могут быть использованы с другими шеллами; и в общем приминимы к Баш-скирптингу
|
||||
- Фокусируемся на интерактивном Баше, но многие вещи также могут быть использованы с другими шеллами; и в общем приминимы к Баш-скриптингу
|
||||
- Эта инструкция включает в себя стандартные Unix комманды и те, для которых нужно устанавливать сторонние пакеты – они настолько полезны, что стоят того, чтобы их установили
|
||||
|
||||
Заметки:
|
||||
|
@ -72,13 +72,13 @@
|
|||
|
||||
- Используйте **ctrl-w** в Баше для того, чтобы удалить последнее слово в команде; **ctrl-u** для того, что бы удалить команду полностью. Используйте **alt-b** и **alt-f** для того, чтобы бегать между словами команды, **ctrl-k** для того, чтобы прыгнуть к концу строки, **ctrl-l** для того, чтобы очистить экран. Гляньте на `man readline` чтобы узнать о всех шорткатах Баша. Их много! Например, **alt-.** бежит по предыдущим аргументам команды, а **alt-*** расширяет глоб.??
|
||||
|
||||
- Если Вам нравятся шорткаты Вима сделайте `set -o vi`.
|
||||
- Если Вам нравятся шорткаты Вима, сделайте `set -o vi`.
|
||||
|
||||
- Для того, чтобы посмотреть историю введите `history`. Так же существует множество аббривиатур, например `!$` – последний аргумент, `!!` – последняя команда, хотя эти аббривиатуры часто заменяются шорткатами **ctrl-r** и **alt-.**.
|
||||
- Для того, чтобы посмотреть историю, введите `history`. Также существует множество аббривиатур, например `!$` – последний аргумент, `!!` – последняя команда, хотя эти аббривиатуры часто заменяются шорткатами **ctrl-r** и **alt-.**.
|
||||
|
||||
- Для того, чтобы прыгнуть к последней рабочей директории – `cd -`
|
||||
- Для того, чтобы прыгнуть к последней рабочей директории, используйте `cd -`
|
||||
|
||||
- Если Вы написали команду наполовину и вдруг передумали нажмите **alt-#** для того, чтобы добавить `#` к началу и отправьте комманду как комментарий. Потом вы сможете вернуться к ней через историю.
|
||||
- Если Вы написали команду наполовину и вдруг передумали, нажмите **alt-#** для того, чтобы добавить `#` к началу, и отправьте комманду как комментарий. Потом вы сможете вернуться к ней через историю.
|
||||
|
||||
- Не забывайте использовать `xargs` (или `parallel`). Это очень мощная штука. Обратите внимание, что Вы можете контролировать количество команд на каждую строку, а также параллельность. Если Вы не уверены, что делаете что-то правильно, начните с `xargs echo`. Еще `-I{}` – полезная штука. Примеры:
|
||||
```bash
|
||||
|
@ -88,21 +88,21 @@
|
|||
|
||||
- `pstree -p` – полезный тип вывода дерева процессов.
|
||||
|
||||
- Используйте `pgrep` или `pkill` для того чтобы находить/слать сигналы к процессам по имени (`-f` помогает).
|
||||
- Используйте `pgrep` или `pkill` для того, чтобы находить/слать сигналы к процессам по имени (`-f` помогает).
|
||||
|
||||
- Знайте разные сигналы, которые можно слать процессам. Например, чтобы приостановить процесс используйте `kill -STOP [pid]`. Для полного списка посмотрите `man 7 signal`.
|
||||
- Знайте разные сигналы, которые можно слать процессам. Например, чтобы приостановить процесс, используйте `kill -STOP [pid]`. Для полного списка посмотрите `man 7 signal`.
|
||||
|
||||
- Используйте `nohup` или `disown` для того, чтобы процесс в фоне выполнялся бесконечно.
|
||||
|
||||
- Узнайте какие процессы слушают порты через `netstat -lntp` или `ss -plat` (для TCP; добавьте `-u` для UDP).
|
||||
- Узнайте, какие процессы слушают порты через `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) – удобный способ группировать команды. Один из самых распространенных примеров – временно передвинуться в другую рабочую директорию, вот так:
|
||||
- В Баш-скриптах подоболочки (subshells) – удобный способ группировать команды. Один из самых распространенных примеров – временно передвинуться в другую рабочую директорию, вот так:
|
||||
```bash
|
||||
# do something in current dir
|
||||
(cd /some/other/dir && other-command)
|
||||
|
@ -124,9 +124,9 @@
|
|||
|
||||
- Используйте `screen` или [`tmux`](https://tmux.github.io/) для того, чтобы иметь несколько экранов в одном терминале, это особенно полезно, когда вы работаете с удаленным сервером, тогда Вы можете подключаться/отключаться от сессий. Более минималистичный подход для этого – использование `dtach`.
|
||||
|
||||
- В SSH полезно знать как port tunnel с флагами `-L` и `-D` (и иногда `-R`), например для того, чтобы зайти на сайт с удаленного сервера.
|
||||
- В SSH полезно знать, как создать туннель для выбранного номера TCP-порта с флагами `-L` и `-D` (и иногда `-R`), например для того, чтобы зайти на сайт с удаленного сервера.
|
||||
|
||||
- Еще может быть полезно оптимизировать вашу SSH конфигурацию, например этот файл `~/.ssh/config` содержит настройки, которые помогают избегать потерянные подключения в некоторых сетевых окружениях, используйте сжатие (которое полезно с scp через медленные подключения) и увеличьте количество каналов к одному серверу через этот конфиг вот так:
|
||||
- Еще может быть полезно оптимизировать вашу SSH конфигурацию, например, файл `~/.ssh/config` содержит настройки, которые помогают избегать потерянные подключения в некоторых сетевых окружениях; используйте сжатие (которое полезно с scp через медленные подключения) и увеличьте количество каналов к одному серверу через этот конфиг вот так:
|
||||
```
|
||||
TCPKeepAlive=yes
|
||||
ServerAliveInterval=15
|
||||
|
@ -137,7 +137,7 @@
|
|||
ControlPersist yes
|
||||
```
|
||||
|
||||
- Некоторые другие настройки SSH могут сильно повлиять на безопасность и должны меняться осторожно, например для конкретной подсети или конкретной машины или в домашних сетях: `StrictHostKeyChecking=no`, `ForwardAgent=yes`
|
||||
- Некоторые другие настройки SSH могут сильно повлиять на безопасность и должны меняться осторожно, например, для конкретной подсети или конкретной машины или в домашних сетях: `StrictHostKeyChecking=no`, `ForwardAgent=yes`
|
||||
|
||||
- Для того, чтобы получить разрешения файла в восьмеричном виде, что полезно для конфигурации систем, но нельзя получить из `ls`, можно использовать что-то типа:
|
||||
```sh
|
||||
|
@ -148,7 +148,7 @@
|
|||
|
||||
- Для работы с файлами, список которых дала другая команда (например Git) используйте `fpp` ([PathPicker](https://github.com/facebook/PathPicker)).
|
||||
|
||||
- Для того чтобы быстро поднять веб-сервер в текущей директории (и поддерикториях), который доступен для всех в вашей сети используйте:
|
||||
- Для того, чтобы быстро поднять веб-сервер в текущей директории (и поддерикториях), который доступен для всех в вашей сети, используйте:
|
||||
`python -m SimpleHTTPServer 7777` (for port 7777 and Python 2) and `python -m http.server 7777` (for port 7777 and Python 3).
|
||||
|
||||
- Для того, чтобы выполнить определенную команду с привилегиями, используйте `sudo` (для рута) и `sudo -u` (для другого пользователя). Используйте `su` или `sudo bash` для того чтобы запустить шелл от имени этого пользователя. Используйте `su -` для того, чтобы симулировать свежий логин от рута или другого пользователя.
|
||||
|
@ -252,13 +252,13 @@
|
|||
|
||||
- Используйте `/proc`. Иногда он невероятно полезен для дебага запущенных программ. Примеры: `/proc/cpuinfo`, `/proc/xxx/cwd`, `/proc/xxx/exe`, `/proc/xxx/fd/`, `/proc/xxx/smaps`.
|
||||
|
||||
- Когда дебажете что-то, что сломалось в прошлом используйте `sar` – бывает очень полезно. Показывает историю CPU, памяти, сети и т.д.
|
||||
- Когда дебажете что-то, что сломалось в прошлом, используйте `sar` – бывает очень полезно. Показывает историю CPU, памяти, сети и т.д.
|
||||
|
||||
- Для анализа более глубоких систем и производительности посмотрите на `stap` ([SystemTap](https://sourceware.org/systemtap/wiki)), [`perf`](http://en.wikipedia.org/wiki/Perf_(Linux)), и [`sysdig`](https://github.com/draios/sysdig).
|
||||
|
||||
- Узнайте какая у вас операционка через `uname` or `uname -a` (основная Unix-информация/информация о ядре) или `lsb_release -a` (информация о дистрибутиве).
|
||||
- Узнайте, какая у вас операционка, через `uname` or `uname -a` (основная Unix-информация/информация о ядре) или `lsb_release -a` (информация о дистрибутиве).
|
||||
|
||||
- Используйте `dmesg` когда что-то ведет себя совсем странно (например железо или драйвера).
|
||||
- Используйте `dmesg`, когда что-то ведет себя совсем странно (например, железо или драйвера).
|
||||
|
||||
## В одну строчку
|
||||
|
||||
|
@ -440,13 +440,13 @@
|
|||
|
||||
- `fortune`, `ddate`, и `sl`: хм, не знаю будут ли вам "полезны" веселые цитатки и поезда, пересекающие ваш терминал :)
|
||||
|
||||
## MacOS only
|
||||
## MacOS X only
|
||||
|
||||
Некоторые вещи релевантны *только* для Мака.
|
||||
|
||||
- Системы управлением пакетами – `brew` (Homebrew) и `port` (MacPorts). Они могут быть использованы для того, чтобы установить большинство програм, упомянутых в этом документе.
|
||||
|
||||
- Копируйте аутпут консольных программ в десктопные через `pbcopy`, и вставляйте инпут через `pbpaste`.
|
||||
- Копируйте вывод консольных программ в десктопные через `pbcopy`, и вставляйте ввод через `pbpaste`.
|
||||
|
||||
- Для того, чтобы открыть файл или десктопную программу типа Finder используйте `open`, вот так `open -a /Applications/Whatever.app`.
|
||||
|
||||
|
|
Loading…
Reference in a new issue