Возможно вы искали: 'Supreme Ruler: Cold War'

May 15 2025 18:36:21
  • Как сделать 8Gamers.Ru домашней страницей?
  • Игры
    • База данных по играх
    • Игровые новости
    • Игровая индустрия
    • Обзоры на игры
    • Прохождения игр
    • Гайды к играм
    • Превью о играх
    • Игровые тизеры
    • Игровые арты
    • Игровые обои
    • Игровые скриншоты
    • Игровые обложки
    • Игровые трейлеры
    • Игровое видео
    • Вышедшие игры
    • Ближайшие релизы игр
  • Кино и ТВ
    • База данных по кино
    • Статьи о кино
    • Постеры
    • Кадры из кино
    • Кино трейлеры
    • Сегодня в кино
    • Скоро в кино
  • Комиксы и манга
    • Манга по алфавиту
    • База данных по комиксах
    • Читать онлайн комиксы
    • Читать онлайн манга
    • База персонажей
  • Читы и коды
    • Чит-коды для PC игр
    • Чит-коды для консольных игр
    • Трейнеры
    • Коды Game Genie
  • Моддинг
    • Модификации
    • Карты к играм
    • Программы для моддинга
    • Статьи о моддинге
  • Геймдев
    • Всё о создании игр
    • Список движков
    • Утилиты в помощь игроделу
    • Конструкторы игр
    • Игровые движки
    • Библиотеки разработки
    • 3D-модели
    • Спрайты и тайлы
    • Музыка и звуки
    • Текстуры и фоны
  • Рецензии
    • Игры
    • Кино
    • Аниме
    • Комиксы
    • Мангу
    • Саундтреки
  • Саундтреки
    • Лирика
  • Файлы
    • Патчи к играм
    • Русификаторы к играм
    • Сохранения к играм
    • Субтитры к кино
  • Медиа
    • Видео
    • Фото
    • Аудио
    • Фан-арты
    • Косплей
    • Фото с виставок
    • Девушки из игр
    • Рисунки
    • Рисуем онлайн
    • Фотохостинг
  • Юмор
    • Анекдоты
    • Афоризмы
    • Истории
    • Стишки и эпиграммы
    • Тосты
    • Цитаты
  • Флеш
    • Азартные
    • Аркады
    • Бродилки
    • Гонки
    • Для девочек
    • Для мальчиков
    • Драки
    • Квесты
    • Леталки
    • Логические
    • Мультфильмы
    • Открытки
    • Приколы
    • Разное
    • Спорт
    • Стратегии
    • Стрелялки
Статистика

Статей: 87772
Просмотров: 96111483
Игры
Injustice:  Gods Among Us
Injustice: Gods Among Us
...
Dark Souls 2
Dark Souls 2
Dark Souls II - вторая часть самой хардкорной ролевой игры 2011-2012 года, с новым героем, сюжето...
Battlefield 4
Battlefield 4
Battlefield 4 - продолжение венценосного мультиплеер-ориентированного шутера от первого ли...
Кино
Steins;Gate
Steins;Gate
Любители японской анимации уже давно поняли ,что аниме сериалы могут дать порой гораздо больше пи...
Ку! Кин-дза-дза
Ку! Кин-дза-дза
Начинающий диджей Толик и всемирно известный виолончелист Владимир Чижов встречают на шумной моск...
Обзоры на игры
• Обзор Ibara [PCB/PS2] 18357
• Обзор The Walking ... 18801
• Обзор DMC: Devil M... 19879
• Обзор на игру Valk... 15877
• Обзор на игру Stars! 17764
• Обзор на Far Cry 3 17948
• Обзор на Resident ... 16024
• Обзор на Chivalry:... 17508
• Обзор на игру Kerb... 17981
• Обзор игры 007: Fr... 16619
Превью о играх
• Превью к игре Comp... 17960
• Превью о игре Mage... 14464
• Превью Incredible ... 14721
• Превью Firefall 13479
• Превью Dead Space 3 16334
• Превью о игре SimC... 14730
• Превью к игре Fuse 15442
• Превью Red Orche... 15542
• Превью Gothic 3 16343
• Превью Black & W... 17354
Главная » Статьи » Разное » Использование оболочек в Linux (shell pipe)

Использование оболочек в Linux (shell pipe)

Ключевые слова: shell, pipe, (найти похожие документы)

From: SpectatoR <SpectatoR@mo3gov.net>
Date: Mon, 28 Feb 2004 14:31:37 +0000 (UTC)
Subject: Использование оболочек в Linux

Оригинал: http://sw32bit.narod.ru/doc/shells.html

Содержание:
1. Оболочки Linux
2. Командная строка оболочки
3. Выполнение программ в фоновом режиме
4. Использование каналов
5. Построение сценариев оболочки

1. Оболочки Linux

Оболочка - это интерпретатор команд, который может использоваться для
запуска, приостановки, остановки и даже написания программ. Оболочка -
неотъемлемая часть системы Linux, а также часть проекта Linux и Unix.
Если представить себе ядро Linux как центральную часть сферы, то
оболочка предстанет в виде внешнего слоя, окружающего ядро. Когда вы
передаете команду из оболочки или других программ в Linux, ядро
соответствующим образом реагирует. Дальше в руководстве приводится
перечень оболочек, доступных в Linux, а также некоторые их
отличительные особенности. С какой оболочкой вы работаете, можно
определить при регистрации в Linux, либо просмотрев содержимое файла
/etc/passwd, либо посредством поиска в этом файле вашего имени
пользователя. Как это выглядит, демонстрирует следующий пример:

# fgrep bball /etc/passwd

bball:x:100:100:William H. Ball,,,,:/home/bball:/bin/bash

Имя оболочки, которой вы пользуетесь, выводится в конце содержимого
вашего файла passwd. Итак начнем.

Особенности оболочки ash

Оболочка ash, автором которой является Кеннет Альмквист, представляет
собой одну из самых маленьких оболочек, доступных в Linux. Эта
оболочка имеет 24 встроенные команды и 10 различных опций командной
строки. Оболочка ash поддерживает большинство из наиболее
распространенных команд оболочки, таких как cd, наряду с большинством
обычных операторов командной строки. Это популярная оболочка, которая
используется при загрузке Linux в однопользовательском режиме, в
защищенном режиме или при загрузке дискетных версий Linux. Объем
исполняемого файла, как правили в раз в 10 меньше, чем у оболочки
bash, делает ash практически незаменимой оболочкой для небольших
файловых систем.

Особенности оболочки Linux по умолчанию - bash

Оболочка bash, или Bourn Again Shell, авторами которой являются Брайан
Фокс и Чет Рамей, представляет собой одну из наиболее популярных
оболочек для Linux. Эта оболочка обладает 48 встроенными командами и
десятком опций командной строки. Оболочка bash работает аналогично
оболочке sh и содержит в каталоге /bin символическую связь с именем
sh, которая указывает на оболочку bash. Помимо того, что bash работает
аналогично оболочке sh, она также обладает возможностями csh и ksh.
Оболочка обладает широкими функциональными возможностями. Вы можете, к
примеру, прокручивать список ранее введенных команд с помощью клавиш
управления курсором, редактировать командную строку и, если вы забыли
точное имя программы, вы можете даже обратится за помощью к оболочке,
использовав сокращенное имя файла. Для этого нужно ввести часть имени
команды, а затем нажать клавишу <Tab>

Клавиша TAB служит для дополнения строки. Например вам нужно ввести
длинное и невероятно сложное имя файла. Просто наберите начало
названия этого файла и нажмите TAB - оно автоматически дополнится. То
же относится ко всем командам.

Общедоступная оболочка Корна - pdksh

Оболочка pdksh первоначально созданная Эриком Гизином, обладает 42
встроенными командами и 20 опциями командной строки. Эта оболочка,
установленная в вашей системе Linux, называется ksh и аналогично
оболочке bash она считывает сценарий инициализации оболочки
/etc/profile, если в вашем домашнем каталоге отсутствует файл
.profile. К сожалению, эта оболочка не поддерживает такую же командную
строку, как оболочка bash. Однако эта оболочка поддерживает управление
заданием, так что вы можете приостановить, перевести в фоновый режим,
повторно вызвать или завершить выполнение программ из командной
строки. Оболочка ksh практически совместима с коммерческими версиями
оболочки Корна, включаемыми в коммерческие дистрибутивы UNIX.
Руководство по этой оболочке можно найти на странице руководства для
ksh и в подкаталоге pdksh каталога /usr/doc/pdksh.

