Командная строка 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
Если есть желание увековечить такое поведение -- то это определение нужно занести в профильный файл, о чём также будет сказано позднее.
Кстати говоря, и после этого нажатие клавиши табуляции в командной строке выведет не список всех доступных команд -- а лишь список файлов текущего каталога (совсем не обязательно исполняемых).
Содержание . .