Я даже не знаю как это назвать и сформулировать вопрос в гугле. Описание следующее
Кто работал с системами от Циско знает что почти все их команды понимают усеченные опции до степени пока не появляется двусмысленность. Не сомневаюсь что разработчикам новых утилит из пакета iproute2 понравилась эта фича. Но она совсем не новая, кто работал например с gdb тоже прекрасно ее знают, а gdb не вчера создали. Я раньше думала что в системе циско не так много команд, все стандартизованы и оболочка сама ориентируется какие опции подходят по начальным буквам. Но похоже это все таки достигается силами программы самой утилиты. Значит эта возможность может быть реализована отдельным блоком, командой, библиотекой, что можно было бы пощупать. Прошу пинка в нужном направлении или помощи в опознании
И еще, сегодня обнаружила например что создатели iproute2 пошли дальше, их не останавливает двусмысленность. Ели она возникает то выбирается опция или по "прейскуранту" или по словарю, уж не знаю, например ip r выполняется ip route пока ip rule курит в сторонке.
Автодополнение опций
Модератор: Bizdelnick
- Bizdelnick
- Модератор
- Сообщения: 20793
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: Автодополнение опций
Не понял, в чём вопрос. Вот вся реализация, никакой магии: https://github.com/shemminger/iproute2/blob/main/lib/utils.c#L883-L895
P. S. За такой код надо руки отрубать, конечно. Это ж как можно было додуматься из функции под названием matches в случае совпадения возвращать false?
P. P. S. А в gdb какой-то ад на много тыщ строк, даже пытаться вникать желания нет.
P. S. За такой код надо руки отрубать, конечно. Это ж как можно было додуматься из функции под названием matches в случае совпадения возвращать false?
P. P. S. А в gdb какой-то ад на много тыщ строк, даже пытаться вникать желания нет.
Пишите правильно:
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
Спасибо сказали:
- Hephaestus
- Сообщения: 3729
- Статус: Многоуважаемый джинн...
- ОС: Slackware64-14.1/14.2
- Контактная информация:
Re: Автодополнение опций
Вас это интересует в контексте именно Cisco или вообще?
Я, например, с подобной штукой знаком по FoxPro.
У них система команд выстроена так, что четыре знака обеспечивают уникальность.
Таким образом, любая команда может быть записана в сокращенном виде - от четырех знаков и более.
Например:
select - sele
delete - dele
replace - repl
и т.п.
Отсюда, кстати, напрашивается вывод, что вряд ли это реализовано библиотекой.
Всё-таки это имеет отношение к грамматике языка.
Ну, то есть библиотека-то может и есть, только в каждом случае своя.
У Cisco, у gdb, iproute2... у каждого из них это своё.
Потому и спрашиваю, в каком контексте это Вас интересует.
Я, например, с подобной штукой знаком по FoxPro.
У них система команд выстроена так, что четыре знака обеспечивают уникальность.
Таким образом, любая команда может быть записана в сокращенном виде - от четырех знаков и более.
Например:
select - sele
delete - dele
replace - repl
и т.п.
Отсюда, кстати, напрашивается вывод, что вряд ли это реализовано библиотекой.
Всё-таки это имеет отношение к грамматике языка.
Ну, то есть библиотека-то может и есть, только в каждом случае своя.
У Cisco, у gdb, iproute2... у каждого из них это своё.
Потому и спрашиваю, в каком контексте это Вас интересует.
Спасибо сказали:
Re: Автодополнение опций
Сейчас только в контексте linux. Заметила разницу с поведением в циско вот и задумалась. В циско может оно и к месту, но здесь на фоне существующего ансамбля выглядит вычурно. Думала для начала узнать название этого явления, но вот похоже в данном случае оно просто реализовано программно в проекте и ни каких гвоздей. Полистаю немного исходники и поброжу в сети, а если встретится название отпишусь.
Похоже удобное значение для одного места , чтобы не инвертировать, теперь это исключение из правила и если что потянется паровозик. Удачный получился каламбур, честно, это случайноBizdelnick писал: ↑03.09.2020 22:29Это ж как можно было додуматься из функции под названием matches в случае совпадения возвращать false?
- Bizdelnick
- Модератор
- Сообщения: 20793
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: Автодополнение опций
Удобным оно было, когда там был int, а не bool, и возвращался тупо результат memcmp(). Но вот взять и переделать на bool, это ж додуматься надо. Тогда бы уж возвращали true и рефакторили весь проект, если настолько свербит…
Ага, чтобы два раза инвертировать.
Пишите правильно:
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
Re: Автодополнение опций
Ничего определяющего я не нашла. В циско это называется "функция сокращения ввода команд" и похоже устроена совершенно по своему. В linux в наборе утилит iproute2 просто нашла строчку: "Во время ввода имя объекта может быть сокращено до одной буквы. При неоднозначности используется алфавитный порядок". Ну вот хоть порядок установили.
Добавлено (00:43):
Ну они почти исправились, коментарий то оставили потомкам
Добавлено (00:51):
А ведь это код на академическом Си, что же тогда делается в вебе?Добавлено (01:23):
По iproute много очень интересного нашла. И балансировку на 2 интерфейса и маркировку пакетов в iptables и уже на основе маркеров применение политик маршрутизации. Что-то вреде вланов. А тут все, гугли LARTCRe: Автодополнение опций
А хорошо ли это?
Я с Сиськой считай не знаком, шапочно только через эмулятор PacketTracer. Но там вот такое тоже есть, вместо полной команды можно набрать, например, только по одному первому символу, допустим. Это здорово ускоряет конфигурирование, но как-то запудривает мозги.
На мой скромный взгляд, предпочтительнее явное дополнение команд типа того, что делает bash-completion - наглядно и недвусмысленно до полного прояснения.
Спасибо сказали: