Я имел ту же проблему и решил ее путем добавления к моему ~/.xinitrc этой строки:
export CLICOLOR=TRUE
Используйте exec
встроенный с перенаправлением, но никакой командой для перенаправления дескрипторов файлов оболочки. Если Вы хотите восстановить исходное место назначения, необходимо будет сохранить его в другом дескрипторе.
exec 3>&1 >foo.txt
for x in *; do
print $x
done
exec >&3 3>&-
Когда объемом перенаправления является часть кода, более просто поместить перенаправление вокруг той части кода.
for x in *; do
print $x
done >foo.txt
Если Вы хотите применить перенаправление к последовательности инструкций, поместите его в фигурных скобках.
{
for x in *; do
print $x
done;
echo 'one more line'
} >foo.txt
Эти конструкции существуют во всех оболочках Bourne/POSIX-style, не только в zsh.
Можно перенаправить вывод for
достаточно легко с:
for foo in list; do
somethingto $foo
done > /path/to/forloop_log.txt
Это только перенаправит вывод for
цикл и не вывод влияния прежде или после него.
Можно выполнить то же самое для в значительной степени любой команды или набора команд при помощи подоболочки:
dosomething
( dosomethingelse; doyetanotherthing; ) > /path/to/special.log
dostillanotherthing
exec 3>&1...
там. Не больше с современными оболочками. – Stéphane Chazelas 24.01.2014, 01:47