Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
Цвета в bash
View unanswered posts
View posts from last 24 hours

 
Reply to topic    Gentoo Forums Forum Index Russian
View previous topic :: View next topic  
Author Message
hermes_jr
l33t
l33t


Joined: 26 Feb 2004
Posts: 701
Location: Moscow, Russia

PostPosted: Wed Jan 05, 2005 7:55 pm    Post subject: Цвета в bash Reply with quote

Многоуважаемый all, не подскажете ли вы, каким образом настроить bash чтобы он раскрашивал результат автодополнения. Щас объясню на пальцах про что я, ибо грамотно сформулировать не могу...

Вот есть у нас директория с кучей файлов. В .bashrc прописано
.bashrc wrote:

...
alias ls="ls -C -a -h -X --color=always --"
...

Соответственно по команде ls выводится удобочитаемый список файлов, всё отформатировано как мне нравится, а так же раскрашено в соотв. цвета.

Если воспользоваться автодополнением - введя часть имени файла жмём Tab - то получим неотформатированный чёрно-белый (ну или как оно там темой предусмотрено) список файлов.
Code:

user@host ~ $ ls ./andreas/с{ЖМЁМ TAB}
car_1.wmv
carrying_and_jacking.wmv
сGTASA_TRAILER2_480x360.wmv
сGTASA_TRAILER3_480x360.wmv


Дык вот каким боком можно это дело в bash'е поформатить?
Back to top
View user's profile Send private message
viy
Veteran
Veteran


Joined: 03 Jul 2004
Posts: 1580
Location: Riga, Latvia

PostPosted: Wed Jan 05, 2005 9:20 pm    Post subject: Reply with quote

Сам не занимался, но стало интересно.

Итак, тебя интересует Programmable Completion в bash'е. man bash очень сильно помогает.
Также поставь bash-completion и посмоти файлик /etc/bash_completion.

Идея --- при помощи встроенной функции complete указываешь как-то так:
Code:
complete -f -F <твоя функа> *

-f == подстановка для файлов
-F == указывает функу, которая в массиве COMPREPLY должна вернуть возможные варианты
* == параметр name (читай man), я не уверен, что звездочка прокатит.
[update] вместо звездочки надо "ls" указать ;)

Ну и в функе сам генерируешь варианты. Думаю, что это будет довольно геморройная задачка, напиши, если что-нить получится.
Back to top
View user's profile Send private message
viy
Veteran
Veteran


Joined: 03 Jul 2004
Posts: 1580
Location: Riga, Latvia

PostPosted: Wed Jan 05, 2005 10:24 pm    Post subject: Reply with quote

Э-эх... Часик поигрался, результат плачевный :(

Вот скрипт:
Code:
#!/bin/bash

_files()
{
  cur=${COMP_WORDS[$COMP_CWORD]}
  COMPREPLY=( $(ls --color=always $cur) )
  #ls --color=always $cur
}

complete -fd -F _files ls


Делаешь source test.sh (я его test.sh обозвал), ls [TAB] --- и получаешь лажу. В скрипте можно закомментировать первые 2 строки и открыть последнюю в функе, да заменить в "complete ..." -F на -С --- source test.sh и то-же самое.

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

Как бороться --- не знаю...
Back to top
View user's profile Send private message
hermes_jr
l33t
l33t


Joined: 26 Feb 2004
Posts: 701
Location: Moscow, Russia

PostPosted: Thu Jan 06, 2005 10:48 pm    Post subject: Reply with quote

Мдаа, почитал я тут, порылся и подумал: а ну его в ж... кхм... нафиг. Во-первых слишком геморно, во-вторых bash-completion тормозной какой-то, инитится долго. Хотя если время будет, попробую в исходниках порыться, авось что-нибудь да получится.

viy, спасибо бааалшое, теперь хоть знаю куда копать :).
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Russian All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum