(Нельзя сказать, что GNU Readline и Bash были первоисточниками возможностей редактирования и автодополнения команд, да и прочего подобного «в стиле readline». В Unix похожие методы работы восходят, как минимум, к 1983 году, к tcsh. Но оболочка tcsh, по разным причинам, не получила широкого распространения.)
Одним из очевидных последствий отсутствия readline было появление командной оболочки csh. Эта оболочка поддерживала множество инструментов для работы с историей команд. Их работа была основана на внедрение в командную строку особых строк. Обратимся к справке по csh из 4.2. BSD:
Механизмы подстановки из истории команд используют слова из ранее введённых команд в роли частей новых команд. Это упрощает повторение команд или аргументов ранее введённых команд в текущей команде. Благодаря этому упрощается и исправление опечаток в ранее введённых командах — для этого приходится вводить меньше символов, к тому же, такой стиль работы даёт больший уровень уверенности в правильности исправленной команды. Работа системы подстановки из истории основана на использовании символа !, который может быть расположен в любом месте входного потока (при условии того, что не образуются вложенные конструкции).
Пожалуй, самой известной среди пользователей tcsh командой подстановки из истории является !!
, которая повторяет предыдущую команду. В Bash есть похожий механизм, cf, и даже сегодня в руководстве по Bash есть указание на сходство cf с csh-версией соответствующего инструмента. Полагаю, что в наше время большинство тех, кто использует Bash, не применяет механизмы Bash для работы с историей команд, а просто прибегает к readline-инструментам, с которыми обычно проще работать.
(Это — очевидное наблюдение, но с течением времени детали прошлого Unix различимы всё слабее, поэтому легко забыть о том, как далеко в прошлое уходит история некоторых из частей этой ОС. По крайней мере, для меня это именно так.)
P.S. У меня возникает такое ощущение, что широкая распространённость механизмов автодополнения команд и имён файлов понемногу влияет на то, какие имена команд и файлов применяют пользователи. Во времена, когда автодополнения не было, очень важным было то, чтобы имена команд и файлов были бы как можно короче. Неважно было то, что они могли быть очень похожи друг на друга, что могло бы привести к тому, что системе автозавершения ввода было бы сложно их различать. Как известно, короткие имена команд пользуются популярностью в Unix. Такие команды можно вводить быстрее, чем более длинные. В окружении V7 это имеет большое значение.
Комментариев нет:
Отправить комментарий