Наконец-то починил вывод echo -e "hello\nworld" в ZSH — проблему, над которой долго бился сам и которой в своё время напрягал народ на welinux'е ( http://welinux.ru/post/2544/ ).
Вкратце суть проблемы такова: в ответ на команду
% echo -e "hello\nworld"
(ключевой момент — использование бэкслэш-последовательностей)
я вместо двух строк с заведомыми словами получал какой-то мусор:
% echo -e "hello\nworld"
world"hello
world
%
Как оказалось, это следствие работы функции preexec, с помощью которой я выводил в заголовок эмулятора терминала имя текущей запущенной программы. Раньше это дело выглядело так:
preexec() {
print -Pn "\e]0;`echo $1 | sed -r 's/^(sudo [^[:space:]]+|[^[:space:]]+).*/\1/'`\a"
}
но одна простая модификация — и вот уже моя функция работает правильно!
preexec() {
print -Pn "\e]0;`echo $1 | head -n1 | sed -r 's/^(sudo [^[:space:]]+|[^[:space:]]+).*/\1/'`\a"
}
Спасибо mva ( http://juick.com/mva ) за его жуйкопост #1160964
(именно там прозвучала мысль о том, что виноват может быть терминал, что и направило мои усилия в нужном направлении)
Minoru
13.01.2011 14:03 netbook
Do you really want to delete ?
у меня все ок ЧЯДНТ?
Ты пост-то читал? У тебя что, точно такая же функция preexec (с тем же телом, то есть)?
я вообще не настраивал
Вот! Потому-то у тебя всё и работает ^_^ Впрочем, у меня *теперь* оно тоже работает — просто я этой досадной мелочи столько времени, нервов и сил (причём не только своих) отдал, что просто грех было не резюмировать всю.