Особенности csh-совместимой оболочки - tcsh

Оболочка zsh, первоначально созданная Паулем Фальстадом (Paul
Falstad), одна из самых больших оболочек для Linux, которая обладает
84 встроенными командами. Оболочка zsh имеет более 50 различных опций
командной строки, а также эмулирует команды оболочек sh и ksh.

Подобно оболочкам bash и tcsh, оболочка zsh позволяет просматривать
ранее введенные команды, а также осуществлять сокращенный ввод,
редактировать и проверять орфографию командной строки. Она также
позволяет использовать функции работы с процессами для управления
программ. Эта оболочка поддерживает широкий набор опций командной
строки для поиска файлов и поиска в файлах по шаблонам подстановки.
Файлы запуска системного уровня для этой оболочки расположены в
каталоге /etc:

/etc/zlogin
/etc/zlogout
/etc/zshenv
/etc/zshrc

Обращение к этим файлам осуществляется в том случае, если оболочка zsh
не обнаружила в вашем домашнем каталоге аналогичных файлов, а только
файлы с лидирующей точкой в имени, например, такой как .zlogin. Эта
оболочка обладает также большим числом опций приглашения командной
строки по сравнению с другими оболочками, такими как bash и tcsh. Эта
оболочка обладает функциональными возможностями, аналогичными всем
другим оболочкам, и способна эмулировать работу оболочек sh и ksh при
вызове в качестве символической связи.

Этой оболочке посвящен большой объем информации: 10 файлов
руководства, а также каталог /usr/doc/zsh, наполненный справками,
примерами и другой актуальной и полезной информацией.

2. Командная строка оболочки

При использовании оболочки для запуска программ из командной строки
оболочка интерпретирует вашу команду, и команда выводит выходные
данные обратно на экран. Пользуясь оболочкой, вы можете отправить
выходные данные программы в нужное место, например в файл. Оболочка
может также использовать вывод одной из программ в качестве ввода
другой программы или даже указать программе на необходимость считывать
входные данные из файла. Вот так можно перенаправить вывод команды ls
в файл:

# touch /tmp/trash/file1 /tmp/trash/file2 /tmp/trash/file3 tmp/trash/file4
#ls -w 1 /tmp/trash/* >trashfiles.txt

Первая командная строка создает четыре файла в каталоге /tmp/trash.
Вторая, используя вывод команды ls, создает текстовый файл, содержащий
имена файлов, расположенных в каталоге /tmp/trash. Символ > -
называется оператором перенаправления стандартного вывода и
используется для перенаправления вывода команды в файл отличный от
предусмотренного по умолчанию. Символ < - оператор перенаправления
стандартного ввода, чтобы подать информацию на вход другой программы.
В качестве простейшего примера вы можете использовать созданный в
предыдущем случае файл trashfiles.txt, содержащий имена файлов из
каталога /tmp/trash, для построения архива с помощью команды cpio. Это
можно сделать, воспользовавшись стандартным вводом для подачи имен
файлов на вход команды trash.cpio:

# cpio -o <trashfiles.txt >trash.cpio
1 block

результате интерпретации командной строки команда cpio считывает
список файлов стандартного ввода, файла trashfiles.txt, а затем
создает архив, направляя свои выходные данные через стандартный вывод
в файл с именем trash.cpio

Теперь, если воспользоваться предыдущим примером и подать на вход
команды cpio список файлов, содержащий ошибку, команда cpio обнаружит
эту ошибку и хотя при этом по-прежнему строит архив, отправляет на ваш
экран сообщение:

# rm -fr /tmp/trash/file3
# cpio -o < trashfiles.txt >trash.cpio
cpio: /tmp/trash/file3: No such file or directory
1 block

Как уже упоминалось, один из существующих файлов был удален, а входной
файл trashfiles.txt, который по-прежнему содержит список файлов, не
был изменен.

Оболочка присваивает каждому файлу ввода и вывода номер. Стандартному
вводу присваивается номер ноль (0), выводу номер один (1), а
стандартному выводу ошибок присваивается номер (2). Зная это, вы
можете спокойно запустить cpio и "заставить" при этом сообщение об
ошибке отправиться в указанный вами файл, а не на экран. Для этого
следует использовать комбинацию оператора перенаправления стандартного
вывода и номера стандартного файла ошибок, как показано в следующем
примере:

