mirror of
https://github.com/xmengnet/the-art-of-command-line.git
synced 2024-12-25 01:06:31 +08:00
мелкие доработки 4 и пара правок ошибочного перевода
This commit is contained in:
parent
4c1850ab84
commit
48a9b5213a
1 changed files with 11 additions and 11 deletions
22
README-ru.md
22
README-ru.md
|
@ -110,7 +110,7 @@
|
||||||
|
|
||||||
- В Баше много типов пространств имён. Проверить, существует ли переменная – `${name:?error message}`. Например, если Баш-скрипту нужен всего один аргумент, просто напишите `input_file=${1:?usage: $0 input_file}`. Арифметическая область видимости: `i=$(( (i + 1) % 5 ))`. Последовательности: `{1..10}`. Обрезка строк: `${var%suffix}` и `${var#prefix}`. Например, если `var=foo.pdf`, тогда `echo ${var%.pdf}.txt` выведет `foo.txt`.
|
- В Баше много типов пространств имён. Проверить, существует ли переменная – `${name:?error message}`. Например, если Баш-скрипту нужен всего один аргумент, просто напишите `input_file=${1:?usage: $0 input_file}`. Арифметическая область видимости: `i=$(( (i + 1) % 5 ))`. Последовательности: `{1..10}`. Обрезка строк: `${var%suffix}` и `${var#prefix}`. Например, если `var=foo.pdf`, тогда `echo ${var%.pdf}.txt` выведет `foo.txt`.
|
||||||
|
|
||||||
- Вывод любой команды можно сохранить в файл по `<(some command)`. Например, сравнение локального файла `/etc/hosts с удаленным:
|
- Вывод любой команды можно сохранить в файлоподобный контекст по `<(some command)`. Например, сравнение локального файла `/etc/hosts с удаленным:
|
||||||
```sh
|
```sh
|
||||||
diff /etc/hosts <(ssh somehost cat /etc/hosts)
|
diff /etc/hosts <(ssh somehost cat /etc/hosts)
|
||||||
```
|
```
|
||||||
|
@ -138,12 +138,12 @@
|
||||||
|
|
||||||
- Некоторые другие настройки SSH могут сильно повлиять на безопасность и должны меняться осторожно, например, для конкретной подсети или конкретной машины или в домашних сетях: `StrictHostKeyChecking=no`, `ForwardAgent=yes`
|
- Некоторые другие настройки SSH могут сильно повлиять на безопасность и должны меняться осторожно, например, для конкретной подсети или конкретной машины или в домашних сетях: `StrictHostKeyChecking=no`, `ForwardAgent=yes`
|
||||||
|
|
||||||
- Чтобы получить разрешения файла в восьмеричном виде, что полезно для конфигурации систем, но нельзя получить из `ls`, можно использовать что-то типа:
|
- Чтобы получить разрешения файла в восьмиричном виде, что полезно для конфигурации систем, но нельзя получить из `ls`, можно использовать что-то типа:
|
||||||
```sh
|
```sh
|
||||||
stat -c '%A %a %n' /etc/timezone
|
stat -c '%A %a %n' /etc/timezone
|
||||||
```
|
```
|
||||||
|
|
||||||
- Для интерактивного выделения результатов других команд используйте [`percol`](https://github.com/mooz/percol) or [`fzf`](https://github.com/junegunn/fzf).
|
- Для интерактивного выделения результатов других команд используйте [`percol`](https://github.com/mooz/percol) или [`fzf`](https://github.com/junegunn/fzf).
|
||||||
|
|
||||||
- Для работы с файлами, список которых дала другая команда (например, Git), используйте `fpp` ([PathPicker](https://github.com/facebook/PathPicker)).
|
- Для работы с файлами, список которых дала другая команда (например, Git), используйте `fpp` ([PathPicker](https://github.com/facebook/PathPicker)).
|
||||||
|
|
||||||
|
@ -177,7 +177,7 @@
|
||||||
|
|
||||||
- Знайте о `wc`: для подсчета переводов строк (`-l`), для символов – (`-m`), для слов – words (`-w`), для байтового подсчета – (`-c`).
|
- Знайте о `wc`: для подсчета переводов строк (`-l`), для символов – (`-m`), для слов – words (`-w`), для байтового подсчета – (`-c`).
|
||||||
|
|
||||||
- Знайте про `tee`, для копирования в файл из stdin и stdout, что-то типа `ls -al | tee file.txt`.
|
- Знайте про `tee` для копирования в файл из stdin и stdout, что-то типа `ls -al | tee file.txt`.
|
||||||
|
|
||||||
- Не забывайте, что Ваша локаль влияет на многие команды, включая порядки сортировки, сравнение и производительность. Многие дистрибутивы Linux автоматически выставляют `LANG` или любую другую переменную, подходящую для Вашего региона. Из-за этого результаты функций сортировки могут работать непредсказуемо. Процедуры `i18n` могут сильно снизить производительность сортировок. Можно полностью этого избежать, за редкими исключениями, сортируя традиционно побайтово, для этого – `export LC_ALL=C`.
|
- Не забывайте, что Ваша локаль влияет на многие команды, включая порядки сортировки, сравнение и производительность. Многие дистрибутивы Linux автоматически выставляют `LANG` или любую другую переменную, подходящую для Вашего региона. Из-за этого результаты функций сортировки могут работать непредсказуемо. Процедуры `i18n` могут сильно снизить производительность сортировок. Можно полностью этого избежать, за редкими исключениями, сортируя традиционно побайтово, для этого – `export LC_ALL=C`.
|
||||||
|
|
||||||
|
@ -201,11 +201,11 @@
|
||||||
|
|
||||||
- Знайте флаги `sort`а. Для чисел используйте `-n`, для работы с человекочитаемыми числами используйте `-h` (например `du -h`). Знайте, как работают ключи (`-t` и `-k`). В частности, не забывайте, что вам нужно писать `-k1,1`, чтобы отсортировать только первое поле; `-k1` означает сортировку, учитывающую всю строку. Может быть полезной *стабильная сортировка* (`sort -s`). Например, для сортировки самого важного по второму полю, а второстепенного – по первому: sort -k1,1 | sort -s -k2,2`.
|
- Знайте флаги `sort`а. Для чисел используйте `-n`, для работы с человекочитаемыми числами используйте `-h` (например `du -h`). Знайте, как работают ключи (`-t` и `-k`). В частности, не забывайте, что вам нужно писать `-k1,1`, чтобы отсортировать только первое поле; `-k1` означает сортировку, учитывающую всю строку. Может быть полезной *стабильная сортировка* (`sort -s`). Например, для сортировки самого важного по второму полю, а второстепенного – по первому: sort -k1,1 | sort -s -k2,2`.
|
||||||
|
|
||||||
- Если вам когда-нибудь придётся написать код таба в терминале, например, для сортировки по табу с флагом -t, используйте сокращение **ctrl-v** **[Tab]** или напишите `$'\t'`. Последнее лучше, потому что его можно скопировать.
|
- Если вам когда-нибудь придётся написать код символа табуляции в терминале, например, для сортировки по табуляциям с флагом -t, используйте сокращение **ctrl-v** **[Tab]** или напишите `$'\t'`. Последнее лучше, потому что его можно скопировать.
|
||||||
|
|
||||||
- Стандартные инструменты для патчинга исходников – это `diff` и `patch`. Также, посмотрите на `diffstat` для просмотра статистики диффа. `diff -r` работает по всей директории. Используйте `diff -r tree1 tree2 | diffstat` для полной сводки изменений.
|
- Стандартные инструменты для патчинга исходников – это `diff` и `patch`. Также, посмотрите на `diffstat` для просмотра статистики диффа. `diff -r` работает по всей директории. Используйте `diff -r tree1 tree2 | diffstat` для полной сводки изменений.
|
||||||
|
|
||||||
- Для бинарников используйте `hd` для простых hex-дампом и `bvi` для двоичного изменения бинарников.
|
- Для бинарников используйте `hd` для простых hex-дампов и `bvi` для двоичного изменения бинарников.
|
||||||
|
|
||||||
- `strings` (в связке с `grep` или чем-то похожим) помогает найти строки в бинарниках.
|
- `strings` (в связке с `grep` или чем-то похожим) помогает найти строки в бинарниках.
|
||||||
|
|
||||||
|
@ -225,19 +225,19 @@
|
||||||
|
|
||||||
- Дле веб-дебаггинга используйте `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`. Хороший старт для того, чтобы понимать что происходит в системе.
|
- Чтобы получить информацию о диске/CPU/сети, используйте `iostat`, `netstat`, `top` (или лучшую альтернатву `htop`) и особенно `dstat`. Хороший старт для того, чтобы понимать что происходит в системе.
|
||||||
|
|
||||||
- Для более детальной информации используйте [`glances`](https://github.com/nicolargo/glances). Эта программа показывает сразу несколько разных статистик в одном окне терминала. Полезно, когда следите за сразу несколькими системами.
|
- Для более детальной информации используйте [`glances`](https://github.com/nicolargo/glances). Эта программа показывает сразу несколько разных статистик в одном окне терминала. Полезно, когда следите за сразу несколькими системами.
|
||||||
|
|
||||||
- Для того, чтобы следить за памятью, научитесь понимать `free` и `vmstat`. В частности, не забывайте, что кешированые значения ("cached" value) – это память, которую держит ядро, и эти значения являются частью `free`.
|
- Для того, чтобы следить за памятью, научитесь понимать `free` и `vmstat`. В частности, не забывайте, что кешированые значения ("cached" value) – это память, которую держит ядро, и эти значения являются частью `free`.
|
||||||
|
|
||||||
- Дебаггинг Джавы – совсем другая рыбка, но некоторые манипуляции над виртуальной машиной Оракла или любой другой позволит вам делать `kill -3 <pid>` и трассировать сводки стека и кучи (включая детали работы сборщика мусора, которые бывают очень полезными), и их можно дампнуть в stderr или логи.
|
- Отладка Джавы – совсем другая рыбка, но некоторые манипуляции над Oracle VirtualBox или любой другой позволит вам делать `kill -3 <pid>` и трассировать сводки стека и кучи (включая детали работы сборщика мусора, которые бывают очень полезными), и их можно дампнуть в stderr или логи.
|
||||||
|
|
||||||
- Используйте `mtr` для лучшей трассировки, чтобы находить проблемы сети.
|
- Используйте `mtr` для лучшей трассировки, чтобы находить проблемы сети.
|
||||||
|
|
||||||
- Для того, чтобы узнать почему диск полностью забит, используйте `ncdu`, это экономит время по сравнению с тем же `du -sh *`.
|
- Для того, чтобы узнать почему диск полностью забит, используйте `ncdu`, это экономит время по сравнению с тем же `du -sh *`.
|
||||||
|
|
||||||
- Для того, чтобы узнать какой сокет или процесс использует интернет, используйте `iftop` или `nethogs`.
|
- Xтобы узнать какой сокет или процесс использует интернет, используйте `iftop` или `nethogs`.
|
||||||
|
|
||||||
- `ab`, которая поставляется вместе с Апачем, полезна для быстрой и нетщательной проверки производительности веб-сервера. Для более серьезного лоад-тестинга используйте `siege`.
|
- `ab`, которая поставляется вместе с Апачем, полезна для быстрой и нетщательной проверки производительности веб-сервера. Для более серьезного лоад-тестинга используйте `siege`.
|
||||||
|
|
||||||
|
@ -251,9 +251,9 @@
|
||||||
|
|
||||||
- Используйте `/proc`. Иногда он невероятно полезен для отладки запущенных программ. Примеры: `/proc/cpuinfo`, `/proc/xxx/cwd`, `/proc/xxx/exe`, `/proc/xxx/fd/`, `/proc/xxx/smaps`.
|
- Используйте `/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).
|
- Для более глубокого анализа систем и производительности посмотрите на `stap` ([SystemTap](https://sourceware.org/systemtap/wiki)), [`perf`](http://en.wikipedia.org/wiki/Perf_(Linux)) и [`sysdig`](https://github.com/draios/sysdig).
|
||||||
|
|
||||||
- Узнайте, какая у вас операционка, через `uname` или `uname -a` (основная Unix-информация/информация о ядре) или `lsb_release -a` (информация о дистрибутиве).
|
- Узнайте, какая у вас операционка, через `uname` или `uname -a` (основная Unix-информация/информация о ядре) или `lsb_release -a` (информация о дистрибутиве).
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue