Вы находитесь на странице: 1из 8

Лекция № 2

Командная оболочка Unix. Bash


Unix оболочка
• Unix оболочка — это интерпретатор командной строки, который выполняет команды, вводимые
пользователем. Мы вводим команду, она интерпретируется, выполняется а затем мы получаем
результат ее выполнения. Оболочка обеспечивает традиционный интерфейс ввода команд Unix,
к которому мы привыкли. Это, как правило, черный экран и белый текст. Мы вводим команды в
виде обычного текста, а также можем создавать скрипты из одной или нескольких команд.

• Оболочка — это ваш интерфейс взаимодействия с системой. После входа в систему Unix, вы
оказываетесь в программе, которая называется оболочка.

Виды оболочек:
• Thompson Shell
• PWB Shell
• Bourne Shell
• Almquist shell (ash)
• Bourne-Again Shell (Bash)
• Korn shell (ksh)
• Z shell (zsh)
• C shell
• Fish
История Unix оболочка
Манипулирование файловой
системой

• Манипулирование файлами:
ls, touch, cp, mv, rm
• Содержимое файлов:
cat, more, less, head, tail
• Манипулирование каталогами:
mkdir, rmdir, ls, cd, pwd
• Управление владельцами и правами:
chown, chgrp, chmod
• Создание ссылок: ln
• Поиск файлов: find, locate
• Узнать тип файла: file
Файловые маски
Bash поддерживает следующие файловые маски:
• *.срр — * заменяет любую последовательность
символов.
• lecture?.docx — ? заменяет один символ.
• lecture{1,2,3}.txt — {} подставляют значения,
заданные через запятую.
• lecture[1235].txt — [] совпадают с любым из
перечисленных символов. Поддерживаются
промежутки: [a-с], [2-­7].
Поток ввода/вывода
У каждого процесса есть три стандартных потока ввода/вывода:
stdin, stdout и stderr
Дескрипторы файлов stdin, stdout и stderr — 0, 1 и 2.

Потоки можно перенаправлять в файл и из файла:


$ll > list.txt
$grep –c test < list.txt

’>’ — перезаписывает файл, ’>>’ — дописывает в конец


Примеры
Перенаправить вывод random в null:
$cat /dev/random > /dev/null
По умолчанию ’>’ перенаправляет stdout:
$ls ­‐la > listing.txt
Перенаправление stderr в файл "error.txt“:
$ls­‐y 2> error.txt
Потоки можно перенаправлять друг в друга:
$ ls ­‐y >/dev/null 2>&1
’&>’ перенаправляет сразу stdout и stderr :
$grep test -‐r /etc &> results.txt
Потоки можно перенаправлять друг в друга:
$ls ­‐y >/dev/null 2>&1
Временный файл stdout другой программы:
$grep lecture* < (ll) > results.txt
Pipes
Pipe (конвеер) – это однонаправленный канал межпроцессного взаимодействия. Термин был
придуман Дугласом Макилроем для командной оболочки Unix и назван по аналогии с
трубопроводом. Конвейеры чаще всего используются в shell-скриптах для связи нескольких
команд путем перенаправления вывода одной команды (stdout) на вход (stdin) последующей,
используя символ конвеера ‘|’

Pipelines можно представить как:

Между программами происходит поточная


передача данных, т.е. следующая программа
не ждет полного завершения предыдущей

Общий синтаксис:
command_1 | command_2 [| command_3 ...]

Вам также может понравиться