# cpio -o < trashfiles.txt >trash.cpio 2>cpio.errors
# cat cpio.errors.errors
cpio: /tmp/trash/file3^ No such file or directory
1 block

Как видно из примера, команда cpio отправила сообщение об обнаруженной
ошибке, которое обычно направляется в стандартный ввод (на экран) в
файл с именем cpio.errors.

Всякий раз, когда вы перенаправляете вывод в файл, либо создается файл
с указанным именем, либо, если файл уже существует, названный файл
перезаписывается и его предыдущее содержимое безвозвратно теряется.

Если вам необходимо сохранить исходное содержимое файла, вы можете
добавить выходные данные программы в конец файла с помощью оператора
перенаправления вывода с конкатенацией (>>) или присоединением
(append):

# cpio -o < trashfiles.txt >trash.cpio 2>>cpio.errors

Эта командная строка сохраняет предыдущее содержимое файла cpio.errors
и дописывает все новые сообщения об ошибках в конец файла. Такой
подход позволяет организовать своего рода журнал регистрации ошибок
при выполнении команды cpio. Этот же метод применяется в случае
включения функции системного журнала Linux. В качестве roota вы можете
просмотреть содержимое файла под названием messages, который
расположен в каталоге /var/log.

Теперь попробуем использовать оператор here для построения простого
примера управления замкнутого файла базы данных посредством
комбинирования команды egrep и перенаправления ввода. Сначала
воспользуйтесь излюбленным редактором (например pico, вместе с pine)
для создания файла с именем db. После этого необходимо будет ввести
список адресов, а затем "упаковать" список, поместив в начало файла
команду egrep, а в конец - строку символов, обозначающих конец ввода.
Итак, создайте файл следующим образом:

# pico db

Теперь введите команду egrep, а после нее - короткий список адресов и
закончите файл строкой символов, соответствующих оператору here,
следующим образом:

egrep -i $1 <<zzzz
Debby,275 Collins Rd., Vestal NY 13850
Cathy, 1001 N. Vermont St., Arlington, VA 22003
Fred, Slip 417, N. Woodward Ave., Boca Raton, FL 46002
zzzz

Сохраните файл, нажав комбинацию клавиш <Ctrl-X>. Наконец, превратите
текстовый файл в исполняемую программу с помощью команды chmod
следующим образом:

# chmod +x db

В результате этих действий создается небольшая база данных адресов.
Протестируйте вашу базу данных, введя в командную строку имя программы
db и какое-либо имя, город, штат или индекс, например так:

# db deb

База данных работает за счет использования команды egrep для
считывания файла до тех пор, пока не встретится строка конца ввода
zzzz. Опция командной строки -i указывает команде egrep на отсутствие
различий между символами верхнего и нижнего регистров. Строка $1 - это
переменная среды оболочки представляет аргумент командной строки,
который подается на вход команды egrep.


3. Выполнение программ в фоновом режиме

Большинство оболочек представляют возможность запуска и последующего
выполнения программ как фоновых процессов. Запуск команды в качестве
фоновой означает, что команда выполняется в оперативной памяти, в то
время как управление командной строкой оболочки возвращается вашей
консоли. Это удобный способ работы в Linux, в особенности, если вы
работаете на отдельном терминале, вам не достает места на экране при
работе в Х11 или ваша система обладает избытком оперативной памяти.
Такие задачи, как сортировка больших файлов или поиск в каталогах и
других файловых системах, неплохие кандидаты на выполнение в фоновом
режиме.

Несмотря на то, что Linux представляет возможность работы с
виртуальными консолями, а многочисленные диспетчеры окон Х11 дают
возможность работать с разными рабочими столами, в процессе работы с
Linux вы, скорее всего, неоднократно будете выполнять программы в
фоновом режиме.

Для запуска программ в фоновом режиме в конец командной строки
добавляется символ амперсанда (&). Например, для запуска еще одной
программы с терминала Х11 вам может потребоваться запустить эту
программу в фоновом режиме, чтобы ваш текущий терминал оставался
свободным для вывода:

# rxvt &

