[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-linux-chto-takoe-perenapravlenie-vvoda-vyvoda-i-konveyery-pipes":3},{"id":4,"slug":5,"topicId":6,"topicSlug":7,"topicName":8,"topicEmoji":9,"question":10,"answer":11,"codeLang":12,"codeSrc":12,"important":12,"commonMistakes":12,"modernUsage":12,"difficulty":13,"tags":14,"related":15,"progress":16,"seo":17},1014,"chto-takoe-perenapravlenie-vvoda-vyvoda-i-konveyery-pipes",18,"linux","Linux","🐧","Что такое перенаправление ввода-вывода и конвейеры (pipes)?","Каждый процесс в Linux имеет три стандартных потока ввода-вывода.\n\n| Поток | Номер дескриптора | Описание |\n|---|---|---|\n| stdin | 0 | Стандартный ввод (обычно клавиатура) |\n| stdout | 1 | Стандартный вывод (обычно терминал) |\n| stderr | 2 | Стандартный вывод ошибок (обычно терминал) |\n\n### Перенаправление вывода\n\n```bash\nls -la > listing.txt                    # stdout -> файл (перезаписать)\necho \"new line\" >> listing.txt          # stdout -> файл (дополнить)\njava -jar app.jar 2> errors.log         # stderr -> файл\njava -jar app.jar > output.log 2>&1     # stdout и stderr -> один файл\njava -jar app.jar &> output.log         # Сокращённая форма (bash)\ncommand > \u002Fdev\u002Fnull 2>&1                # Подавить весь вывод\n```\n\n### Перенаправление ввода\n\n```bash\npsql mydb \u003C schema.sql                  # Ввод из файла\n\n# Here Document\ncat \u003C\u003C EOF > config.yml\nserver:\n  port: 8080\n  host: localhost\nEOF\n```\n\n### Конвейеры (pipes)\n\nКонвейер `|` передаёт stdout одной команды на stdin другой:\n\n```bash\n# Подсчитать Java-процессы\nps aux | grep java | grep -v grep | wc -l\n\n# Топ-10 больших файлов в \u002Fvar\ndu -ah \u002Fvar | sort -rh | head -10\n\n# Отфильтровать логи\ncat application.log | grep \"ERROR\" | grep \"2024-04-01\" > errors_today.log\n\n# Уникальные IP-адреса из access.log\nawk '{print $1}' access.log | sort | uniq -c | sort -rn | head -20\n\n# Мониторинг лога с фильтром\ntail -f application.log | grep --line-buffered \"ERROR\"\n```\n\n### tee — вывод в файл и на экран\n\n```bash\nls -la | tee listing.txt                              # Записать и показать\necho \"nameserver 8.8.8.8\" | sudo tee \u002Fetc\u002Fresolv.conf # Записать с sudo\n```\n\n### xargs — передача stdin как аргументов\n\n```bash\nfind \u002Ftmp -name \"*.tmp\" | xargs rm                    # Удалить найденные файлы\nfind \u002Ftmp -name \"*.tmp\" -print0 | xargs -0 rm         # Безопасно (имена с пробелами)\nfind . -name \"*.gz\" | xargs -P 4 gunzip               # Параллельное выполнение\n```\n\n> **На собеседовании:** ключевое — понимание `|`, `>`, `>>`, `2>&1`. Интервьюер может попросить перенаправить stderr и stdout в разные файлы или объяснить `> \u002Fdev\u002Fnull 2>&1`. Частая ошибка — путать порядок перенаправлений: `2>&1 > file` и `> file 2>&1` дают разный результат.","","junior",[7],[],null,{"title":18,"description":19,"ogTitle":18,"ogDescription":19,"keywords":20,"schemaAnswer":19,"featuredSnippetReady":21},"Что такое перенаправление ввода-вывода и конвейеры (pipes)? — Gymterview","Каждый процесс в Linux имеет три стандартных потока ввода-вывода.",[7,13],true]