[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-rabota-v-cli-bash-kak-rabotaet-perenapravlenie-vvoda-vyvoda":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":22,"progress":23,"seo":24},152,"kak-rabotaet-perenapravlenie-vvoda-vyvoda",4,"rabota-v-cli-bash","Работа в CLI (Bash)","💻","Как работает перенаправление ввода\u002Fвывода?","Перенаправление ввода\u002Fвывода — это механизм, позволяющий изменить стандартные источники и приёмники данных для процесса.\n\n### Аналогия\n\nПредставьте трубопровод на заводе. По умолчанию вода (данные) приходит из крана (клавиатура), а уходит в раковину (экран). Перенаправление позволяет подключить другой источник (файл вместо клавиатуры) или другой приёмник (файл вместо экрана), не меняя сам механизм обработки.\n\n### Три стандартных потока\n\nВ Unix каждый процесс имеет три стандартных потока:\n+ **stdin (0)** — стандартный ввод (обычно клавиатура)\n+ **stdout (1)** — стандартный вывод (обычно терминал)\n+ **stderr (2)** — стандартный поток ошибок (обычно терминал)\n\n### Перенаправление stdout\n\n```bash\necho \"Hello\" > file.txt          # Записать в файл (перезаписать)\necho \"World\" >> file.txt         # Дописать в конец файла\nls \u002Fnonexistent > output.txt     # Ошибки НЕ попадут в файл — пойдут в терминал\n```\n\n### Перенаправление stderr\n\n```bash\nls \u002Fnonexistent 2> errors.txt    # Ошибки в файл\nls \u002Fnonexistent 2>> errors.txt   # Дописать ошибки в файл\n```\n\n### Перенаправление stdout и stderr вместе\n\n```bash\n# stdout и stderr в один файл\ncommand > output.txt 2>&1        # Классический синтаксис\ncommand &> output.txt            # Сокращённый синтаксис (bash)\n\n# stdout и stderr в разные файлы\ncommand > stdout.txt 2> stderr.txt\n\n# Дописать оба потока в файл\ncommand >> output.txt 2>&1\n```\n\n### Перенаправление stdin\n\n```bash\nsort \u003C unsorted.txt              # Подать файл на вход sort\nmysql -u root mydb \u003C dump.sql    # Подать SQL-дамп на вход mysql\n```\n\n### \u002Fdev\u002Fnull — подавление вывода\n\n```bash\n# Подавить весь вывод\ncommand > \u002Fdev\u002Fnull 2>&1\n\n# Подавить только ошибки\ncommand 2> \u002Fdev\u002Fnull\n\n# Подавить только stdout, оставив ошибки\ncommand > \u002Fdev\u002Fnull\n```\n\n### Here Document и Here String\n\n```bash\n# Here Document — многострочный ввод\ncat \u003C\u003C EOF\nМногострочный\nтекст\nс переменной $HOME\nEOF\n\n# Без подстановки переменных\ncat \u003C\u003C 'EOF'\n$HOME не будет раскрыта\nEOF\n\n# Here String — подать строку на stdin\ngrep \"pattern\" \u003C\u003C\u003C \"строка для поиска\"\n```\n\n### Порядок перенаправлений имеет значение\n\nЭто ключевой момент, на котором часто ошибаются:\n\n| Запись | Что произойдёт |\n|---|---|\n| `command > file 2>&1` | stderr направляется туда, куда **уже** указывает stdout (в file). Оба потока в файле. |\n| `command 2>&1 > file` | stderr направляется туда, куда **сейчас** указывает stdout (в терминал), затем stdout перенаправляется в file. Ошибки — в терминале, stdout — в файле. |\n\n> **На собеседовании:** интервьюер почти наверняка спросит про разницу между `>` и `>>`, про `2>&1` и порядок перенаправлений. Частая ошибка — писать `command 2>&1 > file` вместо `command > file 2>&1`, ожидая, что оба потока попадут в файл.","","junior",[15,16,17,18,19,20,21],"cli","stdin","stdout","перенаправление","linux","bash","stderr",[],null,{"title":25,"description":26,"ogTitle":27,"ogDescription":28,"keywords":29,"schemaAnswer":35,"featuredSnippetReady":36},"Перенаправление ввода\u002Fвывода в Bash: stdin, stdout, stderr — Gymterview","Как работает перенаправление ввода\u002Fвывода в Bash: операторы >, >>, \u003C, 2>, &>, потоки stdin, stdout, stderr. Примеры и подробное объяснение.","Перенаправление ввода\u002Fвывода в Bash — stdin, stdout, stderr | Gymterview","Разбор перенаправления потоков в Unix: stdin (0), stdout (1), stderr (2), операторы >, >>, \u003C, 2>, &> с примерами.",[30,16,17,21,31,32,33,34],"перенаправление ввода вывода","bash redirect","оператор >","оператор >>","2>&1","В Unix каждый процесс имеет три стандартных потока: stdin (0) — ввод, stdout (1) — вывод, stderr (2) — ошибки. Перенаправление выполняется операторами: > — запись в файл, >> — дозапись, \u003C — чтение из файла, 2> — перенаправление ошибок, &> — оба потока, 2>&1 — stderr в stdout.",true]