Эта команда запускает терминал rxvt, и приглашение вашей командной
строки вновь становится свободным для ввода. С программой, выполняемой
в фоновом режиме, связывается номер процесса, доступ к которому можно
получить с помощью команды ps (process status - состояние процесса),
как в следующем примере:

# ps
...
291 1 R 0:03 rxvt
...

В приведенном примере ради экономии места перечислены не все
выполняющиеся процессы. Вы можете остановить процесс с помощью команды
оболочки kill, указав номер процесса для программы:

# kill 291
[1]+ Terminated rxvt

Если вы работаете с оболочкой bash, то для перевода выполняющейся
программы в фоновый режим и приостановки ее функционирования следует,
удерживая нажатой клавишу <Ctrl>, нажать клавишу <Z> на клавиатуре:

# pine
... programm is running... (ctrl-z)...

Pine suspended. Give the "fg" command to come back.
[1]+ Stopped (signal) pine
# fg
.... programm returns

С помощью оболочки bash вы можете запускать, приостанавливать и
выполнять несколько программ, а затем выборочно возвращать фоновую
программу на ваш экран, указав номер задания программы:

# pine
... programm is running... (ctrl-z)...

Pine suspended. Give the "fg" command to come back.
[1]+ Stopped (signal) pine
# sc
... programm is running... (ctrl-z)...

[2]+ Stopped sc
# fg %1
.... pine programm returns....

В приведенном примере программа чтения электронной почты pine
запускается, а затем приостанавливается в фоновом режиме для запуска
процессора электронных таблиц sc. Поскольку pine - это первое
приостановленное задание, оболочка присваивает заданию почтовый номер
1. Затем приостанавливается процессор электронных таблиц sc, заданию
которого присваивается номер 2, а выполнение почтовой программы
возобновляется с помощью указания ее номера задания в качестве опции
команды fg %1.

Если вы запускаете и приостанавливаете много заданий в фоновом режиме,
то можете не запомнить, какой номер задания соответствует каждой
программе или какие программы приостановлены. Список приостановленных
программ вы можете получить с помощью команды jobs оболочки bash:

# jobs

[1] Stopped (signal) pine
[2]- Stopped sc
[3]- Stopped emacs-nox
# fg %sc
.... sc programm is running...

Приведенный список показывает, что в текущий момент оболочкой
приостановлены три задания: почтовая программа pine, процессор
электронных таблиц sc и редактор emacs. Обратите внимание, что вместо
того, чтобы возобновить работу процессора электронных таблиц sc с
помощью указания номера его задания, программа вновь переводится в
фоновый режим выполнения с помощью команды fg %, в которой указано имя
приостановленного задания.

На основе точно такого же подхода вы можете также остановить
выполнение программы. Вместо того чтобы использовать команду ps для
установления номера процесса для программы, а затем применить команду
kill, вы можете воспользоваться командой kill с оператором %:

# kill %1

[1]- Stopped (signal) pine
# kill %emacs-nox

[3]+ Stopped emacs-nox

Приведенный пример демонстрирует применение команды kill для остановки
программы по ее номеру или имени. Это значительно легче, чем
использование команды ps, в особенности, если в фоновом режиме
выполняется значительное количество программ или других процессов.

Использование функций управления заданиями вашей оболочки - это мощное
средство эффективной работы с многими программами, в особенности, если
вы пользуетесь одним дисплеем или консолью.



4. Использование каналов

Вы уже знаете, как перенаправить вывод программы в файл и как
перенаправить содержимое файла в другую программу. Но все это можно
сделать одновременно, не используя временный файл, с помощью символа
вертикальной черты (|), который называется каналом (pipe).
Использование каналов для выстраивания последовательности команд в
командной строке называется конвейерной обработкой. Это быстрый и
мощный способ усиления отдельно взятых команд, который представляет
собой особенность Linux и других версий UNIX.

Каналы не только экономят ваше время, вы можете использовать различные
комбинации конвейерных команд для решения вычислительных задач с
учетом особенностей вашего способа работы и используемых программ.
Поначалу ваши конвейерные команды могут быть очень простыми, но по
мере приобретения опыта вы можете конструировать конвейеры
чрезвычайной сложности.

