Online Documentation Server
 ПОИСК
ods.com.ua Web
 КАТЕГОРИИ
Home
Programming
Net technology
Unixes
Security
RFC, HOWTO
Web technology
Data bases
Other docs

 

 ПОДПИСКА

 О КОПИРАЙТАХ
Вся предоставленная на этом сервере информация собрана нами из разных источников. Если Вам кажется, что публикация каких-то документов нарушает чьи-либо авторские права, сообщите нам об этом.




Previous | Содержание | Next

ВВЕДЕНИЕ В UNIX

5. КОМАНДЫ И СТАНДАРТНЫЕ ФАЙЛЫ

5.1. Стандартные файлы

Многие команды работают по умолчанию со стандартными файлами:

   - Standard Input      (S.I.);
   - Standard Output     (S.O.);
   - Diagnostic Output   (D.O.);

Однако есть средства изменения умолчания, т.е. возмож- ность указать другие файлы вместо стандартных. Можно также в качестве D.O. использовать S.O. Эти средства называ- ются перенаправление (редирекция) ввода и вывода.

5.2. Перенаправление стандартного вывода

Используется знак >:

   $ ls -l                 - вывод на экран = standard output;
   $ ls -l > dirconts      - вывод в файл dirconts;
   $ cat dirconts          - вывод на экран.

Пробелы вокруг символа > необязательны.

Возможна перенаправление вывода с добавлением (с дописы- ванием в файл): обозначается >>:

$ pwd >> dirconts (добавить в файл имя текущего каталога).

5.3. Перенаправление стандартного ввода

Используется знак <.

Пример:

$ mail              - ввод сообщения с экрана;
$ mail < message    - ввод сообщения из файла message.

Эта возможность используется реже, чем перенаправление вывода.

Тривиальный случай перенаправления ввода:

   $ cat < this_file
   $ cat this_file

Это две эквивалентные команды.

Можно одновременно перенаправить и ввод, и вывод.

Например:

   $ cat < left > right.

Будьте осторожны: надо, чтобы left не равнялось right, иначе можно (вообще говоря) потерять входной файл.

Безопаснее >>, чем > (добавление, чем запись).

5.4. Создание файла командой cat

Если не задан входной файл, то будет предполагаться стан- дартный ввод (клавиатура). Одновременно перенаправим вывод в новый (создаваемый) файл

   $cat > newfile.

Здесь стандартный ввод буферизован: накопление 512 (обыч- но) знаков и потом ввод.

Небуферизованный (лучше, на случай сбоев) ввод:

с ключом -u (unbuffered):

   $ cat -u > people
   Mary  101
   Sally 113
   Jana  121
   ^d    [для конца текста(EOF)]
   $

Можно добавлять:

   $ cat -u >> people
   Charlie 122
   Bill    100
   ^d
   $

5.5. Соединение команд каналами (pipeline)

Стандартный вывод одной команды может быть стандартным вводом следующей команды. Обозначается знаком | (вертикаль- ная черта).

Пример:

$ who  | wc -l - создание списка активных пользователей и

подсчет их числа (count); 19 - ответ, то есть 19 пользовате- лей.

$
   Пример:
   $ ls -l /tmp | grep maryann | sort +3nr | lpr
листинг          поиск записей,    сортировка    печать
каталога         содержащих        (по 4-му по-  упорядо-
 /tmp            строку "maryann"  лю) найденных ченного
                                    записей       списка

5.6. Фильтры

Так называются команды, которые могут вводить со стан- дартного ввода и выводить на стандартный вывод. Большинство команд является фильтрами.

Есть исключения: ls не может работать со стандартным вво- дом. Или: lpr не может работать со стандартным выводом.

5.7. Параллельный стандартный вывод и перенаправление вывода

                                         -------------------
                                     --->|cтандартный вывод|
              ---------  ---------   |   -------------------
Схема такова: | вывод |->|команда|-->|
              |       |  |  tee  |   |          ------
              ---------  ---------   ---------->|файл|
                                                ------

Пример:

         $ ls -l  |  tee dirconts
на экран, то есть     дублирование
стандартный вывод     вывода в файл

5.8. Диагностический вывод

Сообщения об ошибках, возникающих при выполнении команд, выводятся на диагностический вывод, по умолчанию это (как и стандартный вывод) - на экран.

Диагностический вывод тоже может быть перенаправлен в лю- бой файл. Для этого используется дескриптор файла (целое), который для стандартных файлов равен:

   0 - Standard input;
   1 - Stfndard output;
   2 - Diagnostic output.
   Пример:
   $ cat somefile > outfile  2> errfile,

где знак > эквивалентен 1>.

Если вы хотите, чтобы сообщения об ошибках нигде не про- являлись, направьте их на /dev/null.

Если вы хотите направить ошибки туда же, куда вывод, надо набрать

Shell:  $ cat  somefile 1> outfile 2> &1 (ссылка на пере-
направление)
Cshell: $ cat somefile >& outfile
или $ cat somefile |& lpr.

5.9. Обработка команд в режиме заднего плана (background)

Обычно команды выполняются в режиме переднего плана (foreground), т.е. "пока вы ждете". Однако, если во время выполнения некоторой команды вы хотите выполнять другие ко- манды, то эту (первую) команду можно выполнить в режиме background:

   $ nroff  doc &
   2042
   $.

Об этом говорит завершающий знак &.

Система UNIX создает процесс, который выполняется незави- симо от командного интерпретатора. Ответ 2042 - это иденти- фикатор этого процесса (PID).

Лучше перенаправлять стандартный вывод процесса заднего плана в файл (из-за опасности совмещения вывода "переднего" и "заднего" плана на экране).

   $ nroff doc > doc.format &
   2042
   $
   или:
   $ nroff doc | lpr &
   2042
   $

Чтобы выяснить состояние процесса заднего плана, надо ис- пользовать команду ps (process status):

   $ ps
   PID    TTY    TIME   CMD
   2036    02    0:05   sh          (login - процесс терм.2)
   2042    02    0:02   nroff doc   (background)
   2043    02    0:01   ps          (cat pS)
   2050    08    0:03   sh          (login - процесс терм.8).

Это показывает, что nroff еще не закончилась. Ключи l и a в команде ps могут дать больше информации об активных про- цессах:

    -l - информация о родителе, адрес, приоритет и т.д.
    -a - о всех процессах системы.

5.10. Выполнение процессов с низким приоритетом

   1) $ nice nroff doc > doc.fmt &
   2099
   $

Задается выполнение процесса с меньшим приоритетом. На- чальное значение nice равно 20; параметр добавления в команде nice по умолчанию

равен 10; итого nice = 30. Приоритет тем выше, чем меньше nice.

Или:

   $ nice -5 nroff doc > doc.fmt &

Здесь параметр добавления задан явно, nice будет равен 25, то есть приоритет будет на 5 единиц выше, чем по умолча- нию.

2) nohup (no hang up) - нечувствительность к разъединению телефонной линии, на которой "висит" standard output)

   $ nohup nroff doc &
   2176
   $ Sending output to nohup.out (замена standard output

при разрыве линии)

3) совместное использование:

   $ nice nohup nroff doc > doc.fmt &

5.11. Останов процесса

$ kill 2042            (убить процесс с PID = 2042)

или

   $ kill - 9 2042 (сигнал номер 9 безусловного останова; на
другие сигналы из интервала (1,15),  посылаемые системой за-
даче, можно блокировать, написав соответствующую реакцию).

Previous | Содержание | Next



With any suggestions or questions please feel free to contact us