Можно ли настроить ksh в AIX для использования клавиши табуляции для завершения имени файла?

8

У меня есть несколько серверов AIX 7, которые ограничены тем, какое программное обеспечение я могу установить, и мне интересно, смогу ли я kshиспользовать клавишу Tab для завершения имен файлов в промо-оболочке.

Страницы man для ksh немногочисленны, и я не вижу соответствующих вопросов, касающихся этого вопроса. Из-за того, что большинство пользователей используют ksh, я не решаюсь перевести мою оболочку на bash - но я полагаю, это легко.

Сначала я вхожу в систему с ПК, используя putty / ssh, и работаю в основном с xterm, как только пересылка X11 возвращает трафик Hummingbird Exceed на ПК.

Можно ли bos.rte.shellнастроить / usr / bin / ksh, поставляемый с AIX 7.1, на запуск завершения имени файла (которое обычно вызывается нажатием ESC + \) нажатием клавиши TAB?

bmike
источник
Что должен сказать 'echo $ TERM'?
Щайба
@schaiba - Спасибо, что поймали мою неполную формулировку вопроса. Мой $ TERM - xterm, вне зависимости от того, вошел ли я в систему через putty / ssh или породил xterms ...
bmike
Пожалуйста, включите в свой вопрос значение $ {. Sh.version}. Двойной TAB для завершения имени файла был добавлен относительно поздно.
Хенк Лангевелд
@HenkLangeveld Я получаю ошибку "плохая замена", когда пытаюсь повторить $ {. Sh.version} - версия box.rte.shell7.1.1.16
bmike

Ответы:

3

Смотрите, если /usr/bin/ksh93есть в наличии:

ksh93 --version

Если это говорит

version         sh (AT&T Research)

затем используйте это в качестве интерактивной оболочки. Он будет иметь $ {. Sh.version} и должен иметь расширение TAB.

Хенк Лангевельд
источник
Скорее всего, это будет ответом, если нет очевидного способа научить старым kshновым трюкам. Похоже, что /usr/bin/kshон намеренно не обновлен функциями, а во втором двоичном файле скомпилированы более новые функции. Поскольку кажется, что он работает «из коробки», нажатие на вкладку теперь работает, как и ожидалось, с небольшим риском того, что другие сценарии потерпят неудачу из-за разницы между ksh и ksh93.
bmike
1
На самом деле, IBM, вероятно, следовала концепции смены имен при смене интерфейсов, в отличие от того, что делал Sun, когда обновлял ksh до ksh93 в (Open) Solaris.
Хенк Лангевелд
4

Я понимаю, что ваша оболочка находится в режиме vi. Не уверен, что это сработает, поскольку мои знания AIX ограничены, но вы можете попробовать добавить это в свой профиль:

set -o emacs
bind "^I=complete"

Google говорит, что с этой точки зрения ksh в AIX несколько поврежден, так что, возможно, лучше подойдет bash.

schaiba
источник
Это не работает ни в версии ksh, которую я установил. Я предпочитаю viпривязки, но переключился на emacs, чтобы посмотреть, позволит ли это клавише tab работать должным образом.
bmike
мне не хватает привязки в AIX 7.1
Брайс Гуинта
3

Для этого вопроса есть альтернатива.

Сначала установите режим vi для ksh:

$ set -o vi

После этого вы можете использовать Tabключ таким образом. Пример: вы хотите пройти следующий путь:

$ cd /usr/local/s

Введите Tabключ дважды, и вы увидите это:

$ cd /usr/local/s
1) sbin/
2) share/
3) src/

Предполагая, что вы хотите вариант 2( /usr/local/share/папка), введите 2 Tab( 2ключ, а затем Tabключ). И вы увидите это:

$ cd /usr/local/share/ 
Lujus
источник