View previous topic :: View next topic |
Author |
Message |
hermes_jr l33t
Joined: 26 Feb 2004 Posts: 701 Location: Moscow, Russia
|
Posted: Wed Jan 05, 2005 7:55 pm Post subject: Цвета в bash |
|
|
Многоуважаемый 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 |
|
|
viy Veteran
Joined: 03 Jul 2004 Posts: 1580 Location: Riga, Latvia
|
Posted: Wed Jan 05, 2005 9:20 pm Post subject: |
|
|
Сам не занимался, но стало интересно.
Итак, тебя интересует 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 |
|
|
viy Veteran
Joined: 03 Jul 2004 Posts: 1580 Location: Riga, Latvia
|
Posted: Wed Jan 05, 2005 10:24 pm Post subject: |
|
|
Э-эх... Часик поигрался, результат плачевный
Вот скрипт: 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 |
|
|
hermes_jr l33t
Joined: 26 Feb 2004 Posts: 701 Location: Moscow, Russia
|
Posted: Thu Jan 06, 2005 10:48 pm Post subject: |
|
|
Мдаа, почитал я тут, порылся и подумал: а ну его в ж... кхм... нафиг. Во-первых слишком геморно, во-вторых bash-completion тормозной какой-то, инитится долго. Хотя если время будет, попробую в исходниках порыться, авось что-нибудь да получится.
viy, спасибо бааалшое, теперь хоть знаю куда копать . |
|
Back to top |
|
|
|
|
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
|
|