The OpenNET Project / Index page

[ новости/++ | форум | wiki | теги | ]



"Свой bash-completion, нужен case-insensetive"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Программирование под UNIX (Shell скрипты)
Изначальное сообщение [ Отслеживать ]

"Свой bash-completion, нужен case-insensetive"  +/
Сообщение от Перспективный on 29-Мрт-18, 21:10 
Привет. У меня есть несколько тем иконок(значков), я их периодически меняю/смотрю как с ними что-то выглядит. Для удобства сделал функцию в .bashrс:

function theme-icon { theme=${1:-"hicolor"}; dconf write /org/gnome/desktop/interface/icon-theme "'$theme'"; }

Ну и чтобы было совсем отлично сделал $HOME/.config/bash-completion.d/theme-icon:

_theme-icon()
{
    local cur=${COMP_WORDS[COMP_CWORD]}
    local list=$(while read line; do echo -n "${line%%/*} ";done< <(find -L $HOME/.local/share/icons -maxdepth 2 -type f -name index.theme -prune -printf "%P\n"))
    COMPREPLY=( $(compgen -W "${list}" -- $cur) )
}
complete -F _theme-icon theme-icon

Набираю theme-icon нажимаю Tab, выходит нужный список, нажимаю первую букву и т.д. как ожидалось, но приходится нажимать буквы в нужном регистре "А", а не "а", когда очень хочется case-insensetive.

grep ignore < <(bind -v)
set completion-ignore-case on

То есть эта настройка работает в системе, но в случае моего theme-icon нет. Что тут нужно переделать?

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Свой bash-completion, нужен case-insensetive"  +/
Сообщение от Аноним (??) on 30-Мрт-18, 07:34 

> ";done< <(find -L $HOME/.local/share/icons -maxdepth 2 -type f -name index.theme -prune
> -printf "%P\n"))

может быть -iname


Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "Свой bash-completion, нужен case-insensetive"  +/
Сообщение от Перспективный on 30-Мрт-18, 07:51 
> может быть -iname

нет конечно, мимо совсем.
На выходе этого поиска названия каталогов первого уровня с index.theme внутри.
А ты предлагаешь поискать ещё Index.themE или indeX.Theme


Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

3. "Свой bash-completion, нужен case-insensetive"  +/
Сообщение от Перспективный on 30-Мрт-18, 10:56 
тут find только потому, то путей может быть несколько, а для одного пути проще конечно так:
local list=$(for i in $HOME/.local/share/themes/*;do  [[ -e $i/index.theme ]] && echo -n "${i##*/} ";done)
но дело даже совсем не в переменной list, дело в игнорировании игнорирования регистра букв.
Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

4. "Свой bash-completion, нужен case-insensetive"  +/
Сообщение от B on 30-Мрт-18, 14:14 
man bash

shopt -s nocasematch

> тут find только потому, то путей может быть несколько, а для одного
> пути проще конечно так:
> local list=$(for i in $HOME/.local/share/themes/*;do  [[ -e $i/index.theme ]] && echo
> -n "${i##*/} ";done)
> но дело даже совсем не в переменной list, дело в игнорировании игнорирования
> регистра букв.

Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

5. "Свой bash-completion, нужен case-insensetive"  +/
Сообщение от B on 30-Мрт-18, 14:17 
> man bash
> shopt -s nocasematch

или
   shopt -s nocaseglob

>> тут find только потому, то путей может быть несколько, а для одного
>> пути проще конечно так:
>> local list=$(for i in $HOME/.local/share/themes/*;do  [[ -e $i/index.theme ]] && echo
>> -n "${i##*/} ";done)
>> но дело даже совсем не в переменной list, дело в игнорировании игнорирования
>> регистра букв.

Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

6. "Свой bash-completion, нужен case-insensetive"  +/
Сообщение от Перспективный on 30-Мрт-18, 17:09 
>shopt -s nocasematch
>shopt -s nocaseglob

не работает для моего случая

Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема


  Закладки на сайте
  Проследить за страницей
Created 1996-2018 by Maxim Chirkov  
ДобавитьПоддержатьВебмастеруГИД  
Hosting by Ihor