Как настроить файл перенаправления в произвольном порядке

Или это, gnu sed :

sed -n -e '1~4 {N; p;}' file

-n подавляет вывод. Если в строке 1 + 4 * k (k = итератор) текущая строка и следующая строка считываются в пространство шаблонов и p печатает (текущую) пространство шаблонов (т.е. временное включение вывода)

1
10.07.2017, 05:52
3 ответа

«> » действует как «1 **> **»

так и должно работать

./errorandoutput.sh  2>file  1>&2



$ ( echo yay ; fhgfhgf ) > out 2>&1
$ cat out
yay
bash: fhgfhgf: command not found
$ ( echo yay ; fhgfhgf ) 2> out 1>&2
$ cat out
yay
bash: fhgfhgf: command not found
0
27.01.2020, 23:33

Порядок перенаправления работает иначе.

Порядок перенаправления определяет только порядок действий оболочки с описанием файла, а не с его содержимым.

В:

./errorandoutput.sh >file 2>&1

Сначала оболочка перенаправляет стандартный вывод на file, затем перенаправляет стандартную ошибку на стандартный вывод, который теперь указывает на file, так что и стандартный вывод, и стандартная ошибка теперь переходят к file.

На этом этапе выполняется оболочка с перенаправлением. К содержимому файла fileэто не имеет никакого отношения.

Порядок содержимого в fileопределяется порядком выполнения команд внутри скрипта. Измените свой скрипт на:

#!/bin/bash

ls dflj
echo myecho

и вы бы получили то, что хотели.

2
27.01.2020, 23:33

Если это важно, отправьте стандартный вывод в файл, а затем выведите его. Конечно, для этого потребуется сценарий :

.
temp=/tmp/yc$$
yourcommand > ${temp}
cat ${temp} && rm -f ${temp}
0
27.01.2020, 23:33

Теги

Похожие вопросы