- •Лабораторна робота 3
- •Базові регулярні вираження
- •Метасимволы, використовувані в регулярних вираженнях
- •Приклади регулярних виражень
- •Приклад виконання лабораторної роботи n3 Завдання 1
- •Завдання 2
- •Завдання 3
- •Варіанти індивідуальних завдань
- •Хід роботи
- •Вибрані команди Unix. Короткий опис:
- •Приклад виконання лабораторної роботи n4 Завдання 1
- •Завдання 1, варіант 1
- •Завдання 1, варіант 2
- •Завдання 1, варіант 3
- •Завдання 2
- •Завдання 2 варіант 1
- •Завдання 2, варіант 2
- •Завдання 2, варіант 3
- •Завдання 3
- •Завдання 3 варіант 1
- •Завдання 3 варіант 2
- •Варіанти індивідуальних завдань
- •Хід роботи
- •Команда awk :
- •Опис шаблонів
- •Приклад виконання лабораторної роботи n5 Приклад 1-1
- •Приклад 1-2
- •Приклад 1-3
- •Приклад 2-3.1
- •Приклад 2-3.2
- •Приклад 2-3.3
- •Приклад 2-3.4
- •Варіанти індивідуальних завдань
- •Команда sh:
- •Команда env:
- •Приклад виконання лабораторної роботи n6
- •Варіанти індивідуальних завдань
- •Хід роботи
- •Деякі приклади програмування
- •Приклад 2
- •Приклад 3
- •Варіанти індивідуальних завдань
Команда 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$ |
|