UNPKG

arch-wiki-md-repo

Version:

All arch-wiki articles in markdown format, updated every two days.

489 lines (312 loc) 37.9 kB
Ссылки по теме * [Bash (Русский)](/index.php/Bash_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9) "Bash (Русский)") * [Zsh](/index.php/Zsh "Zsh") * [Основные рекомендации](/index.php/%D0%9E%D1%81%D0%BD%D0%BE%D0%B2%D0%BD%D1%8B%D0%B5_%D1%80%D0%B5%D0%BA%D0%BE%D0%BC%D0%B5%D0%BD%D0%B4%D0%B0%D1%86%D0%B8%D0%B8 "Основные рекомендации") * [GNU Project](/index.php/GNU_Project "GNU Project") * [sudo (Русский)](/index.php/Sudo_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9) "Sudo (Русский)") * [cron](/index.php/Cron "Cron") * [File system search](/index.php/File_system_search "File system search") * [Страница справочного руководства](/index.php/%D0%A1%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D0%B0_%D1%81%D0%BF%D1%80%D0%B0%D0%B2%D0%BE%D1%87%D0%BD%D0%BE%D0%B3%D0%BE_%D1%80%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%B0 "Страница справочного руководства") * [Securely wipe disk#shred](/index.php/Securely_wipe_disk#shred "Securely wipe disk") * [File permissions and attributes](/index.php/File_permissions_and_attributes "File permissions and attributes") **Состояние перевода:** На этой странице представлен перевод статьи [Core utilities](/index.php/Core_utilities "Core utilities"). Дата последней синхронизации: 2015-03-07\. Вы можете [помочь](/index.php/ArchWiki_Translation_Team_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9) "ArchWiki Translation Team (Русский)") синхронизировать перевод, если в английской версии произошли [изменения](https://wiki.archlinux.org/index.php?title=Core_utilities&diff=0&oldid=364226). Эта статья описывает так называемые *базовые* утилиты для системы GNU/Linux, такие как *less*, *ls* и *grep*. В этой статье будут описаны утилиты GNU, находящиеся в пакете [coreutils](https://www.archlinux.org/packages/?name=coreutils), а также некоторые другие. Ниже будут описаны различные полезные советы и другая полезная информация, связанная с этими утилитами. ## Contents * [1 Основные команды](#.D0.9E.D1.81.D0.BD.D0.BE.D0.B2.D0.BD.D1.8B.D0.B5_.D0.BA.D0.BE.D0.BC.D0.B0.D0.BD.D0.B4.D1.8B) * [2 cat](#cat) * [3 dd](#dd) * [3.1 Проверка прогресса dd во время исполнения](#.D0.9F.D1.80.D0.BE.D0.B2.D0.B5.D1.80.D0.BA.D0.B0_.D0.BF.D1.80.D0.BE.D0.B3.D1.80.D0.B5.D1.81.D1.81.D0.B0_dd_.D0.B2.D0.BE_.D0.B2.D1.80.D0.B5.D0.BC.D1.8F_.D0.B8.D1.81.D0.BF.D0.BE.D0.BB.D0.BD.D0.B5.D0.BD.D0.B8.D1.8F) * [3.1.1 Используя pipe viewer](#.D0.98.D1.81.D0.BF.D0.BE.D0.BB.D1.8C.D0.B7.D1.83.D1.8F_pipe_viewer) * [3.2 Аналоги для dd](#.D0.90.D0.BD.D0.B0.D0.BB.D0.BE.D0.B3.D0.B8_.D0.B4.D0.BB.D1.8F_dd) * [4 grep](#grep) * [4.1 Разноцветный вывод](#.D0.A0.D0.B0.D0.B7.D0.BD.D0.BE.D1.86.D0.B2.D0.B5.D1.82.D0.BD.D1.8B.D0.B9_.D0.B2.D1.8B.D0.B2.D0.BE.D0.B4) * [4.2 Стандартная ошибка](#.D0.A1.D1.82.D0.B0.D0.BD.D0.B4.D0.B0.D1.80.D1.82.D0.BD.D0.B0.D1.8F_.D0.BE.D1.88.D0.B8.D0.B1.D0.BA.D0.B0) * [5 iconv](#iconv) * [5.1 Конвертирование файла на месте](#.D0.9A.D0.BE.D0.BD.D0.B2.D0.B5.D1.80.D1.82.D0.B8.D1.80.D0.BE.D0.B2.D0.B0.D0.BD.D0.B8.D0.B5_.D1.84.D0.B0.D0.B9.D0.BB.D0.B0_.D0.BD.D0.B0_.D0.BC.D0.B5.D1.81.D1.82.D0.B5) * [6 ip](#ip) * [7 less](#less) * [7.1 Цветной вывод с помощью переменных окружения](#.D0.A6.D0.B2.D0.B5.D1.82.D0.BD.D0.BE.D0.B9_.D0.B2.D1.8B.D0.B2.D0.BE.D0.B4_.D1.81_.D0.BF.D0.BE.D0.BC.D0.BE.D1.89.D1.8C.D1.8E_.D0.BF.D0.B5.D1.80.D0.B5.D0.BC.D0.B5.D0.BD.D0.BD.D1.8B.D1.85_.D0.BE.D0.BA.D1.80.D1.83.D0.B6.D0.B5.D0.BD.D0.B8.D1.8F) * [7.2 Цветной вывод с помощью программ-обёрток](#.D0.A6.D0.B2.D0.B5.D1.82.D0.BD.D0.BE.D0.B9_.D0.B2.D1.8B.D0.B2.D0.BE.D0.B4_.D1.81_.D0.BF.D0.BE.D0.BC.D0.BE.D1.89.D1.8C.D1.8E_.D0.BF.D1.80.D0.BE.D0.B3.D1.80.D0.B0.D0.BC.D0.BC-.D0.BE.D0.B1.D1.91.D1.80.D1.82.D0.BE.D0.BA) * [7.3 Vim в качестве альтернативного просмотрщика](#Vim_.D0.B2_.D0.BA.D0.B0.D1.87.D0.B5.D1.81.D1.82.D0.B2.D0.B5_.D0.B0.D0.BB.D1.8C.D1.82.D0.B5.D1.80.D0.BD.D0.B0.D1.82.D0.B8.D0.B2.D0.BD.D0.BE.D0.B3.D0.BE_.D0.BF.D1.80.D0.BE.D1.81.D0.BC.D0.BE.D1.82.D1.80.D1.89.D0.B8.D0.BA.D0.B0) * [7.4 Цветной вывод при чтении с stdin](#.D0.A6.D0.B2.D0.B5.D1.82.D0.BD.D0.BE.D0.B9_.D0.B2.D1.8B.D0.B2.D0.BE.D0.B4_.D0.BF.D1.80.D0.B8_.D1.87.D1.82.D0.B5.D0.BD.D0.B8.D0.B8_.D1.81_stdin) * [8 ls](#ls) * [9 mkdir](#mkdir) * [10 mv](#mv) * [11 rm](#rm) * [12 sed](#sed) * [13 seq](#seq) * [14 Смотрите также](#.D0.A1.D0.BC.D0.BE.D1.82.D1.80.D0.B8.D1.82.D0.B5_.D1.82.D0.B0.D0.BA.D0.B6.D0.B5) ## Основные команды В таблице ниже привидены основные shell команды, которые должен знать каждый пользователь Linux. Команды, выделенные **жирным** являются частью shell, остальные программы являются внешними и вызываются shell'ом. Смотрите нижеследующие разделы и *Статьи по теме* для дополнительной информации. | Команда | Описание | Пример | | man | Показать страницу справочного руководства по программе | man ed | | **cd** | Сменить директорию | cd /etc/pacman.d | | mkdir | Создать директорию | mkdir ~/newfolder | | rmdir | Удалить пустую директорию | rmdir ~/emptyfolder | | rm | Удалить файл | rm -r ~/file.txt | | rm -r | Удалить директорию с её содержимым | rm -r ~/.cache | | ls | Отобразить список файлов | ls *.avi | | ls -a | Отобразить скрытые файлы | ls -a /home/archie | | ls -al | Отобразить скрытые файлы и их свойства | | mv | Переместить файл | mv ~/compressed.zip ~/archive/compressed2.zip | | cp | Скопировать файл | cp ~/.bashrc ~/.bashrc.bak | | chmod +x | Сделать файл исполняемым | chmod +x ~/.local/bin/myscript.sh | | cat | Отобразить содержимое файла | cat /etc/hostname | | strings | Отобразить печатные символы в бинарных файлах | strings /usr/bin/free | | find | Поиск файла | find ~ -name myfile | | mount | Монтирование раздела | mount /dev/sdc1 /media/usb | | df -h | Отобразить оставшееся место на всех разделах | | ps -A | Отобразить все выполняющиеся процессы | | killall | Убить все запущенные экземпляры процесса | ## cat [cat](https://en.wikipedia.org/wiki/ru:Cat "wikipedia:ru:Cat") (*объединить*) - это стандартная Unix утилита для конкатенации и отображения файлов. * Поскольку *cat* не встроена в shell, во многих случаях более подходящим может оказаться использование [перенаправлений](https://en.wikipedia.org/wiki/ru:%D0%9F%D0%B5%D1%80%D0%B5%D0%BD%D0%B0%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%D0%B2%D0%B2%D0%BE%D0%B4%D0%B0-%D0%B2%D1%8B%D0%B2%D0%BE%D0%B4%D0%B0 "wikipedia:ru:Перенаправление ввода-вывода"), например в скриптах или когда вам важна производительность. На самом деле `< *файл*` делает то же самое, что и `cat *файл*`. * *cat* может работать с несколькими строками, хотя иногда это расценивается как плохая практика: ``` $ cat << EOF >> *путь/файл* *первая строка* ... *последняя строка* EOF ``` Более хорошей альтернативой является команда *echo*: ``` $ echo "\ *первая строка* ... *последняя строка*" \ >> *путь/файл* ``` * Если вам нужно отобразить строки файла в обратном порядке, воспользуйтесь утилитой [tac](https://en.wikipedia.org/wiki/tac_(Unix) (*cat* в обратную сторону). ## dd [dd](https://en.wikipedia.org/wiki/ru:dd "wikipedia:ru:dd") - это команда Unix и Unix подобных операционных систем, основным назначением которой является конвертация и копирование файлов. **Примечание:** *cp* может делать то же самое, что и *dd* без каких либо операндов, однако она не предназначена для более гибких процедур зачисток диска. ### Проверка прогресса dd во время исполнения По умолчанию *dd* ничего не выводит на экран до того момента, как задание будет выполнено. При помощи команды *kill* и сигнала `USR1` вы можете заставить её вывести статус, а программа на самом деле не будет убита. Откройте ещё один терминал с правами root и выполните следующую команду: ``` # killall -USR1 dd ``` **Примечание:** Это также затронет все остальные выполняющиеся процессы *dd*. Или: ``` # kill -USR1 *pid_команды_dd* ``` Например: ``` # kill -USR1 $(pidof dd) ``` При этом *dd* немедленно выведет свой прогресс в терминале. Например: ``` 605+0 records in 605+0 records out 634388480 bytes (634 MB) copied, 8.17097 s, 77.6 MB/s ``` #### Используя pipe viewer В качестве альтернативного варианта вы можете использовать [pv](https://www.archlinux.org/packages/?name=pv), чтобы просматривать dd поток: ``` # dd if=*/source/filestream* | pv -*monitor_options* -s *size_of_file* | dd of=*/destination/filestream* ``` Чтобы было проще использовать pipe viewer, вы можете добавить это в ваш bashrc или zshrc: ``` copy() { size=$(stat -c%s $1) dd if=$1 &> /dev/null | pv -petrb -s $size | dd of=$2 } ``` И использовать следующим образом: ``` # copy */source/file* */destination/file* ``` ### Аналоги для dd Другие аналогичные *dd* программы могут периодически выводить статус, например в виде простой полосы прогресса. dcfldd  [dcfldd](https://www.archlinux.org/packages/?name=dcfldd) - это расширенная версия программы dd с дополнительными полезными возможностями для восстановления(?) и безопасности. Она принимает большинство из параметров для dd и включает вывод статуса. Последняя стабильная версия dcfldd вышла 19 декабря 2006. ddrescue  GNU [ddrescue](https://www.archlinux.org/packages/?name=ddrescue) - это инструмент для восстановления данных. Он умеет игнорировать ошибки чтения, однако почти во всех случаях не подходит для зачистки диска. Смотрите [официальную документацию](http://www.gnu.org/software/ddrescue/manual/ddrescue_manual.html) для подробностей. ## grep [grep](https://en.wikipedia.org/wiki/ru:grep "wikipedia:ru:grep") (произошло от [ed](https://en.wikipedia.org/wiki/ed "wikipedia:ed") *g/re/p*, *глобально/регулярное выражение/печатать*) - это утилита для текстового поиска из командной строки, изначально созданная для Unix. Команда *grep* глобально ищет в файле или в потоке стандартного ввода строки, удовлетворяющие заданному регулярному выражению и печатает их на свой стандартный вывод. * Запомните, что *grep* обрабатывает файлы, так что такие конструкции как `cat *файл* | grep *паттерн*` можно заменить на `grep *паттерн* *файл*` * Существуют альтернативы *grep*, оптимизированные для VCS исходного кода, такие как [the_silver_searcher](https://www.archlinux.org/packages/?name=the_silver_searcher) и [ack](https://www.archlinux.org/packages/?name=ack). ### Разноцветный вывод Цветовой вывод команды `grep` может быть полезен для изучения [регулярных выражений](https://en.wikipedia.org/wiki/ru:%D0%A0%D0%B5%D0%B3%D1%83%D0%BB%D1%8F%D1%80%D0%BD%D1%8B%D0%B5_%D0%B2%D1%8B%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F "wikipedia:ru:Регулярные выражения") и другой функциональности `grep`. Чтобы включить цветной текст в *grep* напишите следующую запись в конфигурационном файле shell'а (например, если вы используете [bash](/index.php/Bash_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9) "Bash (Русский)")): `~/.bashrc` `alias grep='grep --color=auto'` Чтобы в выводе отображались номера строк файла, добавьте опцию `-n`. Для задания цвета подсветки по умолчанию может быть использована переменная окружения `GREP_COLOR` (по умолчанию используется красный). Чтобы изменить цвет, найдите [ANSI escape последовательность](http://www.tldp.org/HOWTO/Bash-Prompt-HOWTO/x329.html) для понравившегося вам цвета и добавьте её: ``` export GREP_COLOR="1;32" ``` `GREP_COLORS` можно использовать для задания цвета специфичного поиска. ### Стандартная ошибка Некоторые команды отправляют свой вывод в стандартный поток ошибок, а grep не имеет такого эффекта. В этом случае перенаправьте стандартный поток ошибок прямо в стандартный поток вывода: ``` $ *command* 2>&1 | grep *args* ``` или упрощённый вариант для Bash 4: ``` $ *command* |& grep *args* ``` Смотрите также [Перенаправление ввода/вывода](http://www.tldp.org/LDP/abs/html/io-redirection.html). ## iconv `iconv` перекодирует символы из одной кодировки в другую. Следующая команда сконвертирует файл `foo` из кодировки ISO-8859-15 в UTF-8, сохранив конечный файл как `foo.utf`: ``` $ iconv -f ISO-8859-15 -t UTF-8 foo >foo.utf ``` Смотрите [iconv(1)](https://jlk.fjfi.cvut.cz/arch/manpages/man/iconv.1) для дополнительной информации. ### Конвертирование файла на месте **Совет:** Если вы не хотите изменять время модификации файла, вы можете использовать [recode](https://www.archlinux.org/packages/?name=recode) вместо iconv. В отличие от [sed](#sed), *iconv* не предоставляет опции для конвертирования файла на месте. Однако для его обработки можно использовать `sponge`, который распространяется в пакете [moreutils](https://www.archlinux.org/packages/?name=moreutils). ``` $ iconv -f WINDOWS-1251 -t UTF-8 foobar.txt | sponge foobar.txt ``` Смотрите [sponge(1)](https://jlk.fjfi.cvut.cz/arch/manpages/man/sponge.1) для дополнительной информации. ## ip [ip](https://en.wikipedia.org/wiki/ru:Iproute2 "wikipedia:ru:Iproute2") позволяет вам узнать информацию о сетевых устройствах, IP адресах, таблицах маршрутизации и о других объектах программного обеспечения [IP](https://en.wikipedia.org/wiki/ru:IP "wikipedia:ru:IP") стека в Linux. При помощи добавления различных команд вы также можете манипулировать и настраивать большинство из этих объектов. **Примечание:** Утилита *ip* распространяется в пакете [iproute2](https://www.archlinux.org/packages/?name=iproute2), который включён в группу [base](https://www.archlinux.org/groups/x86_64/base/). | Объект | Назначение | Название страницы руководства | | ip addr | управление адресом протокола | ip-address | | ip addrlabel | управление названиями адресов протокола | ip-addrlabel | | ip l2tp | туннель Ethernet по IP (L2TPv3) | ip-l2tp | | ip link | настройка сетевых устройств | ip-link | | ip maddr | управление широковещательными адресами | ip-maddress | | ip monitor | просматривать сообщения netlink | ip-monitor | | ip mroute | управление кешем широковещательной маршрутизации | ip-mroute | | ip mrule | правила в бд политики широковещательной маршрутизации | | ip neigh | управление таблицами neighbour/ARP | ip-neighbour | | ip netns | управление обработкой сетевого пространства имён | ip-netns | | ip ntable | настройка таблицы соседей | ip-ntable | | ip route | настройка таблицы маршрутизации | ip-route | | ip rule | управление базой данных политики маршрутизации | ip-rule | | ip tcp_metrics | управление показателями TCP | ip-tcp_metrics | | ip tunnel | настройка туннелей | ip-tunnel | | ip tuntap | управление TUN/TAP устройствами | | ip xfrm | управление политиками IPsec | ip-xfrm | Для всех объектов доступна команда `help`. Например, выполните `ip addr help`, чтобы узнать синтаксис команды для объекта address. Для продвинутого использования смотрите [документацию iproute2](http://www.policyrouting.org/iproute2.doc.html). Статья [Настройка сети](/index.php/%D0%9D%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0_%D1%81%D0%B5%D1%82%D0%B8 "Настройка сети") объясняет как использовать команду *ip* на практике в различных типовых случаях. **Примечание:** Возможно вы знаете команду [ifconfig](https://en.wikipedia.org/wiki/ru:ifconfig "wikipedia:ru:ifconfig"), которая использовалась в старых версиях Linux для настройки интерфейсов. Теперь она устарела в Arch Linux; вы должны вместо неё использовать *ip*. ## less [less](https://en.wikipedia.org/wiki/ru:less "wikipedia:ru:less") - это прогрмма для постраничного просмотра в терминале содержимого текстовых файлов. Несмотря на то, что он похож на другие пейджеры, такие как [more](https://en.wikipedia.org/wiki/ru:more "wikipedia:ru:more") и [pg](https://en.wikipedia.org/wiki/pg_(Unix) "wikipedia:pg (Unix)"), *less* предоставляет более продвинутый интерфейс и полноценный [функционал](http://www.greenwoodsoftware.com/less/faq.html). Смотрите альтернативы в [Список приложений#Консольные утилиты постраничного просмотра](/index.php/%D0%A1%D0%BF%D0%B8%D1%81%D0%BE%D0%BA_%D0%BF%D1%80%D0%B8%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D0%B9#.D0.9A.D0.BE.D0.BD.D1.81.D0.BE.D0.BB.D1.8C.D0.BD.D1.8B.D0.B5_.D1.83.D1.82.D0.B8.D0.BB.D0.B8.D1.82.D1.8B_.D0.BF.D0.BE.D1.81.D1.82.D1.80.D0.B0.D0.BD.D0.B8.D1.87.D0.BD.D0.BE.D0.B3.D0.BE_.D0.BF.D1.80.D0.BE.D1.81.D0.BC.D0.BE.D1.82.D1.80.D0.B0 "Список приложений"). ### Цветной вывод с помощью переменных окружения Добавьте следующие строки в ваш конфигурационный файл для shell: `~/.bashrc` ``` export LESS=-R export LESS_TERMCAP_me=$(printf '\e[0m') export LESS_TERMCAP_se=$(printf '\e[0m') export LESS_TERMCAP_ue=$(printf '\e[0m') export LESS_TERMCAP_mb=$(printf '\e[1;32m') export LESS_TERMCAP_md=$(printf '\e[1;34m') export LESS_TERMCAP_us=$(printf '\e[1;32m') export LESS_TERMCAP_so=$(printf '\e[1;44;1m') ``` Можете изменять значения на предпочитаемые вами. Ссылки: [Управляющие последовательности ANSI](https://en.wikipedia.org/wiki/ru:%D0%A3%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D1%8F%D1%8E%D1%89%D0%B8%D0%B5_%D0%BF%D0%BE%D1%81%D0%BB%D0%B5%D0%B4%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D0%BE%D1%81%D1%82%D0%B8_ANSI "wikipedia:ru:Управляющие последовательности ANSI"). ### Цветной вывод с помощью программ-обёрток Вы можете включить подсветку синтаксиса кода в *less*. Сначала установите [source-highlight](https://www.archlinux.org/packages/?name=source-highlight), затем добавьте следующие строки в ваш конфигурационный файл для shell: `~/.bashrc` ``` export LESSOPEN="| /usr/bin/source-highlight-esc.sh %s" export LESS='-R ' ``` Пользователи, часто работающие в командной строке могут установить [lesspipe](https://www.archlinux.org/packages/?name=lesspipe). Теперь вы можете отображать список сжатых файлов внутри архива при помощи вашего пейджера: `$ less *сжатый_файл*.tar.gz` ``` ==> use tar_file:contained_file to view a file in the archive -rw------- *username*/*group* 695 2008-01-04 19:24 *сжатый_файл*/*content1* -rw------- *username*/*group* 43 2007-11-07 11:17 *сжатый_файл*/*content2* *сжатый_файл*.tar.gz (END) ``` Также *lesspipe* предоставляет *less* возможность взаимодействовать с файлами, не являющимися архивами, выступая в качестве альтернативы специальной программы, ассоциированной с этим типом файлов (таким как просмотрщик HTML через [python-html2text](https://www.archlinux.org/packages/?name=python-html2text)). Перезайдите в систему после установки *lesspipe*, чтобы активировать его, или же укажите файл `/etc/profile.d/lesspipe.sh`. ### Vim в качестве альтернативного просмотрщика [Vim](/index.php/Vim_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9) "Vim (Русский)") (*улучшенный визуальный редактор*) имеет скрипт для просмотра содержимого текстовых файлов, сжатых файлов, бинарников и директорий. Добавьте следующую строку в файл конфигурации вашего shell, чтобы использовать его в качестве пейджера: `~/.bashrc` `alias less='/usr/share/vim/vim74/macros/less.sh'` Также существует альтернатива макросу *less.sh*, которая может работать как переменная окружения `PAGER`. Установите [vimpager](https://www.archlinux.org/packages/?name=vimpager) и добавьте следующее в файл настроек вашего shell: `~/.bashrc` ``` export PAGER='vimpager' alias less=$PAGER ``` Теперь программы, использующие переменную окружения `PAGER`, такие как [git](/index.php/Git "Git"), будут использовать *vim* в качестве просмотрщика. ### Цветной вывод при чтении с stdin **Примечание:** Рекомендуется добавить [#Цветной вывод с помощью переменных окружения](#.D0.A6.D0.B2.D0.B5.D1.82.D0.BD.D0.BE.D0.B9_.D0.B2.D1.8B.D0.B2.D0.BE.D0.B4_.D1.81_.D0.BF.D0.BE.D0.BC.D0.BE.D1.89.D1.8C.D1.8E_.D0.BF.D0.B5.D1.80.D0.B5.D0.BC.D0.B5.D0.BD.D0.BD.D1.8B.D1.85_.D0.BE.D0.BA.D1.80.D1.83.D0.B6.D0.B5.D0.BD.D0.B8.D1.8F) в ваш `~/.bashrc` или `~/.zshrc`, поскольку нижеследующее основывается на `export LESS=R` При использовании команды и перенаправлении её [стандартного вывода](https://en.wikipedia.org/wiki/ru:%D0%A1%D1%82%D0%B0%D0%BD%D0%B4%D0%B0%D1%80%D1%82%D0%BD%D1%8B%D0%B5_%D0%BF%D0%BE%D1%82%D0%BE%D0%BA%D0%B8 "wikipedia:ru:Стандартные потоки") (*stdout*) по конвейеру команде *less* для постраничного просмотра (например, `pacman -Qe | less`), вы можете заметить, что вывод больше не раскрашивается цветами. Обычно это происходит из-за того, что программа пытается определить, является ли её *stdout* интерактивным терминалом, и только в этом случае будет раскрашивать вывод, иначе текст будет нецветным. Такое поведение подходит когда вы хотите перенаправить *stdout* в файл, например, `pacman -Qe > pkglst-backup.txt`, но не подходит, когда вы хотите посмотреть вывод с помощью `less`. Некоторые программы предоставляют опцию для отключения обнаружения интерактивного tty: ``` # dmesg --color=always | less ``` В случае, если программа такой опции не предоставляет, при помощи следующих утилит есть возможность обмануть программу, чтобы она думала, что её *stdout* является интерактивным терминалом: * **stdoutisatty** — Небольшая программка, которая отлавливает вызов функции `isatty`. [https://github.com/lilydjwg/stdoutisatty](https://github.com/lilydjwg/stdoutisatty). || [stdoutisatty](https://aur.archlinux.org/packages/stdoutisatty/) Пример: `stdoutisatty *программа* | less` * **socat** — Реле для двунаправленой передачи данных между двумя независимыми каналами данных. Она основана на GNU [readline](https://www.archlinux.org/packages/?name=readline). [http://www.dest-unreach.org/socat/](http://www.dest-unreach.org/socat/) || [socat](https://www.archlinux.org/packages/?name=socat) Пример: `socat EXEC:"*программа*",pty STDIO | less` * **[script](https://en.wikipedia.org/wiki/Script_(Unix) "wikipedia:Script (Unix)")** — Утилита, которая делает машинопись терминальной сессии. || [util-linux](https://www.archlinux.org/packages/?name=util-linux) Пример: `script -fqc "*программа*" | less` или [[2]](http://stackoverflow.com/questions/1401002/trick-an-application-into-thinking-its-stdin-is-interactive-not-a-pipe/20401674#20401674) * **unbuffer** — Скрипт, основанный на *sh* и [Tcl](http://tcl.tk/). [http://expect.sourceforge.net/example/unbuffer.man.html](http://expect.sourceforge.net/example/unbuffer.man.html) || [expect](https://www.archlinux.org/packages/?name=expect) Пример: `unbuffer *программа* | less` В качестве альтернативы можно использовать модуль [zpty](http://zsh.sourceforge.net/Doc/Release/Zsh-Modules.html#The-zsh_002fzpty-Module) для [zsh](/index.php/Zsh "Zsh"): [[3]](http://lilydjwg.is-programmer.com/2011/6/29/using-zpty-module-of-zsh.27677.html) `~/.zshrc` ``` zmodload zsh/zpty pty() { zpty pty-${UID} ${1+$@} if [[ ! -t 1 ]];then setopt local_traps trap '' INT fi zpty -r pty-${UID} zpty -d pty-${UID} } ptyless() { pty $@ | less } ``` Использование: ``` $ ptyless *программа* ``` Чтобы передать по конвейеру другому пейджеру (в данном примере less): ``` $ pty *программа* | less ``` ## ls [ls](https://en.wikipedia.org/wiki/ru:ls "wikipedia:ru:ls") (*список*) - это команда для отображения списка файлов в Unix иUnix-подобных операционных системах. * *ls* может отображать [права доступа к файлам](/index.php/File_permissions_and_attributes#Viewing_permissions "File permissions and attributes"). * Цветовой вывод можно включить с помощью простого алиаса. В файл `~/.bashrc` уже должна быть скопирована запись из `/etc/skel/.bashrc`: `alias ls='ls --color=auto'` Следующий шаг заключается в дальнейшем улучшении цветного вывода *ls*; например, не работающие (сироты) симлинки будут отображаться красными оттенками. Добавьте следующее в ваш конфигурационный файл для shell: `eval $(dircolors -b)` ## mkdir [mkdir](https://en.wikipedia.org/wiki/ru:mkdir "wikipedia:ru:mkdir") (*создать директорию*) - это команда для создания директорий. * Чтобы сразу создать директорию со вложенными директориями используйте опцию `-p`, иначе будет выведено сообщение об ошибке. Если вы понимаете, что вы делаете, вы можете использовать опцию `-p` по умолчанию. `alias mkdir='mkdir -p -v'` Опция `-v` сделает команду говорливой. * Нет необходимости изменять режим доступа с помощью *chmod* для только что созданных директорий, поскольку опция `-m` позволяет вам задать права доступа. **Совет:** Если директория нажна вам временно, лучше будет использовать [mktemp](https://en.wikipedia.org/wiki/ru:%D0%92%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D0%B9_%D1%84%D0%B0%D0%B9%D0%BB "wikipedia:ru:Временный файл") (*создать временный файл*): `mktemp -p`. ## mv [mv](https://en.wikipedia.org/wiki/ru:mv "wikipedia:ru:mv") (*переместить*) - это команда для перемещения и переименования файлов и директорий. * Команда является очень опасной, поэтому нужно ограничить её возможности: : `alias mv=' timeout 8 mv -iv'` Этот алиас приостановит *mv*, если он выполняется более восьми секунд, будет спрашивать подтверждение на удалёние трёх и более файлов, отображать список выполняемых операций и не хранить себя в файле истории shell, если shell настроен так, чтобы игнорировать команды, начинающиеся с пробела. ## rm [rm](https://en.wikipedia.org/wiki/ru:rm "wikipedia:ru:rm") (*удалить*) - это команда для удаления файлов и директорий. * Команда является очень опасной, поэтому нужно ограничить её возможности: `alias rm=' timeout 3 rm -Iv --one-file-system'` Этот алиас будет приостанавливать *rm*, если она выполняется более трёх секунд, спрашивать подтверждение на удаление трёх и более файлов, отображать текущие операции, не давать возможность работать на более чем одной файловой системе и не хранить себя в файле истории shell, если он настроен так, чтобы игнорировать команды, начинающиеся с пробела. Замените `-I` на `-i`, если вы хотите, чтобы спрашивалось подтверждение даже для одного файла. Пользователи zsh могут захотеть вписать `noglob` перед `timeout`, чтобы избежать неявных расширений. * Чтобы удалять директории, которые по вашему предположению пусты, пользуйтесь *rmdir*, так как она выдаст ошибку, в случае если внутри удаляемой директории находятся файлы. ## sed [sed](https://en.wikipedia.org/wiki/ru:sed "wikipedia:ru:sed") (*редактор потока*) - это Unix утилита для анализа и трансформации текста. Вот удобный [список](http://sed.sourceforge.net/sed1line.txt) однострочных примеров использования *sed*. **Совет:** Более мощной альтернативой является [AWK](https://en.wikipedia.org/wiki/ru:AWK "wikipedia:ru:AWK") и даже язык [Perl](https://en.wikipedia.org/wiki/ru:Perl "wikipedia:ru:Perl"). ## seq **seq** (*последовательность*) - это утилита для генерации последовательности чисел. Существуют встроенные в shell альтернативы, поэтому рекомендуется использовать именно их, как описано в [Википедии](https://en.wikipedia.org/wiki/Seq_(Unix) "wikipedia:Seq (Unix)"). ## Смотрите также * [A sampling of coreutils](http://www.reddit.com/r/commandline/comments/19garq/a_sampling_of_coreutils_120/) [, part 2](http://www.reddit.com/r/commandline/comments/19ge6v/a_sampling_of_coreutils_2040/) [, part 3](http://www.reddit.com/r/commandline/comments/19j1w3/a_sampling_of_coreutils_4060/) - Overview of commands in coreutils * [GNU Coreutils Manpage](http://www.gnu.org/software/coreutils/manual/coreutils.html) * [Learn the DD command](http://www.linuxquestions.org/questions/linux-newbie-8/learn-the-dd-command-362506/)