vkВконтакте
kodomoallakarpova@kodomo.fbb.msu.ru
GMailvseokeyboss@gmail.com
Учебный сайт
   Карповой Аллы
Командная оболочка Bash



Bash (акроним от "Bourne-again SHell") - это стандартный интерпретатор команд на большинстве линукс систем. В его обязанности входит обработка и исполнение команд, с помощью которых пользователь управляет компьютером.

Потоки и способы их перенаправления

Процесс взаимодействия с пользователем выполняется в терминах записи и чтения в файл. То есть вывод на экран представляется как запись в файл, а ввод — как чтение файла. Файл, из которого осуществляется чтение, называется стандартным потоком ввода, а в который осуществляется запись — стандартным потоком вывода.

Стандартные потоки привязаны к файловым дескрипторам с номерами 0, 1 и 2.

  • Стандартный поток ввода (stdin) — 0;
  • Стандартный поток вывода (stdout) — 1;
  • Стандартный поток ошибок (stderr) — 2.

Потоки можно подключать к чему угодно: к файлам, программам и даже устройствам. Этот процесс называется перенаправлением.

Способы перенаправления потоков:
Способ Описание
< файл Использовать "файл" как источник данных для стандартного потока ввода.
> файл Направить стандартный поток вывода в "файл". Если файл не существует, он будет создан; если существует — перезаписан сверху.
>> файл Направить стандартный поток вывода в "файл". Если файл не существует, он будет создан; если существует — данные будут дописаны к нему в конец.
2> файл Направить стандартный поток ошибок в "файл". Если файл не существует, он будет создан; если существует — перезаписан сверху.
2>> файл Направить стандартный поток ошибок в "файл". Если файл не существует, он будет создан; если существует — данные будут дописаны к нему в конец.
>& файл Направить стандартный поток вывода и стандартный поток ошибок в "файл".
| программа1 Направить стандартный поток вывода в программу "программа1".

Для управления командами в bash существуют специальные символы:

Символ Пояснение
> перенаправление вывода
< перенаправление ввода
&1 указатель на поток 1(stdout). Если после >& ничего не стоит, то подразумеваются оба выводных потока
/ корень файловой системы
./ текущая директория
../ родительская директория
~/ домашняя директория
* набор из любых символов

Пример 1:

ls -l | wc -l > fail.txt
Вывели построчно содержимое текущей папки, посчитали количество этих строк и перенаправили результат в файл fail.txt.

Пример 2:

cd /home/work
Перешли в корень, затем в папку home, затем в папку work.


© Алла Карпова

Дата последнего редактирования: 14.02.2013

Valid HTML 4.01 Transitional Правильный CSS!