Концепция каналов органично вписывается в Linux, поскольку многие
команды представляют собой еще и фильтры (filters), которые
воспринимают на входе некоторый тип входных данных, обрабатывают или
преобразуют их определенным образом и выдают результат в виде выходных
данных, направленных на стандартный вывод или другую команду. Каналы
могут использоваться практически для любых вычислительных задач, в том
числе для быстрого поиска информации, генерации отчетов,
преобразования данных или просмотра результатов. Рассмотрим сначала
четыре простых примера.

# ls | lpr
# printenv | fgrep EDITOR
# nroff -man mymanpage.1 | less
# cat document.txt | wc | mail -s "document.txt Report" bball

Первая командная строка "пропускает" по каналу содержимое текущего
каталога (ls) через команду запуска на печать (lpr) для печати отчета.
Во втором примере перечень переменных текущей среды оболочки, после
чего на печать выводится "отфильтрованное" значение, соответствующее
используемому по умолчанию текстовому редактору. В третьем примере на
экран в отформатированном виде выводится страница руководства, так что
вы можете просмотреть документ на наличие ошибок. В последнем примере
текстовый документ сперва "перекачивается" через команду подсчета слов
wc, а затем результат подается на вход программы электронной почты,
которая отправляет количество символов, слов и строк, содержащихся в
документе, пользователю по имени bball.

Каналы можно использовать для постановки и решения повседневных задач,
которые обычно не удается решить за счет применения отдельных
программ. Каналы - это действительно "секретное" и мощное оружие
Linux. Например, если в вашей системе имеется большой массив
документов, а вы не помните, какой из документов содержит определенную
фразу, вы можете быстро найти эту информацию. Вместо того, чтобы
запускать текстовый процессор и открывать каждый файл в поисках нужной
фразы, вы можете ввести в командную строку следующий "командный
конвейер":

# find /home -name *.doc | xargs fgrep administration | less

В этой командной строке команда find используется для поиска в
каталоге /home всех файлов, имеющих расширение .doc, после этого она
подает имя каждого такого файла на вход команды xargs. Команда xargs в
свою очередь запускает команду fgrep для поиска в каждом из файлов
слова "administration", после чего результат "пропускается" через
пейджер less. Вы также можете использовать каналы не только для поиска
информации, но и для обработки данных и создания новых файлов.

# find *.doc | xags cat | tr ` ` `n` | sort | unig | tee dict | less

Приведенный пример строит файл под названием dict, содержащий
отсортированный список уникальных слов, содержащихся во всех текстовых
файлах. Это словарь, но если честно, в таком словаре не все слова
будут написаны правильно.

Эта конвейерная команда работает, "прокачивая" каждый обнаруженный
файл через команду tr, которая преобразует каждый символ пробела в
символ "возврат каретки, перевод строки", чтобы разбить входной поток
на последовательность строк, содержащих по одному слову. Поток строк
сортируется (sort), а команда uniq удаляет все строки, встречающиеся
более одного раза. Обратите внимание, что команда tee используется
также для сохранения выходных данных в виде файла.

Команда tee используется для полного и детализированного сохранения
результатов. Это особенно полезно, когда вам требуется проверить
результаты при конструировании каналов или сохранить промежуточные
результаты в сложном командном конвейере. Рассмотрим следующий пример:

# xwd -out wd.xwd
# xwdtopnm < wd.xwd ppmtopng tee wd.png | pngtopnm | tee wd.pnm |
pnmtotiff >wd.tif

В приведенном примере с помощью команды Х11 xwd осуществляется захват
и сохранение содержимого окна или рабочего стола Х в виде "скриншота"
или дампа. Затем для преобразования этого графического образа в
переносимый растровый формат используется команда xwdtopnm. Выход
команды xwdtopnm затем подается на вход команды ppmtopng. Команда tee
используется в данном случае для сохранения выхода команды ppmtopng -
в формате png - в файле wd.png. Одновременно с этим графический образ
в формате png снова преобразуется переносимый растровый формат с
помощью команды pngtopnm, а команда tee вновь используется для
сохранения растрового изображения - теперь в файле wd.pnm. Наконец
команда pnmtotiff сохраняет переносимый файл растра как графическое
изображение в формате TIFF. В одной командной строке четырехкратное
преобразование графики!

Использование каналов в Linux - простой способ добиться нужного
результата. По мере работы с Linux вы создадите собственный набор
необходимых вам командных строк. Создав такой набор, вы сможете
приступить к конструированию собственных команд оболочки.

