Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Операционные системы (2 семестр).docx
Скачиваний:
3
Добавлен:
12.11.2019
Размер:
193.38 Кб
Скачать

Команда sh:

Синтаксис

 

sh файл [аргументи...]

Опис

 

Команда sh викликає командний інтерпретатор shell для виконання програми або командного скрипта, записаного у файлі. При цьому для файлу можуть і не передбачатися права на виконання.

Команда env:

Синтаксис

 

env [-] [ім'я=значення ...] [команда аргумент ...]

Опис

 

Команда env одержує поточне оточення, модифікує його у відповідності зі своїми аргументами, і потім виконує команду в модифікованому оточенні. Пари ім'я=значення поєднуються з наслідуваним оточенням перед виконанням команди. При наявності прапора "-" наслідуване оточення повністю ігнорується, і команда виконується з тим оточенням, яке визначено командним рядком env.

Якщо команда не задана, то сформоване оточення видається на стандартний вивід, по одній парі ім'я=значення в рядку.

Приклад виконання лабораторної роботи n6

Розробка послідовностей команд була докладно розглянута в прикладі до лабораторної роботи N4. Тут ми скористаємося першою з послідовностей, створених у тій роботі, і простежимо її оформлення як командного скрипта.

Відмінності нашого скрипта від послідовності команд, створеної в лабораторній роботі N4, полягають у тому, що:

  • імена все файлів, використовуваних і створюваних у скрипте, записуються як: $HOME/ім'я_файлу - для того, щоб скрипт міг запускатися з будь-яких каталогів, але використовував би при цьому файли, що перебувають у нашому домашньому каталозі;

  • у кінець скрипта вставлена команда echo - для того, щоб виконання скрипта якось було видне на екрані.

Протокол Хід роботи з п.1 виглядає так:

Створення файла-скрипта.

bash2-2.05$ ed myscript

myscript: No such file or directory

a

pr -n' ' -T $HOME/Hum-Dum.txt |

sed -n 's/ *//p' |

cut -f1,3 -d' ' |

sed -n '/[0-9]/p' >$HOME/temp01

cut -f1 -d' ' $HOME/temp01 |

sed -n 's/$/a\\/p' >$HOME/temp02

cut -f2 -d' ' $HOME/temp01 >$HOME/temp03

paste -d'\n' $HOME/temp02 $HOME/temp03 >$HOME/temp01

sed -f $HOME/temp01 $HOME/Hum-Dum.txt >$HOME/result

rm -f $HOME/temp*

echo "Скрипт виконаний!"

.

w

355

q

Виклик командного інтерпретатора для виконання скрипта.

bash2-2.05$ sh myscript

Скрипт виконаний!

Роздруківка результату.

bash2-2.05$ cat result

Humpty-Dumpty

Set on the wall.

on

Humpty-Dumpty

Had a greate fall.

a

And all the king's horses,

all

And all the king's man.

all

Can not Humpty,

not

Can not Dumpty,

not

Humpty-Dumpty,

Dumpty-Humpty,

Set on this wall

on

Again.

bash2-2.05$

Далі, щоб не захаращувати наші приклади ми не будемо приводити в протоколах роздруківки файлу result.

Протокол Хід роботи з п.2 виглядає так:

Додання скрипту права на виконання.

bash2-2.05$ chmod u+x myscript

Перевірка прав доступу до файлу-скрипту.

Видне, що є право "x" для власника.

bash2-2.05$ ls -l myscript

-rwxr--r-- 1 ap10999 students 355 Сен 11 13:38 myscript

Спроба виконати скрипт із батьківського каталогу.

bash2-2.05$ cd ..

bash2-2.05$ myscript

bash2: myscript: command not found

Удале виконання: при виклику зазначений шлях до файлу.

bash2-2.05$ ./ap10999/myscript

Скрипт виконаний!

bash2-2.05$

Протокол Хід роботи з п.3 виглядає так:

Створення підкаталогу ./bin.

bash2-2.05$ mkdir bin

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

bash2-2.05$ mv myscript ./bin/myscript

Установлюється значення змінної PATH.

bash2-2.05$ PATH=$PATH:$HOME/bin; export PATH

Визначення поточного каталогу (це наш домашній каталог).

bash2-2.05$ pwd

/home/ap10999

Виклик скрипта.

bash2-2.05$ myscript

Скрипт виконаний!

Перехід у підкаталог ./bin.

bash2-2.05$ cd bin

Виклик скрипта.

bash2-2.05$ myscript

Скрипт виконаний!

Перехід у каталог, батьківський для нашого домашнього.

bash2-2.05$ cd ..

bash2-2.05$ cd ..

bash2-2.05$ pwd

/home

Виклик скрипта.

bash2-2.05$ myscript

Скрипт виконаний!

Перевірка змінних оточення

( те, що ми додали в PATH, виділене).

bash2-2.05$ env

PWD=/home/ap10999

HOSTNAME=pegas.mipk.kharkiv.edu

LESSOPEN=|/usr/bin/lesspipe.sh %s

USER=ap10999

LS_COLORS=no=00:fi=00:di=01;34:ln=01;36:pi=40;33:so=01;35:bd=40;33;01:cd=40;33;0

1:or=01;05;37;41:mi=01;05;37;41:ex=01;32:*.cmd=01;32:*.exe=01;32:*.com=01;32:*.b

tm=01;32:*.bat=01;32:*.sh=01;32:*.csh=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:

*.taz=01;31:*.lzh=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.gz=01;31:*.bz2=01;31:*

.bz=01;31:*.tz=01;31:*.rpm=01;31:*.cpio=01;31:*.jpg=01;35:*.gif=01;35:*.bmp=01;3

5:*.xbm=01;35:*.xpm=01;35:*.png=01;35:*.tif=01;35:

MACHTYPE=i386-redhat-linux-gnu

MAIL=/var/spool/mail/ap10999

INPUTRC=/etc/inputrc

LANG=ru_RU.koi8r

LOGNAME=ap10999

SHLVL=1

SHELL=/bin/bash2

HOSTTYPE=i386

OSTYPE=linux-gnu

HISTSIZE=1000

HOME=/home/ap10999

TERM=xterm

USER=ap10999

LS_COLORS=no=00:fi=00:di=01;34:ln=01;36:pi=40;33:so=01;35:bd=40;33;01:cd=40;33;0

1:or=01;05;37;41:mi=01;05;37;41:ex=01;32:*.cmd=01;32:*.exe=01;32:*.com=01;32:*.b

tm=01;32:*.bat=01;32:*.sh=01;32:*.csh=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:

*.taz=01;31:*.lzh=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.gz=01;31:*.bz2=01;31:*

.bz=01;31:*.tz=01;31:*.rpm=01;31:*.cpio=01;31:*.jpg=01;35:*.gif=01;35:*.bmp=01;3

5:*.xbm=01;35:*.xpm=01;35:*.png=01;35:*.tif=01;35:

MACHTYPE=i386-redhat-linux-gnu

MAIL=/var/spool/mail/ap10999

INPUTRC=/etc/inputrc

LANG=ru_RU.koi8r

LOGNAME=ap10999

SHLVL=1

SHELL=/bin/bash2

HOSTTYPE=i386

OSTYPE=linux-gnu

HISTSIZE=1000

HOME=/home/ap10999

TERM=xterm

PATH=/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin:/home/ap10999/bin

SSH_TTY=/dev/pts/0

_=/usr/bin/env

OLDPWD=/home

bash2-2.05$

При виконанні п.4 ми в створюваний профіль користувача включили також команду echo - щоб виконання профілю було видне на екрані.

Протокол Хід роботи з п.4 виглядає так:

Перехід у домашній каталог.

bash2-2.05$ cd

Створення файлу-профілю.

bash2-2.05$ ed .profile

.profile: No such file or directory

a

PATH=$PATH:$HOME/bin; export PATH

echo "Каталог /home/ap10999/bin доданий в PATH!"

.

w

84

q

Виходимо із системи.

bash2-2.05$<Ctrl+D>

При новому вході в систему .profile автоматично виконується

login as: ap10999

ap10999@pegas.mipk.kharkiv.edu's password:

Last login: Wed Sep 11 13:46:43 2002 from tiger.mipk-kspu.kharkov.ua

Каталог /home/ap10999/bin доданий в PATH!

Виклик скрипта.

bash2-2.05$ myscript

Скрипт виконаний!

bash2-2.05$