обзор кода: автоматическое завершение для псевдонимов удара

Необходимо установить tp_smapi-dkms, просто сделайте

apt-get install tp_smapi-dkms

По окончании использовать lsmod | grep tp_smapi чтобы проверить, загружается ли модуль, для корректировки порогов заряда, сделайте что-то вроде этого

echo 40 > /sys/devices/platform/smapi/BAT0/start_charge_thresh
echo 60 > /sys/devices/platform/smapi/BAT0/stop_charge_thresh

Добавьте эти строки к /etc/rc.local выполнять их при начальной загрузке.

Этот модуль работает, по крайней мере, над X220.

3
13.04.2017, 15:36
1 ответ

Сообщение об ошибке COMP_POINT из Справочника Bash:

COMP_POINT

Индекс текущей позиции курсора относительно начала текущей команды. Если текущая позиция курсора в конце текущей команды, значение этой переменной равно $ {#COMP_LINE}. Эта переменная доступна только в функциях оболочки и внешних командах, вызванных программируемыми средствами завершения (см. Программируемое Завершение).

Испытание этого

Я попытался использовать Ваш код как есть. При определении источника всего до хорошо работает последняя строка. Когда та строка работает, . ~/.cache/bash_alias_complete Я получаю ошибки. Слишком многие для включения здесь.

Кажется, существуют некоторые проблемы с получающимся, сгенерированным в файл, ~/.cache/bash_alias_complete.

Ошибки я встретился

У меня есть следующие псевдонимы:

$ alias|grep cdc
alias cdl='cdctl -o1'
alias cdu='cdctl -o0'

И Ваш sed команда пропускает это, которое затем становится распространенным к моему файл кэша, приводя к этим командам, которые вызывают следующие ошибки:

$ make-completion-wrapper-1 cdctl _cdctl__o1 cdctl -o1
$ make-completion-wrapper-2 _cdctl__o1 cdl cdctl
$ make-completion-wrapper-1 cdctl _cdctl__o0 cdctl -o0
$ make-completion-wrapper-2 _cdctl__o0 cdu cdctl
bash: complete: cdctl: no completion specification
 _cdctl__o1 cdl

Существуют другие примеры, но дело в том, что sed команда не так трудна, как это, вероятно, должно быть, который является в конечном счете Вашей проблемой, с которой Вы встречаетесь.

1
27.01.2020, 21:31
  • 1
    @hildred - Я быть бы, так как это включает мои псевдонимы среды и такой. Я не готов совместно использовать эти вещи. –  slm♦ 23.11.2013, 22:31
  • 2
    хорошо, дизайн sed сценария должен взять Ваш список псевдонимов, проигнорировать тех, которые просто добавляют опции к существующим командам и всем псевдонимам, которые играют с переменными среды, затем берут остающиеся псевдонимы, выясняют то, что управляет, чтобы они звонили, поиск расширение для долгой команды и использования это для расширения короткой команды, с долгой командой переданный в расширение вместо короткого. –  hildred 23.11.2013, 22:40
  • 3
    @hildred - да я прохожу это теперь, и я думаю, что существует дополнительная сложность, которую можно сделать в псевдонимах, с которыми Ваш подход не может иметь дело. –  slm♦ 23.11.2013, 22:42
  • 4
    @hildred - Я добавил 1-ю ошибку, с которой я встретился. BTW, я попробовал Ваше изменение, и теперь файл кэша пуст. Я думаю, что Вы хотите найти тире предшествовавшим пространством, возможно? –  slm♦ 23.11.2013, 22:48
  • 5
    @hildred - возможно, это? -e '/ -[a-zA-Z0-9]/d'? Намерение состоит в том, чтобы удалить какие-либо псевдонимы, которые включают единственного и двойного тире? Это может быть выполнено как это: -e '/ [-]\{1,2\}[a-zA-Z0-9]/d' раз так. –  slm♦ 23.11.2013, 22:54

Теги

Похожие вопросы