5. Построение сценариев оболочки

Чтобы работать в Linux с командами, вовсе не обязательно быть
программистом. После знакомства с различными программами, когда вы
освоите работу с командной строкой и обнаружите, что постоянно вводите
в командную строку одни и те же выражения, сохраните эти командные
строки в виде текстовых файлов и превратите их в сценарии (scripts)
оболочки. В своей простейшей форме сценарий оболочки представляет
собой одну или несколько наиболее часто используемых командных строк.
Рассмотрим следующий пример:

# rxvt -geometry 80*11+803+375 -bg write -fg black -e pico &
# rxvt -geometry 80*24+806+2 -bg write -fg black -e pine &

Эти две командные строки запускают редактор pico и почтовую программу
pine в двух окнах терминала rxvt на втором рабочем столе экрана с
разрешением 800*600. Можно с уверенностью сказать, что ввод подобных
команд всякий раз, когда у вас возникает необходимость запустить эти
программы - удовольствие небольшое. Хотя вам ничто не мешает после
перехода к другому рабочему столу вручную запустить окна терминала,
все же на установку правильных размеров окон и запуск программ
потребуется определенное время. Вы можете, однако, преобразовать эти
команды в исполняемые файлы, сначала сохранив их в виде файлов с
помощью редактора, а затем применив к ним команду chmod:

# chmod +x d2

Теперь, когда у вас возникнет необходимость запустить эти программы,
все что вам нужно сделать - ввести в командную строку выражение, проще
которого вряд ли можно придумать:

# d2

Вы можете обеспечить этой новой команде большую гибкость за счет
использования переменных оболочки $1 и $2, которые представляют первый
и второй аргументы командной строки в команде оболочки. Отредактируйте
созданный вами файл и замените имена программ этими переменными:

# rxvt -geometry 80*11+803+375 -bg write -fg black -e $2 &
# rxvt -geometry 80*24+806+2 -bg write -fg black -e $1 &

Обратите внимание, что порядок переменных не имеет значения. Теперь
при запуске команды вы можете подставить в командную строку имена
программ, как в следующем примере:

# db2 pine pico

Результат этой команды точно такой, как и предыдущей, с той разницей,
что теперь вы имеете возможность запускать в терминальных окнах
практически любые программы.

С помощью оболочки можно быстро построить простые программы для
решения насущных задач.
548 Прочтений •  [Использование оболочек в Linux (shell pipe)] [08.05.2012] [Комментариев: 0]
Добавил: Ukraine Vova
Ссылки
HTML: 
[BB Url]: 
Похожие статьи
Название Добавил Добавлено
• Использование оболочек в Linux (she... Ukraine Vova 08.05.2012
Ни одного комментария? Будешь первым :).
Пожалуйста, авторизуйтесь для добавления комментария.

Проект входит в сеть сайтов «8Gamers Network»

Все права сохранены. 8Gamers.NET © 2011 - 2025

Статьи
Рецензия на Pressure
Рецензия на Pressure
Чтобы обратить на себя внимание, начинающие маленькие разработчики, как правило, уходят в жанры, ...
Рецензия на Lost Chronicles of Zerzura
Рецензия на Lost Chron...
Игры, сделанные без любви и старания, похожи на воздушный шар – оболочка есть, а внутри пусто. Lo...
Рецензия на The Bridge
Рецензия на The Bridge
«Верх» и «низ» в The Bridge — понятия относительные. Прогуливаясь под аркой, можно запросто перей...
Рецензия на SimCity
Рецензия на SimCity
Когда месяц назад состоялся релиз SimCity, по Сети прокатилось цунами народного гнева – глупые ош...
Рецензия на Strategy & Tactics: World War 2
Рецензия на Strategy &...
Название Strategy & Tactics: World War II вряд ли кому-то знакомо. Зато одного взгляда на ее скри...
Рецензия на игру Scribblenauts Unlimited
Рецензия на игру Scrib...
По сложившейся традиции в информационной карточке игры мы приводим в пример несколько похожих игр...
Рецензия на игру Walking Dead: Survival Instinct, The
Рецензия на игру Walki...
Зомби и продукция-по-лицензии — которые и сами по себе не лучшие представители игровой биосферы —...
Обратная связь | RSS | Донейт | Статистика | Команда | Техническая поддержка