Есть некоторые программы командной строки, которые принимают ввод от пользователя, но не предоставляют возможности редактирования, такие как sh
(псевдоним dash
) или nslookup
и другие.
Существует ли способ заставить такие приложения предоставлять возможности редактирования для исправления текущей строки или вызова предыдущих строк?
Существует как минимум три инструмента для получения того, что требуется, это:
rlwrap
- оболочка командной строки функции readline rlfe
- фронт -конец, используя readline, чтобы «приготовить» строки ввода для других программ ledit
- редактор строк для интерактивных программ Вы можете использовать каждую из них, просто подготовив команду к переносу , как в
rlwrap sh
Первое, rlwrap
, кажется лучшим, потому что второе делает строку жирным, а третье не показывает подсказку с sh
, тем не менее это работает. [ 1111]
Вездесущая технология обучения - readline, потому что программы, скомпилированные с поддержкой readline , уже имеют такую возможность - в любом дистрибутиве Linux и в любых утилитах Unix GNU. (Большинство программ GNU были сделаны таким образом, и это «больно», когда их нет - мне достаточно, чтобы я перекомпилировал их, если они не сделали «правильно».) Это очень похоже на изучение редактора vi - один раз оно "в тебе" никогда не уходит; и это делает работу с различными программами намного более опытной и приятной. Поддержка readline ведет себя одинаково в любой программе, скомпилированной с этой библиотекой. То, как readline был реализован в отдельной программе, зависело от программиста (ов) этой программы, поэтому пробег может варьироваться.
Например, в BASH клавиша со стрелкой вверх вызывает предыдущую строку, и почти в любой консольной программе [CTRL] + [U] стирает все, что осталось от курсора, тогда как [ALT] + [F] перемещает вперед на одно слово. и [ALT] + [B] движется назад на одно слово и еще много ...
Nslookup действительно имеет это, и sh / dash - но они минимальны.