1. Trang chủ
  2. » Công Nghệ Thông Tin

IT training linux adm and syst progr

880 412 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 880
Dung lượng 19,98 MB

Nội dung

А Practical Guide to Linux Commands, Editors, and Shell Programming SECOND EDITION Mark G Sobell •••• PRENTICE HALL Upper Saddle River, NJ • Boston • Indianapolis • San Francisco New York· Toronto • Montreal • London • Munich • Paris • Madrid Capetown • Sydney • Tokyo • Singapore • Mexico City Администрирование и системное проrраммирование 2-Е ИЗДАНИЕ Марк г Собель Москва· Санкт-Петербург· Нижний Новгород· Воронеж Ростов-на-Дону Екатеринбург· Самара· Новосибирск Киев· Харьков· Минск 2011 ББК 32.973.2-018.2 УДК 004.451 С54 С54 Собель М Linux Администрирование и системное программирование 2-е изд — СПб.: Питер, 2011 — 880 с.: ил ISBN 978-5-459-00450-2 Эта книга представляет собой всеобъемлющее руководство по работе, настройке, администрированию и системному программированию операционных систем семейства UNIX/Linux, включая Ubuntu, Fedora, openSUSE, Red Hat, Debian, Mandriva, Mint и даже Mac OS X Первая часть книги дает начальные представления о работе в Linux: объясняется интерфейс командной строки, приводится обзор наиболее распространенных утилит, рассматривается иерархическая файловая система Linux, объясняется, как использовать свойства оболочки, чтобы ускорить работу в системе Во второй части рассмотрены два мощных Linux-редактора, работающих в режиме командной строки и включенных в большинство дистрибутивов Linux: текстовый редактор vim и GNU-редактор emacs В третьей части книги освещаются аспекты работы с оболочками bash и tcsh Четвертая часть посвящена важным средствам программирования, широко используемым при системном администрировании Linux и Mac OS: рассказывается об особенностях расширенного программирования оболочки с использованием bash; дается представление о создании сценариев администрирования Linux-систем на языке программирования Perl; подробно рассмотрены утилиты sed и rsync Заключительная часть книги представляет собой обширный справочник команд Linux, включающий подробные примеры использования более сотни наиболее важных утилит Книга адресована широкому кругу читателей: от пользователей Linux и Mac OS X, желающих узнать преимущества работы с системой из командной строки, до системных администраторов и программистов, нуждающихся в более глубоком понимании системы и доступных им инструментальных средств ББК 32.973.2-018.2 УДК 004.451 Права на издание получены по соглашению с Prentice Hall, Inc Upper Sadle River, New Jersey 07458 Все права защищены Никакая часть данной книги не может быть воспроизведена в какой бы то ни было форме без письменного разрешения владельцев авторских прав Информация, содержащаяся в данной книге, получена из источников, рассматриваемых издательством как надежные Тем не менее, имея в виду возможные человеческие или технические ошибки, издательство не может гарантировать абсолютную точность и полноту приводимых сведений и не несет ответственности за возможные ошибки, связанные с использованием книги ISBN 978-0131367364 англ ISBN 978-5-459-00450-2 © Prentice Hall, Inc 2010 © Перевод на русский ôằ, 2011 â , оформление ООО Издательство «Питер», 2011 Оглавление Предисловие 11 Особенности данной книги Содержание Часть I Операционные системы Linux и Mac OS X Часть II Редакторы Часть III Оболочки Часть IV Средства программирования Часть V Справочник команд Вспомогательные материалы 13 14 14 16 16 17 18 19 Глава Добро пожаловать в Linux и Mac OS X 20 История UNIX и GNU–Linux Что можно отнести к достоинствам Linux? Обзор Linux Дополнительные свойства Linux Заключение Упражнения 21 25 31 37 39 40 ЧАСТЬ I ОПЕРАЦИОННЫЕ СИСТЕМЫ LINUX И МАС OS X Глава Начнем! 42 Соглашения, используемые в этой книге Вход в систему через терминал или эмулятор терминала Работа с оболочкой su/sudo: Ограничение ваших полномочий (root-права) Где найти документацию Дополнительная информация о входе в систему Заключение Упражнения 42 45 46 50 52 60 63 64 Глава Утилиты 65 Специальные символы Основные утилиты Работа с файлами | (канал): Организация связи между процессами Еще четыре утилиты Сжатие и архивирование файлов Команды для поиска мест, где находятся утилиты Получение информации о пользователе и системе Связь с другими пользователями Электронная почта Заключение Упражнения 65 66 69 76 77 80 85 87 91 92 93 95 6   Оглавление Глава Файловая система 97 Иерархическая файловая система Полные имена Работа с каталогами Права доступа Списки управления доступом (ACL-списки) Ссылки Заключение Упражнения 97 103 106 114 121 126 132 134 Глава Оболочка 137 Командная строка Стандартный ввод и стандартный вывод Запуск команды в фоновом режиме Генерация имени файла и расширение имени Встроенные команды Заключение Упражнения 137 143 154 157 161 162 164 ЧАСТЬ II РЕДАКТОРЫ Глава Редактор vim 168 История Руководство Использование vim для создания и редактирования файла Введение в функции редактора vim Командный режим: перемещение курсора Режим ввода Командный режим: Удаление и изменение текста Поиск и замена Другие команды Копирование, перемещение и удаление текста Чтение и запись файлов Установка параметров Расширенные технологии редактирования Единицы отсчета Заключение Упражнения 168 169 177 184 188 189 193 199 200 202 203 208 211 214 218 Глава Редактор emacs 220 История Руководство по началу работы с emacs Графический интерфейс пользователя emacs Основные команды редактирования Интерактивная справка Расширенное редактирование Основные режимы: редактирование с восприимчивостью к языкам программирования Дополнительная информация Заключение Упражнения 220 223 230 231 239 241 256 270 271 278 Оглавление       7 ЧАСТЬ III ОБОЛОЧКИ Глава Оболочка Bourne Again Shell 282 Предыстория Основы оболочки Параметры и переменные Специальные символы Процессы История Псевдонимы Функции Управление bash: Свойства и настройки Обработка командной строки Заключение Упражнения 283 284 304 320 321 324 341 344 347 351 362 364 Глава Оболочка TC Shell 367 Сценарии оболочки Вход в оболочку TC Shell и выход из нее Свойства, общие для оболочек Bourne Again Shell и TC Shell Перенаправление стандартной ошибки Работа с командной строкой Переменные Управляющие структуры Встроенные команды Заключение Упражнения Упражнения повышенной сложности 368 369 371 377 378 384 397 406 411 412 413 ЧАСТЬ IV СРЕДСТВА ПРОГРАММИРОВАНИЯ Глава 10 Программирование оболочки Bourne Again Shell 416 Управляющие структуры Описатели файлов Параметры и переменные Встроенные команды Выражения Программы оболочки Заключение Упражнения Упражнения повышенной сложности 417 449 452 465 480 488 499 501 502 Глава 11 Язык сценариев Perl 504 Введение в Perl Переменные Управляющие структуры Работа с файлами Сортировка Подпрограммы Регулярные выражения 504 512 520 530 534 535 538 8   Оглавление Модули CPAN Примеры Заключение Упражнения Упражнения повышенной сложности 544 546 550 550 551 Глава 12 Язык обработки шаблонов AWK 552 Синтаксис Аргументы Ключи Примечания Основы языка Примеры Заключение Упражнения Упражнения повышенной сложности 552 553 553 554 554 562 583 584 584 Глава 13 Редактор sed 585 Синтаксис Аргументы Ключи Основы редактора Примеры Заключение Упражнения 585 585 585 586 590 600 601 Глава 14 Утилита безопасного копирования rsync 602 Синтаксис Аргументы Ключи Примеры Заключение Упражнения 602 602 603 605 613 613 ЧАСТЬ V СПРАВОЧНИК КОМАНД Указатель команд Общие ключи sample aspell at bzip2 cal cat cd chgrp chmod chown cmp 616 619 620 622 626 630 632 633 635 636 640 645 647 Оглавление       9 comm configure cp cpio crontab cut date dd df diff diskutil (OS X) ditto (OS X) dmesg dscl (OS X) du echo expr file find finger fmt fsck ftp gawk gcc GetFileInfo (OS X) grep gzip head kill killall launchctl (OS X) less ln lpr ls make man mkdir mkfs Mtools mv nice nohup od open (OS X) otool (OS X) paste pax plutil (OS X) pr 649 651 653 657 662 665 667 669 672 674 680 683 685 686 689 691 694 697 699 706 708 710 715 722 723 727 729 734 737 738 740 741 744 748 750 753 761 767 771 772 775 778 780 782 782 786 788 790 792 798 799 10   Оглавление ps rcp renice rlogin rm rmdir rsh rsync scp sed SetFile (OS X) sleep sort split ssh stat strings stty sysctl (OS X) tail tee telnet test top touch tr tty tune2fs umask uniq w wc which who xargs 801 805 807 809 810 811 812 814 814 816 817 818 820 829 830 838 839 840 845 846 849 850 852 855 859 861 864 864 867 868 870 872 873 875 877 866   Часть V Справочник команд Комментарии Проверка большой файловой системы может занять много времени Если одновременно проводится проверка всех файловых систем, загрузка операционной системы может проходить очень медленно Чтобы разнести по времени проверки файловых систем и исключить их проведение в одно и то же время, следует воспользоваться ключами –C и (или) –T Пример При запуске утилиты tune2fs с ключом –l на обычной файловой системе ���������� ext������� выводится примерно следующая информация: # /sbin/tune2fs -l /dev/sda1 tune2fs 1.41.4 (27-Jan-2009) Filesystem volume name: Last mounted on: Filesystem UUID: b6d9714e-ed5d-45b8-8023-716a669c16d8 Filesystem magic number: 0xEF53 Filesystem revision #: (dynamic) Filesystem features: has_journal ext_attr resize_inode dir_index filetype needs_recovery sparse_super large_file Filesystem flags: signed_directory_hash Default mount options: (none) Filesystem state: clean Errors behavior: Continue Filesystem OS type: Linux Inode count: 624624 Block count: 2498099 Reserved block count: 124904 Free blocks: 1868063 Free inodes: 509355 First block: Block size: 4096 Fragment size: 4096 Reserved GDT blocks: 609 Blocks per group: 32768 Fragments per group: 32768 Inodes per group: 8112 Inode blocks per group: 507 Filesystem created: Mon Apr 27 09:41:43 2009 Last mount time: Tue May 03:54:59 2009 Last write time: Tue May 03:54:59 2009 Mount count: Maximum mount count: 31 Last checked: Mon Apr 27 09:41:43 2009 Check interval: 15552000 (6 months) Next check after: Sat Oct 24 09:41:43 2009 Reserved blocks uid: (user root) Reserved blocks gid: (group root) First inode: 11 umask    867 Inode size: Required extra isize: Desired extra isize: Journal inode: First orphan inode: Default directory hash: Directory Hash Seed: Journal backup: 256 28 28 308701 half_md4 bceae349-a46f-4d45-a8f1-a21b1ae8d2bd inode blocks umask Установка маски прав доступа, используемой при создании файла umask [маска] Встроенная команда umask определяет маску, используемую системой для установки прав доступа к файлу при его создании Эта встроенная команда работает в разных оболочках немного по-разному Аргументы Маска должна быть трехразрядным восьмеричным числом (в оболочках bash и tcsh) или символьным значением (bash), аналогичным используемому с утилитой chmod (см описание этой утилиты) Маска определяет те права доступа, которые не предоставляются Когда маска представлена в виде восьмеричного числа, цифры соответствуют правам для владельца файла, для участника группы, с которой связан файл, и для всех остальных Поскольку маска определяет непредоставляемые права, система, когда вы создаете файл, вычитает каждую из этих цифр из Получившиеся три восьмеричных числа определяют права доступа к файлу (это те самые числа, которые используются при работе с утилитой chmod) Маска, указанная в виде символьного значения, также определяет непредоставляемые права См подраздел «Примечания» Без аргументов встроенная команда umask выводит маску, используемую при установке прав доступа к создаваемому файлу Ключ (symbolic — символьная) Вывод маски прав доступа к создаваемому файлу в символьном виде –S Примечания Большинство утилит и приложений не предпринимают попыток создания файлов с правами на их выполнение, независимо от того значения, которое указано в маске; они заранее предполагают, что исполняемый файл создавать не нужно В результате этого, когда утилита или приложение, например утилита touch, создает файл, система вычитает каждую цифру в маске из числа Исключение составляет утилита mkdir, которая предполагает, что вам нужен установленный бит выполнения (доступ в случае работы с каталогом) См подраздел «Примеры» 868   Часть V Справочник команд Программа umask является встроенной командой оболочек bash и tcsh и, как правило, обращается к файлу инициализации для вашей оболочки (~/.bash_profile для bash или ~/.login для tcsh) При работе в bash аргумент u=rwx,go=r сбрасывает все биты в маске для владельца, и сбрасывает бит права на чтение в маске для участников группы и всех остальных пользователей (маска получает значение 0033), заставляя эти биты быть установленными при определении прав доступа к файлу (744 или 644) Дополнительные сведения о символьном режиме указания прав доступа даны в описании утилиты chmod Примеры Следующие команды устанавливают маску прав доступа к создаваемым файлам и показывают значение этой маски и ее действие при создании файла и каталога Маска, имеющая значение 022, после вычитания из 777 дает права доступа 644 (rw–r––r––) для файла и 755 (rwxr–xr–x) для каталога: $ umask 022 $ umask 0022 $ touch afile $ mkdir adirectory $ ls -ld afile adirectory drwxr-xr-x max max 4096 Jul 24 11:25 adirectory -rw-r r max max Jul 24 11:25 afile В следующем примере та же маска устанавливается с помощью символьных значений Ключ –S приводит к выводу маски в символьном режиме: $ umask u=rwx,g=rx,o=rx $ umask 0022 $ umask -S u=rwx,g=rx,o=rx uniq Вывод уникальных строк uniq [ключи] [файл_ввода] [файл_вывода] Утилита uniq выводит свой ввод, удаляя все лишние копии последовательно повторяющихся строк Если файл был отсортирован (см описание утилиты sort), утилита uniq обеспечивает отсутствие в выводе двух одинаковых строк Аргументы Когда файл_ввода не указан, утилита uniq осуществляет чтение со стандартного ввода Если не указан файл_вывода, uniq ведет запись в стандартный вывод uniq    869 Ключи При работе под управлением Linux утилита uniq допускает применение общих ключей, описание которых дано в табл. V.2 Ключи, перед которыми ставится двойной дефис (––), работают только под управлением Linux Кроме специально оговоренных, однобуквенные ключи, перед которыми ставится одинарный дефис, работают как под управлением Linux, так и под управлением OS X Под полем понимается последовательность символов, окруженная пробелами, символами табуляции, символами разделителей строк или комбинацией из этих символов ––count –c Установка перед каждой строкой количества ее появлений во входном файле Вывод одной копии повторяющихся строк без вывода тех строк, которые не повторяются ––repeated –d Игнорирование первых nfield полей, отделенных друг от друга пробельными символами Утилита uniq берет за основу своих сравнений оставшуюся часть строки, включая ведущие пробельные символы следующего поля строки (см ключ –s (‑‑skip-chars)) ––skipfields=nfield –f nfield ––ignore-case –i Игнорирование регистра букв в сравниваемых строках Игнорирование первых nchar символов в каждой строке Если вдобавок воспользоваться ключом –f (––skip-fields), то утилита uniq проигнорирует первые nfield поля, за которыми следуют nchar символов Этот ключ можно использовать для перехода через начальные пробельные символы поля ––skipchars=nchar –s nchar ––unique –u Вывод только тех строк, которые не повторяются Проведение сравнения вплоть до nchars символов в строке после ее обработки, связанной с применением ключей –f (––skip-fields) и –s (––skip-chars) По умолчанию утилита uniq проводит сравнение всей строки (Linux) ––checkchars=nchar –w nchar Примеры В этих примерах предполагается, что файл по имени test находится в рабочем каталоге и содержит следующий текст: $ cat test boy took bat home boy took bat home girl took bat home dog brought hat home dog brought hat home dog brought hat home Без использования ключей утилита uniq выводит только одну копию последовательно повторяющихся строк: $ uniq test boy took bat home 870   Часть V Справочник команд girl took bat home dog brought hat home Ключ –c (––count) приводит к выводу количества последовательных появлений каждой строки в файле: $ uniq -c test boy took bat home girl took bat home dog brought hat home Ключ –d (––repeated) приводит к выводу только тех строк, которые последовательно повторяются в файле: $ uniq -d test boy took bat home dog brought hat home Ключ –u (––unique) приводит к выводу только тех строк файла, которые не имеют последовательных повторений: $ uniq -u test girl took bat home В следующем примере ключ –f (––skip-fields) приводит к пропуску первого поля в каждой строке, заставляя строки, начинающиеся со слова boy, и строку, начинающуюся со слова girl, считаться последовательно повторяющимися строками Утилита uniq выводит только один экземпляр этих строк: $ uniq -f test boy took bat home dog brought hat home В следующем примере используются оба ключа –f (––skip-fields) и –s (‑‑skipchars), сначала для пропуска двух полей, а затем для пропуска двух символов Два символа, пропускаемые этой командой, включают пробел, разделяющий второе и третье поля, и первый символ третьего поля При игнорировании этих символов все строки, содержащие подстроку at home, считаются последовательно повторяющимися Утилита uniq выводит только первую из этих строк: $ uniq -f -s test boy took bat home w Вывод информации о пользователях системы w [ключи] [имя_пользователя] Утилита w выводит имена пользователей, вошедших в систему, а также номера их терминальных устройств, показания времени их входа в систему, команды, ими запущенные, и другую информацию Аргументы Имя_пользователя ограничивает вывод только той информацией, которая имеет отношение к данному пользователю w    871 Ключи (from — из) Удаление столбца FROM Для пользователей, подключившихся напрямую, в этом поле ставится прочерк (Linux) –f (no header — без заголовка) Подавление вывода строки заголовка –h (short — краткий) Вывод меньшего объема информации: имени пользователя, названия терминального устройства, времени простоя и команды (Linux) –s Комментарии В первой строке утилита w выводит такую же информацию, которую выводит утилита uptime Эта строка включает время дня, продолжительность работы системы (в днях, часах и минутах), количество вошедших в систему пользователей и сведения о занятости системы (среднюю загруженность) Слева направо средняя загруженность показывает количество процессов, ожидающих запуска за последние 1, и 15 минут Информационные столбцы, выводимые утилитой w, имеют следующие заголовки: USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT В столбце USER содержится имя пользователя В столбце TTY содержится имя устройства для той линии, по которой пользователь вошел в систему В столбце FROM содержится имя системы, с которой вошел в систему удаленный пользователь, для локальных пользователей в нем ставится прочерк В столбце LOGIN@ содержится дата и время входа пользователя в систему В столбце IDLE содержится количество минут, прошедших со времени последней работы пользователя на клавиатуре В столбце JCPU содержится время загрузки центрального процессора всеми процессами, прикрепленными к пользовательскому терминалу, за исключением уже завершившихся фоновых заданий В столбце PCPU содержится время, занятое процессом, названным в столбце WHAT В столбце WHAT содержится команда, запущенная пользователем Примеры В первом примере показывается полный список, создаваемый утилитой w: $ w 10:26am USER max max root sam hls up day, 55 min, TTY FROM tty1 tty2 pts/1 pts/2 pts/3 potato users, load average: 0.15, 0.03, LOGIN@ IDLE JCPU PCPU Fri 9am 20:39m 0.22s 0.01s Fri 5pm 17:16m 0.07s 0.07s Fri 4pm 14:28m 0.20s 0.07s Fri 5pm 3:23 0.08s 0.08s 10:07am 0.00s 0.08s 0.02s 0.01 WHAT vim td -bash -bash /bin/bash w В следующем примере ключ –s заставляет создать сокращенный список: $ w -s 10:30am USER max max root up day, 58 min, TTY FROM tty1 tty2 pts/1 - users, load average: 0.15, 0.03, 0.01 IDLE WHAT 20:43m vim td 17:19m -bash 14:31m -bash 872   Часть V Справочник команд sam hls pts/2 pts/3 potato 0.20s 0.00s vim memo.030125 w -s В последнем примере запрашивается информация, касающаяся только пользователя Max: $ w max 10:35am up day, 1:04, USER TTY FROM max tty1 max tty2 - users, load average: 0.06, 0.01, 0.00 LOGIN@ IDLE JCPU PCPU WHAT Fri 9am 20:48m 0.22s 0.01s vim td Fri 5pm 17:25m 0.07s 0.07s -bash wc Вывод количества строк, слов и байтов wc [ключи] [список_файлов] Утилита wc выводит количество строк, слов и байтов, имеющихся в ее вводе Если в командной строке указывается более одного файла, wc выводит суммарное количество для каждого файла, а также общее количество для всех файлов Аргументы Список_файлов — это список путевых имен одного или нескольких файлов, которые подвергаются анализу с помощью утилиты wc Если список_файлов не указывается, утилита wc получает данные со стандартного ввода Ключи При работе под управлением Linux утилита wc допускает применение общих ключей, описание которых дано в табл. V.2 Ключи, перед которыми ставится двойной дефис (––), работают только под управлением Linux������������������������������������� ������������������������������������������ Кроме специально оговоренных, однобуквенные ключи, перед которыми ставится одинарный дефис, работают как под управлением Linux, так и под управлением OS X ––bytes –c Вывод только количества байт, имеющихся во вводе ––max-linelength –L Вывод длины самой длинной строки ввода (Linux) (буква «l» в нижнем регистре) Вывод только количества строк (то есть количества символов разделителей строк), имеющихся во вводе ––lines –l ––chars –m Вывод только количества символов, имеющихся во вводе ––words –w Вывод только количества слов, имеющихся во вводе Примечания Слово ������������������������������������������������������������������������ — это последовательность символов, ограниченная пробелами, символами табуляции, разделителями строк или комбинациями этих символов which    873 Примеры Следующая команда анализирует содержимое файла по имени memo.Числа в выводе представляют количество строк, слов и байтов в файле $ wc memo 31 146 memo Следующая команда выводит количество строк и слов в трех файлах В самой последней строке, содержащей в самом правом столбце слово total (всего), содержится итоговая сумма по каждому столбцу $ wc -lw memo1 memo2 memo3 10 62 memo1 12 74 memo2 12 68 memo3 34 204 total which Вывод места в переменной PATH, где содержится команда which список_команд Для каждой команды в списке_команд утилита which ищет каталоги в переменной PATH (см раздел «Переменная PATH: Указание тех мест, где оболочка ищет программы» на с 312) и выводит абсолютное имя первого найденного файла, простое имя которого совпадает с названием команды Аргументы Список_команд — это список, состоящий из одной или нескольких команд (утилит), которые ищутся с помощью утилиты which Для каждой команды утилита which ведет последовательный поиск каталогов, перечисленных в переменной среды окружения PATH, и выводит полное имя первой найденной команды (исполняемого файла) Если which не находит команды, она выводит соответствующее сообщение Ключи Ключи, перед которыми ставится двойной дефис (––), работают только под управлением Linux Кроме специально оговоренных, однобуквенные ключи, перед которыми ставится одинарный дефис, работают как под управлением Linux�������������������� ������������������������� , так и под управлением OS X Вывод сведений обо всех соответствующих исполняемых файлах, пути к которым указаны в переменной PATH, а не только о первом из них ––all –a Чтение псевдонимов со стандартного ввода и вывод отчета о соответствующих псевдонимах в дополнение к сведениям об исполняемых файлах, пути к которым указаны в переменной PATH (выключается с помощью ключа ––skip-alias) (Linux) ––read-alias –i 874   Часть V Справочник команд Чтение функций оболочки со стандартного ввода и вывод отчета о соответствующих функциях в дополнение к сведениям об исполняемых файлах, пути к которым указаны в переменной PATH (выключается с помощью ключа ––skip-functions) (Linux) ––readfunctions Вывод вместо абсолютного имени символов /, когда каталог в переменной PATH начинается с точки и соответствует исполняемому файлу в этом каталоге (выключается с помощью ключа ––skip-dot) (Linux) ––show-dot Вывод символа тильды (~) вместо абсолютного имени личного каталога пользователя, если это приемлемо Этот ключ игнорируется, когда утилита which запускается пользователем, работающим с root-правами (Linux) ––show-tilde Отказ от обработки дополнительных ключей (справа от этого ключа), если процесс, в котором запущена утилита which, не прикреплен к терминалу (Linux) ––tty-only Примечания В некоторых дистрибутивах для утилиты which определен следующий псевдоним: $ alias which alias which='alias | /usr/bin/which tty-only read-alias show-dot show-tilde' Если утилита which ведет себя неожиданным для вас образом, проверьте, не запущен ли вами псевдоним Предыдущий псевдоним заставляет утилиту which работать только в интерактивном режиме (––tty-only) и показывать псевдонимы, выводить рабочий каталог в виде точки, когда это приемлемо, а также показывать личный каталог пользователя в виде тильды Оболочка TC Shell включает в себя встроенную команду which (см man-страницу, посвященную tcsh), которая работает немного иначе, чем утилита which (/usr/bin/ which) Без использования ключей утилита which не определяет местонахождения псевдонимов, функций и встроенных команд оболочки, поскольку они не фигурируют в значении переменной PATH В отличие от утилиты встроенная в tcsh команда which показывает, где находятся псевдонимы, функции и встроенные команды оболочки Примеры В первом примере процитирована первая буква команды ( \which ), чтобы не дать оболочке вызвать псевдоним (см главу 8, совет «Как удержать оболочку от вызова псевдонима») для which: $ \which vim dir which /usr/bin/vim /bin/dir /usr/bin/which Следующий пример, который работает только на некоторых системах ���������� Linux����� , похож на предыдущий, но в нем используется псевдоним для which (который выводится самой утилитой): $ which vim dir which alias which='alias | /usr/bin/which tty-only read-alias show-dot show-tilde' who    875 /usr/bin/which /usr/bin/vim /usr/bin/dir Последний пример аналогичен предыдущему, за исключением того, что он запускается из оболочки tcsh Вместо утилиты which используется встроенная в tcsh команда which: tcsh $ which vim dir which /usr/bin/vim /bin/dir which: shell built-in command which: встроенная команда оболочки who Вывод информации о пользователях, вошедших в систему who [ключи] who am i Утилита who выводит информацию о пользователях, вошедших в локальную систему Эта информация включает имя каждого пользователя, название терминального устройства, время входа в систему и, если приемлемо, соответствующее имя удаленного хоста Аргументы Когда утилите предоставлены два аргумента (традиционно это am i), who выводит информацию, касающуюся пользователя, запустившего команду Применительно к ситуации, перед именем пользователя может быть выведено имя хоста той системы, с которой была запущена команда who (в виде kudos!max) Ключи При работе под управлением Linux утилита who допускает применение общих ключей, описание которых дано в табл. V.2 Ключи, перед которыми ставится двойной дефис (––), работают только под управлением Linux Кроме специально оговоренных, однобуквенные ключи, перед которыми ставится одинарный дефис, работают как под управлением Linux, так и под управлением OS X ––all –a Вывод всего объема информации (Linux) ––boot –b Вывод даты и времени последней загрузки системы (Linux) ––heading –H Вывод заголовка (буква «l» в нижнем регистре) Вывод списка устройств, ожидающих входа пользователя (Linux) ––login –l (quick — быстрый) Вывод списка, состоящего только из имен пользователей, за которыми следует количество пользователей, вошедших в систему ––count –q Добавление после каждого имени пользователя символа, показывающего, можно ли пользователю с этим именем послать сообщение Плюс (+) означает, ––mesg –T 876   Часть V Справочник команд что сообщения разрешены, дефис (–) означает, что они запрещены, а вопросительный знак (?) показывает, что утилита who не может найти устройство Если сообщения разрешены, то для связи с пользователем можно воспользоваться утилитой write См раздел «mesg: Отказ в приеме или прием сообщений» на с 92 Включение в выводимую информацию времени бездействия каждого пользователя Если пользователь что-нибудь набирал на своем терминале в последнюю минуту, в этом поле появляется точка (.) Если набора не было в течение более чем одного дня, появляется слово old В качестве дополнения этот ключ включает поля PID-номера и комментария См подраздел «Комментарии» ––users –u Комментарии Строка, выводимая утилитой who, имеет следующий синтаксис: пользователь [сообщения] линия время_входа [простой] [PID] комментарий Пользователь представляет собой имя пользователя Сообщение показывает, разрешены или нет сообщения (см описание ключа–T (––mesg)) Линия представляет имя устройства, связанного с той линией, по которой пользователь вошел в систему Время_входа показывает дату и время входа пользователя в систему Простой показывает продолжительность паузы, возникшей с момента последнего использования терминала (время бездействия, см описание ключа –u (‑‑users)) PID показывает идентификационный номер процесса Комментарий показывает имя удаленной системы, с которой пользователь вошел в систему (для локальных пользователей это поле оставляется пустым) Примечания Утилита finger (см раздел «finger: Вывод списка пользователей, вошедших в систему» на с 88, а также описание этой утилиты в данной части книги) предоставляет информацию, аналогичную той, которая выдается утилитой who Примеры В следующих примерах показано использование утилиты who: $ who hls sam max tty1 tty2 ttyp3 $ who am i bravo!max Jul 30 06:01 Jul 30 06:02 Jul 30 14:56 (bravo) ttyp3 $ who -HTu USER LINE hls - tty1 sam + tty2 max + ttyp3 Jul 30 14:56 (bravo) TIME IDLE Jul 30 06:01 03:53 Jul 30 06:02 14:47 Jul 30 14:56 PID COMMENT 1821 2235 14777 (bravo) xargs    877 xargs Превращение стандартного ввода в командные строки xargs [ключи] [команда] Утилита xargs предоставляет удобный и эффективный способ превращения стандартного вывода одной команды в аргументы для другой команды Эта утилита осуществляет чтение данных со стандартного ввода, отслеживает максимальную разрешенную длину командной строки и не допускает превышения этого ограничения путем выдачи еще одной команды, если в этом есть необходимость И наконец, утилита xargs выполняет созданную командную строку (или строки) Аргументы Команда — это командная строка, которую нужно использовать утилите xargs в качестве основы для создаваемой ею команды Если команда не указана, этот аргумент принимает по умолчанию значение echo Утилита xargs добавляет к команде аргументы, получаемые со стандартного ввода Если аргументам, получаемым со стандартного ввода, должны предшествовать какие-нибудь другие аргументы, их нужно включить в команду как ее часть Ключи Ключи, перед которыми ставится двойной дефис (––), работают только под управлением Linux Кроме специально оговоренных, однобуквенные ключи, перед которыми ставится одинарный дефис, работают как под управлением Linux�������������������� ������������������������� , так и под управлением OS X (replace — замена) Предоставление возможности помещать аргументы со стандартного ввода в любое место внутри команды Все появления маркера внутри команды для утилиты xargs заменяются аргументами, сгенерированными со стандартного ввода утилиты xargs При использовании этого ключа xargs выполняет команду для каждой введенной строки При использовании этого ключа игнорируется присутствие ключа –l (––max-lines) –I [маркер] ––max-lines [=количество] –l [количество] (буква «l» в нижнем регистре) Однократное выполнение команды для каждой группы из количества строк ввода (по умолчанию количество равно 1) (Linux) ––max-args= количество –n количество Однократное выполнение команды для каждой группы, состоящей из количества аргументов в строке ввода Разрешение утилите xargs запускать одновременно до указанного количества экземпляров команды (По умолчанию используется аргумент 1, позволяющий запускать команды в последовательном режиме.) Этот ключ может повысить пропускную способность, если утилита xargs запущена на многопроцессорной системе ––max-procs= количество –P количество 878   Часть V Справочник команд ––interactive –p Вывод приглашения на подтверждение перед каждым выполнением команды ––no-run-ifempty –r Принуждение утилиты xargs к невыполнению команды, если стандартный ввод пуст Обычно xargs выполняет команду как минимум один раз, даже если стандартный ввод пуст (Linux) Комментарии Утилита xargs читает аргументы для команды со стандартного ввода, интерпретируя каждое строковое значение, отделенное пробельными символами в качестве отдельного аргумента Затем она создает командную строку из команды и ряда аргументов Когда командная строка при добавлении еще одного аргумента достигнет максимально возможной длины, xargs запускает созданную командную строку Если ввод продолжается, xargs повторяет процесс построения командной строки и ее запуска Этот процесс продолжается до тех пор, пока не будет прочитан весь ввод Примечания Утилита xargs часто используется в качестве эффективной альтернативы ключу ‑exec утилиты find (см описание этой утилиты) При вызове find с ключом –exec для запуска команды эта утилита однократно запускает команду для каждого обрабатываемого с ее помощью файла Каждое выполнение команды создает новый процесс, который может приводить к истощению системных ресурсов при обработке большого количества файлов Путем аккумуляции наибольшего возможного количества аргументов утилита xargs может существенно сократить количество необходимых процессов Первый пример в подразделе «Примеры» показывает порядок использования утилиты xargs с утилитой find Примеры Для поиска и удаления из рабочего каталога и всех его подкаталогов всех файлов с именами, оканчивающимися на o, можно воспользоваться утилитой find с ключом ‑exec: $ find -name \*.o -exec rm force {} \; При таком подходе утилита rm вызывается по одному разу для каждого файла с расширением o, найденного утилитой find Каждый вызов утилиты rm требует создания нового процесса Если имеется большое количество файлов с расширением o, система может потратить очень много времени на создание, запуск, а затем на ликвидацию последствий работы этих процессов Количество процессов можно сократить, позволив утилите xargs перед вызовом rm собрать столько имен файлов, сколько позволит длина командной строки: $ find -name \*.o -print | xargs rm force В следующем примере в содержимом всех файлов *.txt, найденных утилитой find, ищутся строки, содержащие слово login Все имена файлов, содержащие слово login, выводятся с помощью утилиты grep xargs    879 $ find -name \*.txt -print | xargs grep -w -l login В следующем примере показано, как нужно использовать ключ –I, чтобы заставить утилиту xargs вместо добавления стандартного ввода к команде вставить его в эту команду Этот ключ также заставляет команду выполняться при каждой встрече в стандартном вводе символа разделителя строк (NEWLINE), это поведение утилиты не отменяется и при использовании ключа –l (––max-lines) $ cat names Tom, Dick, and Harry $ xargs echo "Hello," < names Hello, Tom, Dick, and Harry $ xargs -I xxx echo "Hello xxx Join me for lunch?" < names Hello Tom, Join me for lunch? Hello Dick, Join me for lunch? Hello and Harry Join me for lunch? В последнем примере используется такой���������������������������������������  �������������������������������������� же файл ввода, как и в предыдущих примерах, а также используются ключи –n (––max-args) и –l (––max-lines): $ xargs -n echo "Hi there" < names Hi there Tom, Hi there Dick, Hi there and Hi there Harry $ xargs -l echo "Hi there" < names Hi there Tom, Dick, Hi there and Harry Дополнительные примеры использования утилиты xargs даны в описании утилиты ssh, в подразделе «Примеры» Марк Собель Linux Администрирование и системное программирование 2-е издание Перевел с английского Н Вильчинский Заведующий редакцией Руководитель проекта Ведущий редактор Литературный редактор Художественный редактор Корректор Верстка А Кривцов А Юрченко Ю Сергиенко К Кноп Л Адуевская В Листова Е Егорова ООО «Мир книг», 198206, Санкт-Петербург, Петергофское шоссе, 73, лит А29 Налоговая льгота — общероссийский классификатор продукции ОК 005-93, том 2; 95 3005 — литература учебная Подписано в печать 17.03.11 Формат 70х100/16 Усл п л 70,950 Тираж 2000 Заказ 0000 Отпечатано по технологии СtP в ООО «Северо-Западный Печатный двор», 188300, Ленинградская обл., г Гатчина, ул Железнодорожная, 45Б ...А Practical Guide to Linux Commands, Editors, and Shell Programming SECOND EDITION Mark G Sobell •••• PRENTICE HALL Upper Saddle River, NJ • Boston... www.gnu.org/software/hurd/gnumach.html www.gnu.org/software/hurd/hurd -and -linux. html www.gnu.org/philosophy/free-sw.html www.gnu.org/gnu /linux- and- gnu.html 24   Глава Добро пожаловать в Linux и Mac OS X ских версий UNIX, была... новых программ  LINUX, OS X И UNIX Linux и OS X тесно связаны с операционной системой UNIX В данной книге рассматривается Linux и OS X Чтобы упростить чтение, в ней рассматривается Linux, а подразумевается

Ngày đăng: 05/11/2019, 16:02