Minoru 13.01.2011 14:03 netbook

Наконец-то починил вывод 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
(именно там прозвучала мысль о том, что виноват может быть терминал, что и направило мои усилия в нужном направлении)

zsh
1. nya 13.01.2011 14:13 Gajim

у меня все ок ЧЯДНТ?

2. Minorunya /1 13.01.2011 14:14 netbook

Ты пост-то читал? У тебя что, точно такая же функция preexec (с тем же телом, то есть)?

3. nyaMinoru /2 13.01.2011 14:14 Gajim

я вообще не настраивал

4. Minorunya /3 13.01.2011 14:16 netbook

Вот! Потому-то у тебя всё и работает ^_^ Впрочем, у меня *теперь* оно тоже работает — просто я этой досадной мелочи столько времени, нервов и сил (причём не только своих) отдал, что просто грех было не резюмировать всю.

Do you really want to delete ?