@python_hackersha

Задача на каналы, stderr, stdin, stdout в Linux. Как работают потоки ввода-вывода в Linux?

l s f i l e 1 f i l e 2
Файл file1 существует, файл file2 не существует. Перенаправьте только стандартную ошибку в канал, одновременно записывая номера строк, и перенаправьте вывод
в файл.

В общей сложности несколько часов бился над данной задачей.
Методом перестановки всех возможных операторов перенаправления потоков получил такое решение, но оно неверное:
ls file1 file2 2>&1 1>output.txt | nlr

Самым логичным было бы написать так, но такой вариант не нумерует строки:
ls file1 file2 > output.txt | nl

есть несколько вопросов:
1. Почему последний вариант, кажущийся самым правильным строки не нумерует
2. Операторы перенаправления потоков выполняются справа налево или слева направо?
3. Операторы перенаправления выполняются последовательно (то есть ожидают выполнения предыдущих), ил
и выполняются параллельно?
4. Как решить эту задачу? Возможно что-то не так концептуально?
  • Вопрос задан
  • 55 просмотров
Пригласить эксперта
Ответы на вопрос 1
@fbi_suck
Эникей
1. Потому что он неправильный, в nl не попадает ничего, вы еще и поток ошибок забыли. Писать в файл вам надо после nl
2. ЧатГПТ говорит, что слева направо, но вроде это не совсем так, я не уверен.
3.
4. Пункт 5.12 правил
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы