linux, перенаправление
Дана команда: ls file1 file2. Файл file1 существует, файл file2 не существует.
Перенаправьте только стандартную ошибку в конвейер, одновременно
записывая номера строк и перенаправьте вывод в файл. Стандартный вывод
должен отображаться на экране.
Имею такой код:
ls file1 file2 2>error
Не могу понять, как записать в error пронумерованный текст ошибки.
Буду благодарен за помощь!
Ответы (2 шт):
Автор решения: nexoma
→ Ссылка
есть система команд из 2-3 символов, одна из них nl
предложу такой вариант, где sdx.txt - существующий:
ls sdx.txt file1 file2 2>&1 1> 2.txt | nl
вывод на консоли:
> ls sdx.txt file1 file2 2>&1 1> 2.txt | nl
> 1 ls: cannot access 'file1': No such file or directory
> 2 ls: cannot access 'file2': No such file or directory
вывод stdout из файла:
localhost:~ # cat 2.txt
sdx.txt
Автор решения: Stanislav Volodarskiy
→ Ссылка
2> выделяет ошибки, >(...) передаёт их на обработку в другую программу, nl - нумерует строки, > error.txt - сохраняет их:
$ ls script.sh lost.txt deal missing.txt 2> >(nl > error.txt) script.sh deal: deal_10 deal_11 $ cat error.txt 1 ls: cannot access 'lost.txt': No such file or directory 2 ls: cannot access 'missing.txt': No such file or directory $