- •Оглавление
- •Введение
- •Лабораторная работа 1 Операционная система Linux в графическом режиме
- •1.1. Изучим элементы рабочего стола gnome
- •1.2. Познакомимся с авторами интегрированной среды gnome и других программ
- •1.3. Создадим панель и изучим порядок изменения ее свойств
- •1.4. Освоим порядок изменения свойств программы Наутилус
- •1.5. Изучим управление свойствами окна в графической среде gnome
- •1.6. Сохраним в виде графического файла содержимое экрана
- •1.7. Освоим программу создания архивов в графическом режиме
- •1.8. Используем простой текстовый редактор для подготовки командного файла – сценария
- •1.9. Изучим действия, позволяющие ассоциировать документ с приложением
- •Лабораторная работа 2 Основы использования командной строки
- •2.1. Выполним первые действия в командном режиме
- •2.2. Изучим команды, сообщающие информацию о программно-аппаратном комплексе компьютера
- •2.3. Познакомимся с командой echo, и переменными оболочки
- •2.4. Изучим систему помощи в командном режиме семейства unix/Linux
- •2.5. Изучим, что такое команда
- •2.5.1. Рассмотрим типы и количество команд
- •2.5.2. Рассмотрим параметры командной строки
- •2.5.3. Рассмотрим использование нескольких опций одной команды
- •2.6. Рассмотрим использование специальных символов оболочки
- •2.7. Изучим историю набранных команд и средства редактирования командной строки
- •2.8. Рассмотрим простейшее использование текстового редактора VI
- •VI file_one
- •2.9. Ознакомимся с основами работы с программой Midnight Commander
- •Лабораторная работа 3 файловая система
- •3.1. Изучим иерархическую файловую систему
- •3.2. Рассмотрим права доступа к файлам
- •3.3. Рассмотрим типы файлов
- •3.4. Рассмотрим примеры файлов разного типа
- •3.5. Рассмотрим команды работы с каталогами
- •3.5.1. Научимся создавать каталоги
- •VI script3
- •VI script4
- •3.5.2. Научимся удалять каталоги
- •3.5.3. Научимся копировать и перемещать файлы и каталоги
- •3.5.4. Изучим возможность выполнять разные операции над каталогами с разными правами доступа
- •3.6. Рассмотрим использование ссылочных файлов
- •3.7. Изучим понятие таблицы иноде (inode)
- •3.8. Расширим понимание и умение использовать команды less и more
- •3.9. Рассмотрим сортировку содержимого файлов
- •3.10. Познакомимся с командой grep
- •3.11. Познакомимся с командой diff
- •3.12. Познакомимся с командой find
- •1) Find / -name echo
- •4.1. Рассмотрим классификацию процессов Linux
- •4.2. Изучим команды получения информации о загруженности системы и активных пользователях
- •VI working
- •4.3. Познакомимся с командами top и ps
- •Vim topfile
- •4.4. Рассмотрим работу в фоновом режиме
- •4.5. Рассмотрим управление приоритетами процессов
- •4.6. Изучим простые возможности обмена информацией между пользователями
- •4.7. Рассмотрим средства управление ресурсами пользователя
- •Лабораторная работа 5 Сценарии в операционной системе Linux
- •If условие
- •If условие
- •If условие
- •Библиографический список
2.6. Рассмотрим использование специальных символов оболочки
Продолжим рассмотрение правил использования командной строки. Поскольку оболочек много, то, естественно, что какие-то конкретные правила записи команд могут отличаться для разных версий программы. Но многие оболочки интерпретируют специально выделенный набор символов одинаково. За ними закреплены особые функции. Мы уже встретились с тем, как используются «/» и «$». В командной строке могут быть использованы и другие специальные символы. Рассмотрим их назначение, систематизировав такую информацию в одном месте. При этом для некоторых символов подробные примеры использования будут приведены и в других частях пособия. До начала рассмотрения использования некоторых специальных символов отметим, что их очень много. Рассматривать будем только небольшую часть. Описание всех из них содержится в страницах справочного руководства man страницы bash.
Символ \
Сначала изучим, как используется символ «\» – обратный слеш. Он может иметь разное применение. В имени файла он используется, когда за ним располагается пробел « » или другой символ, выполняющий служебную роль, но последнюю надо отменить. Следующая группа команд демонстрирует операции с каталогом, имеющим в имени пробел. В приведенном тексте применен символ (#), используемый в сценариях для записи комментариев.
# переход в домашний каталог пользователя
cd ~
# вывод его адреса
pwd
root
# создание каталога,
# имеющего в имени символ пробел
mkdir 1-th\ directory
# копирование файла в созданный каталог
cp .profile /root/1-th\ directory
# копирование второго файла в созданный каталог
cp .bashrc ./1-th\ directory
# вывод списка файлов текущего каталога
# и всех подчиненных ему
ls –R
.:
1-th directory
./1-th directory
Кавычки
Есть три типа кавычек: двойные ( " ), одиночные ( ’ ) и обратные ( ` ) (в литературе встречаются и другие названия третьих: одиночные апострофы, слабое ударение). Они всегда используются в паре.
Внутри двойных кавычек отменяется действие всех служебных символов кроме трех: $ (доллар), ` (обратные кавычки) и \ (обратный слеш). В некоторых вариантах оболочек пара таких символов отменяется еще и действие специальных символов «!» и «|».
Одинарные кавычки действуют более «строго». Внутри них теряют назначение все специальные символы оболочки. Еще одна пара символов – обратные кавычки – применяются, когда результат выполнения одной команды нужно использовать как входные аргументы для выполнения другой команды.
Начнем с рассмотрения использования двойных кавычек. Используемая в нескольких следующих примерах команда echo выводят значения двух переменных HOME и BASH. Для двойных кавычек в первом и втором случаях вывод одинаков – двойные кавычки не отменяют действие символа $. Только в третьем случае его действие отменяется символом \, поэтому распечатывается не значение переменной, а набор символов $HOME.
echo “$HOME $BASH”
/root /bin/bash
echo “$HOME $BASH”
/root/bin /bash
echo “\$HOME $BASH”
$HOME /bin/bash
В следующих командах имена переменных заключены в одиночные кавычки. В первом и втором случаях действие символа $ отменяется, а в третьем – отменяется действие и \.
echo’$HOME $BASH’
$HOME $BASH
echo ’$HOME $BASH’
$HOME $BASH
echo ’\$HOME $BASH’
\$HOME $BASH
Теперь приведем примеры команд с использованием обратных кавычек. Как говорилось их применение оправдано, когда результат выполнения одной команды надо передать другой. Если ввести команду
cal 12
то выводится информация о 12-м месяце текущего года.
Декабрь 2009
Пн |
Вт |
Ср |
Чт |
Пт |
Сб |
Вс |
|
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
|
|
|
Команда
date “+%m %y“
даст такой результат
12 09
Такие две команды можно соединить обратными кавычками так
cal `date “+%m %y“`
Это даст результат как у команды cal с параметрами 12 09
Декабрь 2009
Пн |
Вт |
Ср |
Чт |
Пт |
Сб |
Вс |
|
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
|
|
|
Продолжим рассматривать использование других специальных символов оболочек.
Символ &
Этот символ позволяет перевести выполнение команды в фоновый режим. Последний может одновременно реализовывать несколько процессов. В режиме многозадачности они будут попеременно получать системные ресурсы и, прежде всего, процессорное время. Мы подробнее поговорим о фоновых процессах в лабораторной работе 4.
Символ ;
Этот символ используется, когда в строке надо записать более одной команды. Если не ставить этот знак, то вторая команда будет восприниматься как параметры первой. Но если соединить этим знаком обе команды, то они будут выполнены последовательно. К примеру, если записать
cd / ; ls
то будут выполнены две команды. Первая сделает активным корневой каталог файловой системы, а вторая – распечатает на экране его содержимое.
bin dev home lost+found misc net proc sbin srv tmp var boot etc lib media mnt opt root selinux sys usr
Действие следующих символов так же позволяют записать в строке более одной команды. Но последние оказывают влияние друг на друга.
Символ |
Этот случай использования специального символа оболочки мы уже рассматривали. Его применяют для связывания команд с перенаправлением результатов выполнения одной команды (стандартного вывода) на вход (стандартный ввод) следующей. Утилита ps выводит список активных процессов, а grep ищет и выводит в текстовом файле строки, содержащие фрагменты-образцы. Приведенная комбинация двух команд выводит на экран только те из активных процессов, которые начинаются с символа «[». Команда представляет интерес потому, что процессы ядра заключаются в квадратные скобки.
ps -ef | grep “\[“
Приведем еще примеры использования рассматриваемого специального символа. Команда wc подсчитывает характеристики файлов (количество символов, слов или строк). Такая комбинация команд позволяет подсчитать количество файлов текущего каталога
ls -l | wc -l
Отметим, что параметр -l команды wc выводит количество строк, а одноименный параметр первой команды выводит список файлов текущего каталога по одному в строке.
Если соединить знаком «|» утилиту printenv и команду сортировки содержимого файла sort, то получим список специальных переменных, который упорядочен по их имени
printenv | sort
Сделаем еще одно замечание о связывании команд. Для удобства просмотра на экране текстов большого размера используются команды more и less. Они позволяют выводить в постраничном режиме содержимое текстовых файлов. Связанные с другими командами символом «|», они обеспечивают постраничный вывод информации (при заполнении экрана вывод информации останавливается до нажатия определенной клавиши, например, пробел). Их отличие в том, что вторая (less) обеспечивает возврат к уже просмотренной информации, а первая – нет.
Символы && и ||
Они являются управляющими символами и применяются в случаях, когда выполнение команды зависит от результатов предыдущей.
Если две команды соединены так
КОМАНДА1 && КОМАНДА2
то вторая из них выполняется тогда, когда первая команда завершилась успешно (принято, что код ее выполнения будет равен 0).
Если вторую команду надо выполнить в случае неудачного завершения первой используют символы «||». В таком случае код выполнения первой команды отличен от нуля, Приведем примеры использования этих символа.
date || cal
Выполняется только первая команда date
Вск Апр 9 08:49:17 MSD 2006
date && cal
Выполняются обе команды date и cal
Ноя Суб 4 08:49:17 MSD 2006
Ноябрь 2006
Пн Вт Ср Чт Пт Су Вс
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
Задание 17.
Опробуйте использование символов && и || на следующих примерах. Команда
mkdir dir1
создает новый каталог. Если она завершается успешно, то код возврата будет 0, в противном случае – 1. Создайте каталог с именем dir1 и в этой же строке выведите сообщение, используя &&
mkdir dir1 && echo “Well”
Теперь соедините команду создания каталога с именами dir2 и вывод сообщения символом ||.
mkdir dir2|| echo “Well”
Теперь замените команду создания каталогов другой
grep root /etc/passwd
Она проверяет, есть ли в файле /etc/passwd (файл паролей) строка root. Задайвайте имя существующих пользователей (asplinux, bin), а затем не существующих (например, noroot, asplonux1). Соедините выполнение такой командой с выводом сообщения сначала символами &&, а затем – ||
Символы > < >>
Они используются для того, чтобы временно изменить назначение стандартных потоков: ввода, вывода и ошибок. Последние имеют следующие обозначения и цифровые эквиваленты.
stdin 0
stdout 1
stderr 2
По умолчанию каждая программа получает эти три потока. При этом ввод данных она ожидает с клавиатуры, а выводить информацию, в том числе об ошибках, будет на терминал. Символ > позволяет перенаправить стандартный вывод в файл. К примеру
date > fpr
позволяет перенаправить стандартный вывод команды date в файл fpr. Таким образом, в этом файле фиксируется текущая дата и его содержимое можно использовать в других командах. Использование символа >> позволяет добавить результат в уже созданный файл.
ls >> fpr
Последняя команда добавляет вывод команды ls в уже созданный файл fpr. Теперь в нем будет записана дата, а затем содержимое текущего каталога. Далее fpr можно просмотреть, например, используя cat, перенаправляя его на ввод команды символом <
cat < fpr
Сделаем небольшое отступление, подробнее изучив использование команды cat. Она может выполнять разные операции. Мы уже приводили вариант использования команды, когда создавали текстовые файлы – сценарии.
cat > file
Приведем еще примеры
cat
Таким образом, начинается вывод информации с клавиатуры на экран. Напомним, что комбинация <Ctrl+D> – означает окончание ввода с клавиатуры.
Следующая команда
cat file > file1
выполняет копирование файла file в file1.
Исполнив это
cat >> file1
можно добавить текст, набираемый на клавиатуре в конец файла.
И, наконец, подобным образом
cat file file1 > file2
объединяют в файле file содержимое других файлов (не обязательно других) – file1 и file2 (или file1 и file1, соответственно).
Задание 18.
Сравните содержимое каталогов двух пользователей: asplinux и root. Определите, какой из них содержит больше файлов.
Задание 19.
В файле my запишите результат выполнения команды date.
date “+%m %y” > my
Перенаправьте содержимое файла my команде cal
cal < my
Приведем пример, когда стандартный поток, куда направляются ошибки, перенаправлен в файл. При правильном выполнении команд, это файл пуст. Дадим сначала правильную команду, а затем – неправильную.
ls –R 2>> errlist1
cat errlist1
Теперь у этой же команды уберем пробел, отделяющий имя команды от параметра, и выполним две такие команды
ls–R > errlist2
cat errlist2
Результаты последней команды будут такими
-bash: ls-R: команда не найдена
Изучим использование шаблонов в именах файлов.
Символы * ? [ ]_
Они используются для замещения определенного набора символов в именах файлов. При этом фиксируются группы файлов с «похожими» именами. Символ * заменяет любой набор символов. К примеру, а* определяет все файлы, начинающиеся на букву а и имеющие в имени любое количество символов. В противоположность символ ? означает замещение только одного символа. Такой пример использования шаблона а? фиксирует все файлы из двух символов, начинающиеся на символ а. Квадратные скобки позволяют выводить список файлов, в имени которых содержится один из группы символов. Квадратные скобки часто используют с символом * или ?. Если в команде вместо имени указать [abс]??, то предполагается воздействовать на файлы, имеющие в имени три буквы, начинающиеся на а, b или с.
Для подробного рассмотрения использования шаблонов в именах файлов сделаем следующее. Создадим несколько текстовых файлов, используя команды cat и cp, а далее будем выводить на экран часть из них командой ls, используя разные шаблоны для формирования группы из имеющихся файлов. Шаблоны имен файлов являются частью средства UNIX/Linux. Они называются регулярными выражениями и используются со многим командами.
Для начала создадим файл a из другого - /root/.bashrc, выполнив следующие команды
cd ~
cat .bashrc > a
Сделать копию a в файле с именем A можно еще и так
cp a A
Получим файлы со следующими именами: a A1 B Ba b1 ad f fa fab.
Задание 20.
Проверьте результат выполнения следующих команд (параметр -C давайте для экономного вывода):
ls -C [a,B]
ls -C [aB]
ls -C [a-B]
ls -C [B-a]
ls -C *[a,A]
ls -C *[a,B]*
ls -C *a
ls -C *a*
ls -C [a-s]
ls -C [a-b]*
ls -C [a-f]
ls -C ?a
ls -C [a-b]*
ls -C fa