diff --git a/README-ru.md b/README-ru.md index 8b18db5..799fd5f 100644 --- a/README-ru.md +++ b/README-ru.md @@ -13,6 +13,7 @@ - [Отладка системы](#Отладка-системы) - [В одну строчку](#В-одну-строчку) - [Сложно, но полезно](#Сложно-но-полезно) +- [Windows only](#windows-only) - [OS X only](#os-x-only) - [Больше информации по теме](#Больше-информации-по-теме) - [Дисклеймер](#Дисклеймер) @@ -35,7 +36,7 @@ Основное: - Данная публикация предназначена как для новичков, так и для опытных людей. Цели: *объемность* (собрать все важные аспекты использования командной строки), *практичность* (давать конкретные примеры для самых частых юзкейсов) и *краткость* (не стоит углубляться в неочевидные вещи, о которых можно почитать в другом месте). -- Этот документ написан для пользователей Linux, с единственным исключеним – секцией "[OS X only](#os-x-only)". Все остальное подходит и может быть установлено под все UNIX/OS X системы (и даже Cygwin). +- Этот документ написан для пользователей Linux, за исключеним секций "[OS X only](#os-x-only)" и "[Windows only](#windows-only)". Все остальное подходит и может быть установлено под все UNIX/OS X системы (и даже Cygwin). - Фокусируемся на интерактивном Баше, но многие вещи также могут быть использованы с другими шеллами; и в общем применимы к Баш-скриптингу. - Эта инструкция включает в себя стандартные Unix команды и те, для которых нужно устанавливать сторонние пакеты. Они настолько полезны, что стоят того, чтобы их установили. @@ -183,6 +184,14 @@ - Чтобы выполнить определённую команду с привилегиями, используйте `sudo` (для рута) и `sudo -u` (для другого пользователя). Используйте `su` или `sudo bash`, чтобы запустить шелл от имени этого пользователя. Используйте `su -`, чтобы эмулировать свежий логин от рута или другого пользователя. +- Знайте про [ограничение 128Кб](https://wiki.debian.org/CommonErrorMessages/ArgumentListTooLong) в командной строке. Ошибка "Argument list too long" часто бывает, когда маска по имени включает большое количество файлов. (В таких случаях помогают варианты с `find` или `xargs`.) + +- В качестве простого калькулятора (и, конечно, вообще для работы с Python) используйте интерпретатор `python`. Например, +``` +>>> 2+3 +5 +``` + ## Обработка файлов и информации @@ -233,7 +242,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` на деле - быстрая, с множеством возможностей, утилита для копирования файлов. Но она хороша не только для синхронизацией между машинами, но и локально. Если есть доступ, `rsync` в отличие от `scp` позволяет возобновить процесс копирования, не начиная заново. Он также является [самым быстрым способом](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 ``` @@ -263,6 +272,13 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - Используйте `zless`, `zmore`, `zcat`, и `zgrep` для работы со сжатыми файлами. +- `chattr` устанавливает атрибуты файлов, которые также являются низкоуровневой альтернативой правам доступа. Например, от случайного удаления файла защитит атрибут неизменяемости: `sudo chattr +i /critical/directory/or/file` + +- Используйте `getfacl` и `setfacl` для сохранения и восстановления файловых прав доступа. Например: +```sh + getfacl -R /some/path > permissions.txt + setfacl --restore=permissions.txt +``` ## Отладка системы @@ -304,6 +320,9 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - Используйте `dmesg`, когда что-то ведет себя совсем странно (например, железо или драйвера). +- Если вы удалили файл и это вопреки ожиданиям не освободило место на диске, как показывает `du`, проверьте, использует ли файл какой-нибудь процесс: +`lsof | grep deleted | grep "filename-of-my-big-file"` + ## В одну строчку @@ -519,6 +538,23 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir - Чтобы получить информацию о версии OS X используйте `sw_vers`. +## Windows only + +- Используйте силу Unix shell в Microsoft Windows, установив [Cygwin](https://cygwin.com/). Большая часть описанных в этом документе возможностей заработает сразу. + +- Установите еще Unix программ с помощью встроенного в Cygwin менеджера пакетов. + +- Используйте `mintty` в качестве терминала. + +- Работайте с буфером обмена Windows с помощью `/dev/clipboard`. + +- Запустите `cygstart`, чтобы открыть файл в приложении по умолчанию. + +- Работайте с реестром Windows с помощью `regtool`. + +- Имейте в виду, что виндовый диск `C:\` доступен в Cygwin по пути `/cygdrive/c`, и cygwin''ский `/` является папкой `C:\cygwin` в Windows. Конвертируйте файловые пути в виндовые и обратно с помощью `cygpath`. Это самый полезный скрипт, который запускает программы Windows. + +- Вы можете запускать и автоматизировать большинство задач по администрированию Windows из командной строк, освоив `wmic`. ## Больше информации по теме @@ -531,7 +567,7 @@ mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir ## Дисклеймер -За небольшим исключением, весь код написан так, чтобы другие его смогли прочитать. Кому много дано, с того много и спрашивается. Тот факт, что что-то может быть написано на Баше, вовсе не означает, что оно должно быть на нём написано. ;) +За небольшим исключением, весь код написан так, чтобы другие его смогли прочитать. С большой силой приходит большая ответственность. Из того, что вы *способны* что-то сделать в Баше, вовсе не следует, что это нужно делать! ;) ## Лицензия