LINUX.ORG.RU

bash PS1

 ,


0

1

Всем доброго времени суток!

Возникла странная задача ( идея ). На 6-ом centos установлено некое древнее ПО писанное китайско-индийскими разработчиками. Аналогов нет и оно скомпиленное. Исходников тоже.

В свой системе логирования по лени природной они использовали PS1 вместо того чтобы сделать правильно..

Поменял я немного PS1 на сей виртуалке, дабы различать по цветам себя ( рут, не рут, где я, и вообще на какой машине ). Естественно цветовые эскейп-последовательности в логах выглядят не красиво.. И началась война, между разработчиками ( у которых глазки устают ) и тестерами ( у которых глазки от смотрения кривых логов устают ещё больше ). А по-скольку это всё вообще в одном лице - внимательный читатель понимает в какую депрессию впал автор..

И задался я вопросом - есть ли какой-то короткий путь попросить bash использовать не PS1, а например какой-нибудь PS5 ( на всякий случай сделаем PS255 )) ).

Заранее спасибо всем ответившим.



Последнее исправление: rumos (всего исправлений: 1)

В чем проблема открыть исходники bash и погрепать по слову PS1?

Но я бы парсил логи. Например, как-то так:

$ echo "This is \e[44mcolorful\e[0m log" | sed 's@e\[[0-9]@\\\0@g' | while read L ; do echo -e "$L" ; done

Kroz ★★★★★
()

А что мешает переопределять PS1 при вызове индо-китайского ПО, например в скрипте его вызова? Тогда для ПО будет свой PS1, а при выходе будет системный PS1

sigurd ★★★★★
()

Естественно цветовые эскейп-последовательности в логах выглядят не красиво..

Чем логи смотрятся? Vim, less вполне себе умеют в цвета.

PunkoIvan ★★★★
()
Ответ на: комментарий от legolegs

Пропиши в ~/.bashrc свой PS1 но не экспортируй его.

Не удивлюсь, что после этого эта странная прога будет падать :) И вообще, подстраиваться под странные проги — неправильно. В конце концов, если не именно PS1 (а оно может даже умеет парсить \u\w\h\!\$ ?), а просто настроечная переменная — это не так уж плохая идея, но и вызывать потому как VAR=val proga — наиболее правильно. А может это обучающе-логирущая прога? Тогда распознание PS1 может и правильно.

vodz ★★★★★
()
export PS1='[\u@\h \W]\$ '

if ( shopt -q login_shell ); then
    настройка PS1 как мне нравится
fi;

всё решило. спасибо всем кто помогал разобраться.

парсинг логов через sed - правильная мысль. ещё более верная - в самой программке бы использовать что-то вида isatty(STDOUT_FILENO), и, конечно, не использовать PS1.

переопределить PS1 при вызове - тоже правильная мысль, но здесь это было нельзя делать, т.к. в процессе оно делало su юзер, и подхватывало его home env.

rumos
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.