bash: автодополнение (небольшое улучшение)
Модератор: Модераторы разделов
Re: bash: автодополнение
Гы .. конечно незнаю в качестве безопасности при работе с sudo это нормально ... но хех дома я в .bashrc сделал так ... alias sudo='sudo bash'
тем самым при наборе каманды sudo после ответа на вапрос открывается bash под рутом ... и можно спакойно делать то что хотел
тем самым при наборе каманды sudo после ответа на вапрос открывается bash под рутом ... и можно спакойно делать то что хотел
Debian3.1(Sarge)/FreeBSD5.4........
Re: bash: автодополнение
Несколько дополненная версия:
http://www.posix.ru/shell/bash_tab/
http://www.posix.ru/shell/bash_tab/
-
- Сообщения: 537
- Статус: 人です
- ОС: Gentoo
Re: bash: автодополнение
А мне вот больше нравится когда выводит команды списком, а ты сам смотришь что тебе надо и дописываешь ещё пару букв. Благо печатаю Я быстро, по мнению многих даже очень, так что с этим проблем нет.
Re: bash: автодополнение
drakon писал(а): ↑03.10.2005 13:54Меня всегда напрягало, что после sudo не работает автодополнение при помощи [TAB]
Оказалось решается очень просто: достаточно раскоментировать вот эти строки в /etc/bash.bashrc
Код: Выделить всё
# enable bash completion in interactive shells #if [ -f /etc/bash_completion ]; then # . /etc/bash_completion #fi
Только для этого понадобится сам скрипт /etc/bash_completion, который лежит в одноименном пакете (или bash-completion)
Свободного можно покорить, нельзя исправить, ведь невозможно улучшить море или ветер.
Свобода подобна тайному обряду: захочешь улучшить - оскудеет, задумаешь подчинить - исчезнет... Лао Цзы
Свобода подобна тайному обряду: захочешь улучшить - оскудеет, задумаешь подчинить - исчезнет... Лао Цзы
Re: bash: автодополнение
замечательно
полный RULEZZZ!!!
спс за науку.
Re: bash: автодополнение
А можно сделать что-бы как в zsh и меню и команды по табу полностью?
Re: bash: автодополнение
видимо, чтобы Вас понять, надо быть специалистом по zsh. или на худой конец, хотя бы им пользоваться. или, уж совсем на худой конец, быть немножко телепатом.
увы, я, например, не первый, не второй и не третий.
нельзя ли расшифровать, чтобы вопрос дошел до подобных мне тормозов?
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
при сбоях форума см.блог
Re: bash: автодополнение
Да уж, сейчас сам прочитал, согласен, сложная фрмулировка
Короче нужет эфект как от TAB: menu-complete, но чтоб ещё и списак возможных вариантов был.
На примере выглядит так, допустим ввожу ro, нажимаю таб, получается
Код: Выделить всё
gentoo# ro
rootflags rotatelogs rotatelogs2 route
нажимаю ещё раз
Код: Выделить всё
gentoo# rootflags
rootflags rotatelogs rotatelogs2 route
и ещё раз
Код: Выделить всё
gentoo# rotatelogs2
rootflags rotatelogs rotatelogs2 route
и т.д.
Re: bash: автодополнение
в таком варианте — только одно из двух. или complete, или menu-complete.
вариации:
1. повесить (например) complete на другую кнопку. хотя, в принципе, более логично пользовать не complete + menu-complete, а menu-complete + possible-completions (по умолчанию назначено на M-?, что не очень удобно, можно назначить на какое-нибудь сочетание попроще).
2. подрихтовать readline под требуемую функциональность.
вариации:
1. повесить (например) complete на другую кнопку. хотя, в принципе, более логично пользовать не complete + menu-complete, а menu-complete + possible-completions (по умолчанию назначено на M-?, что не очень удобно, можно назначить на какое-нибудь сочетание попроще).
2. подрихтовать readline под требуемую функциональность.
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
при сбоях форума см.блог
- Atashidesu
- Сообщения: 45
- ОС: gentoo
Re: bash: автодополнение
у меня тоже не работает
Re: bash: автодополнение
*Sasha*
~/.zshrc
перемещение с помощью стрелок, выбор по Enter.
~/.zshrc
Код: Выделить всё
zstyle ':completion:*' menu yes select
перемещение с помощью стрелок, выбор по Enter.
Re: bash: автодополнение
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
при сбоях форума см.блог
- Atashidesu
- Сообщения: 45
- ОС: gentoo
Re: bash: автодополнение
sash-kan , мне нужно, чтобы первое нажатие tab работало как TAB: complete , а последующие, как TAB: menu-complite.
добавил строчки
TAB: menu-complete
set show-all-if-ambiguous On
в .inputrc , результат - по tab сразу идет перебор вариантов.
добавил строчки
TAB: menu-complete
set show-all-if-ambiguous On
в .inputrc , результат - по tab сразу идет перебор вариантов.
Re: bash: автодополнение
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
при сбоях форума см.блог
Re: bash: автодополнение
В Gentoo классная штуковина есть, если набираю пол-команды, которая раньше уже набиралась (есть в истории), то при нажатии page up, команда автодополняется. Например, обновлял раньше мир недавно, то есть emerge -uDN world, набираю emerge и page up, дальше команда сама дописывается.
А в arch этого почему-то нет, при нажатии page up я перехожу на самую первую команду в истории - неудобно. Как сделать тоже самое в арче?
А в arch этого почему-то нет, при нажатии page up я перехожу на самую первую команду в истории - неудобно. Как сделать тоже самое в арче?
- Atashidesu
- Сообщения: 45
- ОС: gentoo
Re: bash: автодополнение
Flaming писал(а): ↑04.01.2009 18:50В Gentoo классная штуковина есть, если набираю пол-команды, которая раньше уже набиралась (есть в истории), то при нажатии page up, команда автодополняется. Например, обновлял раньше мир недавно, то есть emerge -uDN world, набираю emerge и page up, дальше команда сама дописывается.
А в arch этого почему-то нет, при нажатии page up я перехожу на самую первую команду в истории - неудобно. Как сделать тоже самое в арче?
по
Код: Выделить всё
!emerge
будет искаться в истории последняя команда на emerge
еще можно листать както
а чтоб по up листалось, в inputrc добавь
Код: Выделить всё
"\e[A": history-search-backward
"\e[B": history-search-forward
Re: bash: автодополнение
Atashidesu, в /etc я такой файл нашёл, /etc/inputrc
А как сделать для отдельного юзверя? Создать ~/.inputrc ?
Atashidesu, сделал так (добавив в ~/.inputrc - работает так) - после этого теперь команды листаются не по page up, down, а стрелками. В принципе, так тоже можно, но я другое имел ввиду.
А как сделать для отдельного юзверя? Создать ~/.inputrc ?
Atashidesu, сделал так (добавив в ~/.inputrc - работает так) - после этого теперь команды листаются не по page up, down, а стрелками. В принципе, так тоже можно, но я другое имел ввиду.
- Atashidesu
- Сообщения: 45
- ОС: gentoo
Re: bash: автодополнение
Flaming, ты тему то читал?
да, ~/.inputrc для отдельного юзера.
толькочто проверил, работает именно по стрелочкам
вот еще список команд для работы с историей:
основные операторы обращения к различным частям предыдущей команды:
да, ~/.inputrc для отдельного юзера.
толькочто проверил, работает именно по стрелочкам
вот еще список команд для работы с историей:
- !! - ссылается на предыдущую команду;
- !n - ссылается на команду под номером n;
- !-n - ссылается на команду по номером „текущая минус n”;
- !string - ссылается на команду, начинающуюся с string;
- !?string[?] - ссылается на команду, содержащую строку string;
- ^string1^string2[^] - „быстрая замена”, заменяет первое вхождение строки string1 в предыдущей команде, на
string2, после чего выполняет полученную команду. - !!:p, !string:p , etc. - ссылается без выполнения (печатает команду);
основные операторы обращения к различным частям предыдущей команды:
- $ - последний аргумент командной строки;
- ^ - первый аргумент командной строки;
- 0 - нулевое слово, другими словами имя команды;
- N - N-ый аргумент командной строки;
- x-y - аргументы с x по у командной строки;
- -y - сокращенное обращение к 0-y;
- * - все аргументы, синоним 1-$;
- x* - синоним x-$, другими словами аргументы с номера x до конца строки;
- x- - синоним x*, но не включает последний аргумент.
Re: bash: автодополнение
Atashidesu
"\e[A" — это стрелка вверх, "\e[B" — стрелка вниз.
а pageup/pagedown — это (скорее всего): "\e[5~" и "\e[6~",
определить точнее для своей системы можно, нажав ctrl-v и искомую клавишу.
например, нажимаю ctrl-v, затем pageup. получаю:
^[[5~
грубо говоря, заменяю «^[» на «\e» — и получаю искомый код.
Flaming
в некоторых дистрибутивах уже есть нужные описания в /etc/inputrc, закомментированные. надо раскомментировать нужные, и закомментировать ненужные.
если таких строк нет — можно смело дописать.
или создать файла ~/.inputrc. написанное в нём будет иметь более высокий приоритет перед общесистемным /etc/inputrc.
"\e[A" — это стрелка вверх, "\e[B" — стрелка вниз.
а pageup/pagedown — это (скорее всего): "\e[5~" и "\e[6~",
определить точнее для своей системы можно, нажав ctrl-v и искомую клавишу.
например, нажимаю ctrl-v, затем pageup. получаю:
^[[5~
грубо говоря, заменяю «^[» на «\e» — и получаю искомый код.
Flaming
в некоторых дистрибутивах уже есть нужные описания в /etc/inputrc, закомментированные. надо раскомментировать нужные, и закомментировать ненужные.
если таких строк нет — можно смело дописать.
или создать файла ~/.inputrc. написанное в нём будет иметь более высокий приоритет перед общесистемным /etc/inputrc.
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
при сбоях форума см.блог
Re: bash: автодополнение
Добавил в файл ~/.inputrc следующие строки:
Вот только по варианты дополнения появляются по двойному нажанию ESC, а мне хотлеось бы сразу. никто не знает, как это сделать?
и еще, когда я добавляю эти строки:
у меня совершенно перестает вводиться точка(символ "."). я что-то неправильно делаю?
Код: Выделить всё
set show-all-if-ambiguous on
TAB: menu-complete
ESC: possible-completions
"\e[A": history-search-backward
"\e[B": history-search-forward
Вот только по варианты дополнения появляются по двойному нажанию ESC, а мне хотлеось бы сразу. никто не знает, как это сделать?
и еще, когда я добавляю эти строки:
Код: Выделить всё
# enable bash completion in interactive shells
if [ -f /etc/bash_completion ]; then
. /etc/bash_completion
fi
у меня совершенно перестает вводиться точка(символ "."). я что-то неправильно делаю?
Re: bash: автодополнение
из описанного — ничего.
для начала определите, где «затык». переименуйте ~/.inputrc (а для уверенности, и /etc/inputrc) и посмотрите, как влияет вызов /etc/bash_completion на возможность ввода точки.
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
при сбоях форума см.блог