Говорите на BASH/Введение

**Рекомендуется** при освоении курса запускать команды в терминале вашего компьютера (**Не** запускайте их с правами суперпользователя).

## Как запустить консоль

Операционные системы GNU/Linux и BSD поддерживают несколько виртуальных консолей. Графический сервер обычно работает на седьмой, то есть чтобы вернуться оттуда, куда мы сейчас направимся нужно будет нажать одновременно **Ctrl+Alt+F7**.
Теперь нажмите **Ctrl+Alt+F1**.

Вы только что переключались в виртуальную консоль. Всего пользователю доступно 7 таких консолей. В каждой консоли можно войти в систему под именем разных пользователй.
Переключаться последовательно между консолями можно с помощью сочетания **Alt+"Стрелка влево"** и **Alt+"Стрелка вправо"**.
В оконной среде удобно использовать так называемые эмуляторы терминала. Их можно запустить через меню. Если Вы знаете, какие эмуляторы установлены у Вас, можно вызвать комбинацией **Alt+F2** окно "Выполнить программу" и набрать в строке название эмулятора. В среде GNOME это xterm или gnome-terminal, в среде KDE - konsole

## Вместо предисловия

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

rm |
-ri |
"/home/user/anime"
| ||||

имя программы для удаления |
параметры | аргумент | ||||

Назначение:Удалить каталог, требуя подтверждение перед удалением каждого файла |


### Трюки

Если Вы читаете эти строки, значит Вы хоть раз задавали себе вопрос:"На какие удобства можно рассчитываь в терминале". Ответ:"Автозаполнение." Это опция чрезвычайно удобна при работе с длинными командами и файлами с длинными названиями. Чтобы увидеть как она работает, наберите в командной строке cle и нажите клавишу TAB. Компьютер закончит за вас: "clear". Аналогично дополняются аргументы: ls / ,два нажатия TAB, и компьютер выведет содержимое корневого каталога. Клавиша "Стрелка вверх" выводит на экран предыдущую команду. Это позволяет легко пвторить выполненную программу. Более того, Вы можете её отредактировать.

## Файлы и каталоги

cd |
/var/log
|

перейти | куда (каталог) |


- cd (без аргументов) - перейти в домашний каталог
- cd .. перейти на уровень вверх (в родительский каталог текущего каталога)

ls |
-l | /home
|

список файлов | подробно |


## Перенаправления

Пренаправление потоков - мощный инструмент, который позволяет организовывать взаимодействие разных программ. Это - важнейший элемент философии UNIX. Приведённый ниже пример состоит из двух частей - команда до перенаправления (">>") и после. Попробуйте выполнить команду cat /dev/urandom саму по себе и вы увидите как по экрану "поползут крякозаблики" (нажмите Ctrl+C для остановки). Командой ">>" эти "крякозяблики" отправятся на вход звуковой карты. ( Услышите ли Вы звук зависит от конфигурации системы.)

cat |
/dev/urandom |
">>" |
/dev/dsp
| |||

вывести содержимое файла в стандартный вывод |
генератор псевдослучайных символов |
перенаправить вывод в файл |
файл звуковой карты | |||

Назначение:Быстро проверить работоспособность звуковой карты
|


Здесь используется "конвейер" - символ ("|"). Он перенаправляет стандартный вывод одной программы на стандартный ввод другой программы.

man |
useradd |
"конвейер" |
grep |
-i |
-- |
-e
|

вызвать справку | для программы useradd | перенаправить вывод на ввод фильтра |
фильтр | не учитывать регистр |
конец списка опций |
что ищем |

Назначение:Быстро проверить назначение опции
|




for |
FILE |
"in " |
*.md5 |
do |
md5sum |
-c |
$FILE; |
done
|

Управляющий элемент |
Помещаем имя в переменную |
Управляющий элемент |
маска файла |
Управляющий элемент |
программа для работы с md5-хешами |
опция проверки |
подставляем имя файла |
Управляющий элемент |

Назначение:Проверить md5-хеши всех пакетов в каталоге (для который есть файл с хешем)
|


## Золотое правило

Существует не менее двух способов сделать что-то. Следующие команды выполняют одну и ту же операцию распаковывают все targz- архивы(тарболлы) в текущем каталоге.

В терминологии командных оболочек UNIX, командами одинаково называются и встроенные команды, и сторонние программы. Это объясняется тем, что в UNIX- подобных ОС программы вызываются по имени. Хотя подобное смешение может вызвать поначалу некоторую путаницу, на самом деле представляет собой большое удобство.

## Фильтр

Одна из полезнейших программ. Вместе с механизмом перенаправления позволяет очень легко осуществлять нетривиальную обработку информации. Сравните два примера.

grep, как мы уже знаем, - это фильтр. Опция -v инвертирует условие поиска (шаблон), "OK" - наш шаблон. Что выведет на экран вторая команда?



## Задания для отработки материала

<quiz display=simple> {Команда mount, вызванная без аргументов, выводит на экран список отмонтированных устройств. Напишите команду, выводящую только устройства, отмонтированные в каталог /media. |type="{}"} { mount | grep /media _25}

{Напишите команду, выводящую список всех отмонтированных устройств в файл mounted.list |type="{}"} { mount > mounted.list _25} </quiz>

## Проверочный тест

<quiz display=simple> {Назначение команды |type="()"} | rm| ls| pwd | man |grep|cat

+ Вывести содержимое файла на экран

+----- удалить файл --+--- вывести название текущего каталога ---+-- Вызов справки -+---- Вывести содержимое текущего каталога

+-Вывести строки, отвечающие условию

{укажите команды-синонимы |type="[]"} - pwd | grep -i cats + ls | grep -i cats + find `pwd` -maxdepth 1 | grep -i cats - find . -iname cats </quiz>