Правила створення каталогів
Для кожної процедури треба виконати наступні дії:
1. Створіть файл з ім'ям процедури і запишіть її туди.
2. Змініть права доступу до файлу за допомогою команди chmod.
3. Перемістіть файл в каталог, де зберігаються команди, наприклад, в ваш bin.
4. Переконайтеся, що в змінної PATH є ім'я вашого ката логу bin.
5. Виконайте вказану команду.
ls / bin / usr / bin | sort | uniq -d
Ця процедура визначає, які файли з однаковими іменами знаходяться в каталогах / bin та в / usr / bin. Файли в каталозі / bin в більшості випадків замінюють собою однойменні файли в каталозі / usr / bin.
# Копіює file1 в file2, file3 в file4.
while test "$ 2"! = ""
if test "$ 1"! = ""
then echo "$ 0: odd number of arguments"> 2
У цій процедурі показується, як використовувати цикл while для обробки списку позиційних параметрів, певним чином пов'язаних один з одним. Тут цикл while краще циклу for, оскільки за допомогою команди shift можна робити настроювання позиційних параметрів на обробку пов'язаних з ними аргументів.
# Копіює перераховані файли в каталог "dir"
# За умови, що зазначене не менше двох
# Аргументів, що "dir" є каталогом,
# І що кожний наступний аргумент
# Являє собою файл, доступний для читання.
then echo "$ 0: $ 1 is not a directory";> 2
else dir = $ 1; shift
do cp $ eachfile $ dir
Ця процедура використовує команду if для виведення повідомлень про неправильне застосування процедури. Цикл for в кінці процедури переглядає всі аргументи, крім першого.
# Читає стандартний ввід і виводить список
# Алфавітно-цифрових рядків, які відрізняються лише
# Розміром літер, представляючи їх в рядкової формі
tr -cs 'A-Za-z0-9' '\ 012' | sort -u | \
tr 'A-Z' 'a-z' | sort | uniq -d
Ця процедура є прикладом процесу, створюваного конвеєром. Символ \ в кінці першого рядка означає, що наступний рядок є продовженням. На перший погляд видається незрозумілим, як ця команда працює. З принципами роботи команд tr, sort і uniq можна ознайомитися в User's Reference. Команда tr перетворює всі символи, крім букв і цифр, в символи "новий рядок", після чого ущільнює повторювані символи. В результаті кожен набір літер виявиться в окремому рядку. Команда sort сортує рядки і залишає з будь-якій послідовності повторюваних рядків тільки один рядок. Наступна команда tr перетворює всі букви в рядкові, роблячи тим самим ідентифікатори, що відрізняються лише величиною букв, однаковими. Висновок знову сортується, все дублікати збираються разом. Команда "uniq -d" формує перелік рядків, що зустрічаються в тексті більш ніж один раз.
Процес побудови подібного конвеєра заснований на тому факті, що канали та файли можуть взаимозаменяться. Перша з наведених нижче рядків еквівалентна двом наступним за умови наявності достатнього дискового простору:
cmd1 | cmd2 | cmd3
cmd1> temp1; Подавши на стандартне введення файл з тестовими даними й приступивши до виконання команд зліва направо, ми створюємо конвеєр, в якому кожна команда зчитує дані з попереднього файлу і записує результат в наступний файл. Мета - створити серію перетворень, що перетворюють вихідні дані в необхідний результат. # Формат: draft file (s) # Висновок сторінок на принтер. do nroff -man $ i | lpr Приклад використання явних прапорів, які не мають значень за замовчуванням. # Формат: edfind file arg # Шукає остання поява в файлі "file" рядки, # Що починається з підрядка "arg", після чого # Виводить 3 рядки (попередню, знайдену, Ілюстрація використання команди ed для редагування вихідних текстів, в яких Shell виконує підстановку значень змінних. # Формат: edlast file # Виводить останній рядок файлу then echo "$ 0: Usage: $ 0 [-s] file." 1> 2 file $ * | fgrep 'text' | sed 's /:.*//' Щоб визначити, які файли в каталозі містять тільки текстову інформацію, textfile фільтрує списки аргументів для інших команд. Наприклад, наступна командний рядок надрукує всі текстові файли в поточному каталозі: pr `textfile *` | lpr У процедурі використовується опція -s, що відбирає зі списку текстові файли. # Формат: writemail message user # Якщо користувач зареєструвався, # Повідомлення виводиться на термінал; # В іншому випадку, надсилається користувачеві. Ілюстрація використання командної угруповання. Повідомлення, позначене як "$ 1", передається команді write, і, в разі невдалого завершення останньої, команді mail.Схожі статті