From 0dba6d474af854f069b49e84fce094975461a38c Mon Sep 17 00:00:00 2001 From: spmbt Date: Thu, 9 Jul 2015 20:06:56 +0300 Subject: [PATCH] =?UTF-8?q?MacOS=20X,=20Full-"=D1=91",=20little=20more?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README-ru.md | 40 ++++++++++++++++++++-------------------- README.md | 2 +- 2 files changed, 21 insertions(+), 21 deletions(-) diff --git a/README-ru.md b/README-ru.md index 176d17b..168b416 100644 --- a/README-ru.md +++ b/README-ru.md @@ -29,7 +29,7 @@ Основное: -- Данная публикация предназначена как для новичков, так и для опытных людей. Цели: *объемность* (собрать все важные аспекты использования командной строки), *практичность* (давать конкретные примеры для самых частых юзкейсов) и *краткость* (не стоит углубляться в неочевидные вещи, о которых можно почитать в другом месте). +- Данная публикация предназначена как для новичков, так и для опытных людей. Цели: *объёмность* (собрать все важные аспекты использования командной строки), *практичность* (давать конкретные примеры для самых частых юзкейсов) и *краткость* (не стоит углубляться в неочевидные вещи, о которых можно почитать в другом месте). - Этот документ написан для пользователей Linux, с единственным исключением – секцией "[MacOS only](#macos-only)". Всё остальное подходит и может быть установлено под все UNIX/MacOS системы (и даже Cygwin). - Фокусируемся на интерактивном Баше, но многие вещи также могут быть использованы с другими шеллами; и в общем применимы к Баш-скирптингу. - Эта инструкция включает в себя стандартные Unix-команды и те, для которых нужно устанавливать сторонние пакеты – они настолько полезны, что стоят того, чтобы их установили. @@ -44,7 +44,7 @@ - Выучите основы Баша. Просто возьмите и напечатайте `man bash` в терминале и хотя бы просмотрите его; он довольно просто читается и он не очень большой. Другие шеллы тоже могут быть хороши, но Баш – мощная программа, и Баш всегда под рукой (использование *исключительно* zsh, fish и т.д., которые наверняка круто выглядят на Вашем ноуте, во многом Вас ограничивает: например, Вы не сможете использовать возможности этих шеллов на уже существующем сервере). -- Выучите хотя бы один консольный редактор текста. Идеально – Vim (`vi`), ведь у него нет конкурентов, когда вам нужно быстренько что-то подправить (даже если Вы постоянно сидите на Emacs или какой-нибудь тяжелой IDE, или на модном хипстерском редакторе). +- Выучите хотя бы один консольный редактор текста. Идеально – Vim (`vi`), ведь у него нет конкурентов, когда вам нужно быстренько что-то подправить (даже если Вы постоянно сидите на Emacs или какой-нибудь тяжёлой IDE, или на модном хипстерском редакторе). - Знайте, как читать документацию через `man` (для любознательных – `man man`; `man` по углам документа в скобках добавляет номер, например 1 – для обычных команд, 5 – для файлов, конвенций, 8 – для администативных команд). Ищите мануалы через `apropos` и помните, что некоторые команды – не бинарники, а встроенные команды Баша, и помощь по ним можно получить через `help` и `help -d`. @@ -56,13 +56,13 @@ - Знайте `ssh` и основы беспарольной аутентификации через `ssh-agent`, `ssh-add`, и т.д. -- Основы работы с файлами: `ls` и `ls -l` (в частности, узнайте, что значит каждый столбец в `ls -l`), `less`, `head`, `tail` и `tail -f` (или даже лучше – `less +F`), `ln` и `ln -s` (узнайте разницу между символьными ссылками и жесткими ссылками, и почему жесткие ссылки лучше), `chown`, `chmod`, `du` (для быстрой сводки по использованию диска: `du -hk *`). Для менеджмента файловой системы, `df`, `mount`, `fdisk`, `mkfs`, `lsblk`. +- Основы работы с файлами: `ls` и `ls -l` (в частности, узнайте, что значит каждый столбец в `ls -l`), `less`, `head`, `tail` и `tail -f` (или даже лучше – `less +F`), `ln` и `ln -s` (узнайте разницу между символьными ссылками и жёсткими ссылками, и почему жёсткие ссылки лучше), `chown`, `chmod`, `du` (для быстрой сводки по использованию диска: `du -hk *`). Для менеджмента файловой системы, `df`, `mount`, `fdisk`, `mkfs`, `lsblk`. - Основы работы с сетью: `ip` или `ifconfig`, `dig`. - Хорошо знайте регулярные выражения и разные флаги к `grep`/`egrep`. Такие флаги, как `-i`, `-o`, `-A`, и `-B` – стоит знать. -- Обучитесь использованию системами управления пакетами `apt-get`, `yum`, `dnf` или `pacman` (в зависимости от дистрибутива). Знайте, как искать и устанавливать пакеты и обязательно имейте установленым `pip` для установки командных утилит, написаных на Python (некоторые из тех, что вы найдете ниже, легче всего установить через `pip`). +- Обучитесь использованию системами управления пакетами `apt-get`, `yum`, `dnf` или `pacman` (в зависимости от дистрибутива). Знайте, как искать и устанавливать пакеты и обязательно имейте установленым `pip` для установки командных утилит, написаных на Python (некоторые из тех, что вы найдёте ниже, легче всего установить через `pip`). ## Ежедневное использование @@ -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`. -- Вывод любой команды можно сохранить в файлоподобный контекст по `<(some command)`. Например, сравнение локального файла `/etc/hosts с удаленным: +- Вывод любой команды можно сохранить в файлоподобный контекст по `<(some command)`. Например, сравнение локального файла `/etc/hosts с удалённым: ```sh diff /etc/hosts <(ssh somehost cat /etc/hosts) ``` @@ -121,9 +121,9 @@ - Используйте `man ascii` для хорошей ASCII таблицы, с hex и десятичными значениями. Для информации по основным кодировкам полезны: `man unicode`, `man utf-8`, и `man latin1`. -- Используйте `screen` или [`tmux`](https://tmux.github.io/), чтобы иметь несколько экранов в одном терминале; это особенно полезно, когда вы работаете с удаленным сервером. Тогда Вы можете подключаться к/отключаться от сессий. Более лаконичный подход для этого – использование `dtach`. +- Используйте `screen` или [`tmux`](https://tmux.github.io/), чтобы иметь несколько экранов в одном терминале; это особенно полезно, когда вы работаете с удалённым сервером. Тогда Вы можете подключаться к/отключаться от сессий. Более лаконичный подход для этого – использование `dtach`. -- В SSH полезно знать [туннелирование](https://ru.wikibooks.org/wiki/SSH_%D1%82%D1%83%D0%BD%D0%BD%D0%B5%D0%BB%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5) с флагами `-L` и `-D` (и иногда `-R`), чтобы зайти на сайт с удаленного сервера. +- В SSH полезно знать [туннелирование](https://ru.wikibooks.org/wiki/SSH_%D1%82%D1%83%D0%BD%D0%BD%D0%B5%D0%BB%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5) с флагами `-L` и `-D` (и иногда `-R`), чтобы зайти на сайт с удалённого сервера. - Ещё может быть полезно оптимизировать вашу SSH-конфигурацию, например, файл `~/.ssh/config` содержит настройки, которые помогают избегать потерянные подключения в некоторых сетевых окружениях. Используйте сжатие (которое полезно с scp через медленные подключения) и увеличьте количество каналов к одному серверу через этот конфиг: ``` @@ -150,7 +150,7 @@ - Чтобы быстро поднять веб-сервер в текущей директории (и поддерикториях), который доступен для всех в вашей сети, используйте: `python -m SimpleHTTPServer 7777` (если у вас Python 2, и вы хотите открыть сервер на порту 7777) или `python -m http.server 7777` (для Python 3 и порта 7777). -- Чтобы выполнить определенную команду с привилегиями, используйте `sudo` (для рута) и `sudo -u` (для другого пользователя). Используйте `su` или `sudo bash`, чтобы запустить шелл от имени этого пользователя. Используйте `su -`, чтобы симулировать свежий логин от рута или другого пользователя. +- Чтобы выполнить определённую команду с привилегиями, используйте `sudo` (для рута) и `sudo -u` (для другого пользователя). Используйте `su` или `sudo bash`, чтобы запустить шелл от имени этого пользователя. Используйте `su -`, чтобы симулировать свежий логин от рута или другого пользователя. ## Процессинг файлов и информации @@ -175,7 +175,7 @@ - Знайте про `cut`, `paste`, и `join` для работы с текстовыми файлами. Многие люди используют `cut`, забыв про `join`. -- Знайте о `wc`: для подсчета переводов строк (`-l`), для символов – (`-m`), для слов – words (`-w`), для байтового подсчета – (`-c`). +- Знайте о `wc`: для подсчёта переводов строк (`-l`), для символов – (`-m`), для слов – words (`-w`), для байтового подсчёта – (`-c`). - Знайте про `tee` для копирования в файл из stdin и stdout, что-то типа `ls -al | tee file.txt`. @@ -193,7 +193,7 @@ ```sh # Восстановить бекапы из foo.bak в foo: rename 's/\.bak$//' *.bak - # Полное переименование имен файлов, папок и содержимого файлов из foo в bar. + # Полное переименование имён файлов, папок и содержимого файлов из foo в bar. repren --full --preserve-case --from foo --to bar . ``` @@ -239,9 +239,9 @@ - Xтобы узнать какой сокет или процесс использует интернет, используйте `iftop` или `nethogs`. -- `ab`, которая поставляется вместе с Апачем, полезна для быстрой и нетщательной проверки производительности веб-сервера. Для более серьезного лоад-тестинга используйте `siege`. +- `ab`, которая поставляется вместе с Апачем, полезна для быстрой и нетщательной проверки производительности веб-сервера. Для более серьёзного лоад-тестинга используйте `siege`. -- Для более серьезного дебаггинга сетей используйте `wireshark`, `tshark`, и `ngrep`. +- Для более серьёзного дебаггинга сетей используйте `wireshark`, `tshark`, и `ngrep`. - Знайте про `strace` и `ltrace`. Эти команды могут быть полезны, если программа падает или висит и вы не знаете, почему, или если хотите протестировать производительность программы. Не забывайте про возможность отладки (`-c`) возможностью подключиться к процессу (`-p`). @@ -261,9 +261,9 @@ ## В одну строчку -Давайте соберем всё вместе и напишем несколько команд: +Давайте соберём всё вместе и напишем несколько команд: -- Это довольно круто, что можно найти множественные пересечения файлов, соединить отсортированные файлы и посмотреть разницу в нескольких файлов через `sort`/`uniq`. Это быстрый подход и работает на файлах любого размера (включая многогигабайтные файлы). (Сортировка не ограничена памятью, но возможно вам придется добавить `-T` если `/tmp` находится на небольшом логическом диске). Ещё посмотрите то, что было сказано выше о `LC_ALL`. Флаг сорта `-u` option не используется ниже, чтобы было понятнее: +- Это довольно круто, что можно найти множественные пересечения файлов, соединить отсортированные файлы и посмотреть разницу в нескольких файлов через `sort`/`uniq`. Это быстрый подход и работает на файлах любого размера (включая многогигабайтные файлы). (Сортировка не ограничена памятью, но возможно вам придётся добавить `-T` если `/tmp` находится на небольшом логическом диске). Ещё посмотрите то, что было сказано выше о `LC_ALL`. Флаг сорта `-u` option не используется ниже, чтобы было понятнее: ```sh cat a b | sort | uniq > c # c is a union b cat a b | sort | uniq -d > c # c is a intersect b @@ -273,7 +273,7 @@ - Используйте `grep . *` для того, чтобы посмотреть содержимое всех файлов в директории, особенно полезно, когда у вас много конфигов типа `/sys`, `/proc`, `/etc`. -- Получить сумму всех чисел, которые находятся в третьей колонке текстового файла. (Скорее всего, это раза в 3 быстрее и раза в 3 проще чем делать это в Питоне): +- Получить сумму всех чисел, которые находятся в третьей колонке текстового файла. (Скорее всего, это раза в 3 быстрее и раза в 3 проще, чем делать это в Питоне): ```sh awk '{ x += $3 } END { print x }' myfile ``` @@ -282,7 +282,7 @@ ```sh find . -type f -ls ``` -Это почти как рекурсивная `ls -l, но более читабельно чем `ls -lR`: +Это почти как рекурсивная `ls -l, но читабельнее, чем `ls -lR`: - Используйте `xargs` (или `parallel`). Это очень мощная штука. Обратите внимание, что Вы можете контролировать количество команд на каждую строку, а также параллельность. Если Вы не уверены, что делаете что-то правильно, начните с `xargs echo`. Ещё `-I{}` – полезная штука. Примеры: ```sh @@ -407,11 +407,11 @@ - `lsof`: процессинг дискрипторов и информация о сокетах -- `dstat`: полезная статистика системы +- `dstat`: полезная статистика ОС -- [`glances`](https://github.com/nicolargo/glances): высокоуровневая, многосистемная статистика +- [`glances`](https://github.com/nicolargo/glances): высокоуровневая статистика по многим подсистемам -- `iostat`: статистика CPU и использования жесткого диска +- `iostat`: статистика процессора и использования жёсткого диска - `htop`: улучшенная версия top @@ -439,7 +439,7 @@ - `fortune`, `ddate`, и `sl`: хм, не знаю, будут ли вам "полезны" весёлые цитатки и поезда, пересекающие ваш терминал :) -## MacOS only +## MacOS X only Некоторые вещи, подходящие *только* для Мака. diff --git a/README.md b/README.md index 67076d4..5ffa5b7 100644 --- a/README.md +++ b/README.md @@ -443,7 +443,7 @@ A few examples of piecing together commands: - `fortune`, `ddate`, and `sl`: um, well, it depends on whether you consider steam locomotives and Zippy quotations "useful" -## MacOS only +## MacOS X only These are items relevant *only* on MacOS.