Задача - Отображение глубины вложенности. (Необходимо решить задачу. Есть оплата.)

Модератор: Модераторы разделов

Botinok
Сообщения: 4

Задача - Отображение глубины вложенности.

Сообщение Botinok »

Господа, срочно требуется ваша помощь!

Стоит задача:

Изменить конфигурационные файлы вашего командного интерпритатора таким образом, чтобы формировалась динамически изменяющаяся и наследуемая в дочерные SHELL первичная подсказка пользователя (PS1) в формате :

\L\>

Где L - число без ведущих нулей , отражающее глубину вложенности текущего пути. Например для директории /home/vasja/bin L=3.
Цвет подсказки белый на черном, а цвет командной строки зеленый на черном.


Для меня сейчас это все звучит как Абракадабра :( , а сделать надо срочно, в течении сегодняшнего дня!
Тому, кто напишет эту задачу сегодня, могу перевести 5 wmz !
Спасибо сказали:
Аватара пользователя
madskull
Сообщения: 1019
Статус: Экс-металлюга

Re: Задача - Отображение глубины вложенности.

Сообщение madskull »

Код: Выделить всё

export PS1='\e[1;37m$(pwd|awk -F/ "{if(/^\/$/){print 0}else{print NF-1}}")>\e[1;32m'

или, если нужны слеши

Код: Выделить всё

export PS1='\e[1;37m\\\$(pwd|awk -F/ "{if(/^\/$/){print 0}else{print NF-1}}")\\>\e[1;32m'
ArchLinux / IceWM
Спасибо сказали:
Botinok
Сообщения: 4

Re: Задача - Отображение глубины вложенности.

Сообщение Botinok »

Спасибо за ответ! Только напишите пожалуйста небольшое описание что и где означает и где это вообще пишется. Я полный чайник :(

Это в какой-то файл записывается или вообще сразу писать в командной строке?
Спасибо сказали:
Аватара пользователя
elide
Бывший модератор
Сообщения: 2421
Статус: Übermensch
ОС: лялих

Re: Задача - Отображение глубины вложенности.

Сообщение elide »

с подробными объяснениями это уже тянет на 10 wmz (:
слава роботам!
Спасибо сказали:
Аватара пользователя
madskull
Сообщения: 1019
Статус: Экс-металлюга

Re: Задача - Отображение глубины вложенности.

Сообщение madskull »

Можно в командной строке, а можно и в ~/.bashrc прописать.

Расписывать не буду - не люблю халявщиков - но разобью по отдельным блокам для читабельности

Код: Выделить всё

export PS1='    # man bash
   \e[1;37m      # цвет
        $(            # man bash
             pwd    # man pwd
             |  awk -F/  # man awk
                 "{
                        if( /^\/$/ ) {print 0}
                        else{print NF-1}
                 }"
         )
   >
   \e[1;32m  # цвет
'
ArchLinux / IceWM
Спасибо сказали:
Botinok
Сообщения: 4

Re: Задача - Отображение глубины вложенности.

Сообщение Botinok »

Это уже смотря что скажет madskull. Он первый подсказал! Надо чуть чуть подождать что он ответит! :rolleyes:

Madskull спасибо, если надо, укажите куда перевести 5 wmz! :) Я не халявщик, просто такая ситуация :)


Если кто-то может описать все с более подробными комментариями, то переведу вам 3-4 wmz
Спасибо сказали:
Аватара пользователя
madskull
Сообщения: 1019
Статус: Экс-металлюга

Re: Задача - Отображение глубины вложенности.

Сообщение madskull »

export PS1=' # PS1 - переменная, в которой хранится "изображение" подсказки
\e[1;37m # белый цвет для букв подсказки (http://www.mdsk.ru/tips/index.pl?theme=bash#3)
$( # Command Substitution - вместо $(command) будет подставлен результат работы command
pwd # выдать текущий каталог
| awk -F/ # делаем разделитель полей "/" чтобы определить количество вложенных каталогов
"{
if( /^\/$/ ) # если строка состоит только из одного "/" (то есть, pwd выдает корень ФС), то
{print 0} # выводим нулевой уровень.
else
{print NF-1} # иначе выводим количество полей -1 (бо слеши находятся между полями)
}"
)
>
\e[1;32m
# опять цвет
'


да, еще.
все это обрамлено в одинарные кавычки для того, чтобы вся эта конструкция "отрабатывалась" при каждой подстановке переменной $PS1, а не при объявлении.
ArchLinux / IceWM
Спасибо сказали:
Botinok
Сообщения: 4

Re: Задача - Отображение глубины вложенности.

Сообщение Botinok »

Вот, огромное спасибо!
Для всех остальных предложение снимается, madskull помог!
madskull укажите куда перевести 9 wmz!
Спасибо сказали: