Стандартный ввод
stdin (поток номер 0) зарезервирован для чтения команд пользователя или входных данных.
При интерактивном запуске программы по умолчанию нацелен на чтение с устройства текстового интерфейса пользователя (клавиатуры).
Командная оболочка UNIX (и оболочки других систем) позволяют изменять цель этого потока с помощью символа «<». Системные программы, как правило, не пользуются этим потоком.
Стандартный вывод
stdout (поток номер 1) зарезервирован для вывода данных, как правило текстовых.
При интерактивном запуске программы по умолчанию нацелен на запись на устройство отображения (монитор).
Средства для выполнения программ в фоновом режиме (например, nohup) обычно переназначают этот поток в файл.
Стандартный вывод ошибок
stderr (поток номер 2) зарезервирован для вывода диагностических и отладочных сообщений в текстовом виде.
Чаще всего цель этого потока совпадает с stdout, однако, в отличие от него, цель потока stderr не меняется при «>» и создании конвейеров («|»). То есть, отладочные сообщения процесса, вывод которого перенаправлен, всё равно попадут пользователю.
Командная оболочка UNIX позволяет изменять цель этого потока с помощью конструкции «2>». Например, для подавления вывода этого потока нередко пишется 2>/dev/null.
В результате ввода
команды в консоль, образуется два вариант
потока: stdout (команда выполнена верно $
ls /home) и stderr (произошла ошибка $ ls /home_1
каталога не существует).
Чтобы направить выводимые
данные в файл, используется знак >,
пример:
$ echo 'Hello' > file.txt
$ cat file.txt
Hello
при использовании знака
>, каждый раз при записи файла, вы
стираете его предыдущее содержимое
(перезапись)
$ echo 'Second line' > file.txt
$ cat file.txt
Second line
Для добавления данных файл
используется знак >>, пример:
$ cat file.txt
Hello
$ echo 'Second line' >> file.txt
$ cat file.txt
Hello
Second line
Фрагменты информации,
полезные для конфигурации командной
консоли, находятся в переменных среды.
Как правило пишутся они с заглавных
букв ($HOSTNAME, $PATH).
Отобразим все переменные
среды:
$ set
гораздо удобнее
использовать команду:
$ set | less
либо
$ set | more
Возможна самостоятельная
установка и удаление переменных
окружения:
$ MYTEST=56
$ echo $MYTEST
56
Созданная переменная существует только в данной консоли, в которой она создана, то есть при запуске нового сеанса bash переменной не существует:
$ bash
$ echo $MYTEST
$ (пустая строка)
Для отображения всех
переменных окружения bash, введем:
$ env
MATE_DESKTOP_SESSION_ID=this-is-deprecated
SSH_AGENT_PID=2174
GPG_AGENT_INFO=/tmp/keyring-SSYieJ/gpg:0:1
TERM=xterm
SHELL=/bin/bash
XDG_SESSION_COOKIE=1501da290bf45a57efba5d5c50b08c92-1357554099.837482-939212275
MATE_KEYRING_CONTROL=/tmp/keyring-SSYieJ
OLDPWD=/home/myuser
USER=myuser
LIBGL_DRIVERS_PATH=/usr/lib/dri
DESKTOP_AUTOSTART_ID=106893101d1868f004135755410044383100000021040023
SSH_AUTH_SOCK=/tmp/keyring-SSYieJ/ssh
MATECORBA_SOCKETDIR=/tmp/matecorba-myuser
SESSION_MANAGER=local/mint-14:@/tmp/.ICE-unix/2104,unix/mint-14:/tmp/.ICE-unix/2104
USERNAME=myuser
DEFAULTS_PATH=/usr/share/gconf/default.default.path
XDG_CONFIG_DIRS=/etc/xdg/xdg-default:/etc/xdg
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
DESKTOP_SESSION=default
PWD=/home/myuser/Загрузки
LANG=ru_UA.UTF-8
MANDATORY_PATH=/usr/share/gconf/default.mandatory.path
MDM_XSERVER_LOCATION=local
SHLVL=1
HOME=/home/myuser
LOGNAME=myuser
XDG_DATA_DIRS=/usr/share/default:/usr/local/share/:/usr/share/:/usr/share/mdm/
DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-aojuMDqRfg,guid=163673ac9e8f8184e0436cd750eaa1b4
MDMSESSION=default
WINDOWPATH=8
XDG_RUNTIME_DIR=/run/user/myuser
DISPLAY=:0
MDM_LANG=ru_UA.UTF-8
XAUTHORITY=/home/myuser/.Xauthority
_=/usr/bin/env
1 комментарий:
а практическое применение этого всего - это скрипты :) ну и конечно еще можно вспомнить о tee в тему про потоки
Отправить комментарий