====== Перенаправление потоков ввода/вывода ====== * [[http://ru.wikipedia.org/wiki/Стандартные_потоки]] * [[http://ru.wikipedia.org/wiki/Перенаправление_(UNIX)]] * [[http://ru.wikipedia.org/wiki/Именованный_канал]] * [[http://en.wikipedia.org/wiki/Remote_Shell]] ===== Файловые дескрипторы ===== Номер Название Оператор 0 STDIN < 1 STDOUT > ===== Оператор > ===== $ ps ax > ps.txt $ > ps.txt ps ax $ less ps.txt $ grep init ps.txt ===== Оператор < ===== * [[Сервис MySQL#Импорт данных]] MySQL $ grep init < ps.txt $ < ps.txt grep init ===== Оператор | ===== $ ps ax > ps.txt $ grep init < ps.txt или $ ps ax | grep init $ du -s /usr/share/* | sort -n | tail -n 1 FreeBSD $ tail -f /var/log/messages | grep auth Linux $ tail -f /var/log/auth.log | grep FAILED $ ls -l /bin | sort -n -k5 | tail -n5 | cut -c48-60 ===== Команда tee ===== $ find /usr/share -name '*.html' | tee find_res.txt $ ls /bin /b1n 2>&1 | tee full_log.txt ===== Команда cat ===== $ cat /etc/passwd При отсутствии аргументов читает с STDIN, пишет на STDOUT $ cat $ cat < /etc/passwd $ cat > f.txt $ cat < f.txt > f2.txt ===== Оператор >> ===== $ cat >> f2.txt ===== Оператор << ===== $ cat > f2.txt < ===== Файловый дескриптор номер 2 - STDERR ===== $ ls fhgfdgbdfhsd $ ls errfilename > ls_res.txt $ ls errfilename 2> ls_err.txt $ ls /bin /b1n 2>&1 | tee full_log.txt $ ls /bin /errdirname > ls.txt 2>&1 $ ls /sdfgsdfgsd > /dev/null 2>&1 $ ls /sdfgsdfgsd 2>/dev/null >&2 $ ls /sdfgsdfgsd &>/dev/null ===== Перенаправление ввода/вывода между процессами, работающими на разных системах ===== # cd / # tar -c -f etc.tar etc/ # tar -c -f - etc/ | cat > etc.tar # tar -c -f - etc/ | rsh -l userX backup 'cat > etc.tar' # tar -c -f - etc/ | ssh -l userX backup 'cat > etc.tar' # tar -c -f - etc/ | ssh userX@backup 'cat > etc.tar' ===== Именованные каналы ===== В файлах grep1.txt и grep2.txt не должно быть пустых строк в конце $ cat grep1.txt rtf$ doc$ $ cat grep2.txt gz$ $ mkfifo findresult.fifo $ find /usr/share/ -type f > findresult.fifo & $ cat grep*.txt | grep -f - findresult.fifo $ rm findresult.fifo