Командная строка tcsh: автодополнение

Следующая неоценимая возможность tcsh -- автоматическое дополнение слов, не полностью введённых в командной строке. Как мы помним из исторического обзора, эта функция впервые появилась в предшественнике tcsh -- чистом C-shell, но там она действовала только по отношению к именам файлов и путям к ним в аргументах команд, но не самим командам. И осуществлялось она не клавишей табуляции, как позднее в bash и zsh (да и в tcsh тоже, о чём скоро будет сказано), а встроенными управляющими последовательностями -- Control+I для дополнения в случае безальтернативности и Control+D -- для вывода возможных вариантов продолжения набора.

В оболочке tcsh, в соответствии с её происхождением под впечатлением командного интерпретатора ОС TENEX, функции автодополнения получили дальнейшее развитие -- причём в то время, когда sh-совместимые оболочки об этом только начинали мечтать.

В tcsh автодополнение работает как для команд, так и для имен файлов и путей к ним, хотя по умолчанию и несколько иначе, чем в bash и zsh. Так, при наборе первых символов команды или имени файла (пути к нему) в её аргументе автоматическое дополнение осуществляется (при его однозначности) как клавишей табуляции, так и унаследованной от csh управляющей последовательностью Control+I.

В случае наличия вариантов продолжения команды или имени ни нажатие клавиши табуляции, ни последовательность Control+I не дадут никакого результата (кроме, может быть, писка динамика, если включён звуковой сигнал -- о чем будет говориться позднее). Однако с помощью управляющей последовательности Control+D можно вызвать список возможных вариантов продолжения набора.

Для того чтобы задействовать клавишу табуляции для вывода списка вариантов продолжения, необходимо определить встроенную переменную autolist:

% set autolist

Если есть желание увековечить такое поведение -- то это определение нужно занести в профильный файл, о чём также будет сказано позднее.

Кстати говоря, и после этого нажатие клавиши табуляции в командной строке выведет не список всех доступных команд -- а лишь список файлов текущего каталога (совсем не обязательно исполняемых).


Содержание

. .