Archive for the ‘Консоль и шеллы’ Category.

Конфиги tcsh: порядок обращения

Суммируя изложенное, порядок обращения к конфигурационным файлам в процессе старта tcsh как регистрационной оболочки пользователя можно представить в виде следующей цепочки: Continue reading ‘Конфиги tcsh: порядок обращения’ »

. .

Tcsh: пользовательские конфиги

Пользовательские dot-файлы, образующиеся при создании нового аккаунта, для которого tcsh является регистрационной оболочкой, традиционно носят имена ~/.cshrc и ~/.login, и при авторизации пользователя они считываются в том же порядке, что и соответствующие общесистемные конфиги, хотя и после них. Continue reading ‘Tcsh: пользовательские конфиги’ »

. .

Профильные файлы tcsh: откуда они?

Кстати, а откуда берутся прототипы конфигурационных файлов при создании нового аккаунта? Ответ прост: они копируются из каталога /usr/share/skel/. И это касается не только dot-файлов для tcsh. Если просмотреть этот каталог командой ls, то в нём можно увидеть заготовки конфигов и для /bin/sh, и для некоторых других программ: Continue reading ‘Профильные файлы tcsh: откуда они?’ »

. .

Настройка tcsh: профильные файлы

При установке оболочки tcsh (во FreeBSD это происходит вместе с системой) устанавливается три общесистемных конфигурационных её файла: /etc/csh.cshrc, /etc/csh.login, /etc/csh.logout, которые и определяют поведение оболочки. Первые два файла считываются при старте оболочки: /etc/csh.cshrc -- при запуске каждого экземпляра tcsh в интерактивном режиме, /etc/csh.login -- только в том случае, когда данный экземпляр tcsh является регистрационной оболочкой пользователя (login shell). Continue reading ‘Настройка tcsh: профильные файлы’ »

. .

Tcsh: прочие возможности

Оболочка tcsh, как и все её собратья, располагает такими возможностями, как использование шаблонов в именах файлов и управление запущенными заданиями. Ни по сути, ни по форме они ничем не отличаются от аналогичных средств в оболочках sh-семейства, поэтому остановлюсь на них вкратце. Continue reading ‘Tcsh: прочие возможности’ »

. .

Tcsh: история команд

История команд подразумевает, что некоторое количество ранее введенных команд сохраняется в специальном буфере и может быть вызвано для просмотра и исполнения, в том числе, с предшествующим редактированием. Continue reading ‘Tcsh: история команд’ »

. .

Tcsh: отступление о Control+D

Внимательный читатель обратил внимание, что выше фигурирует уже второй вариант использования последовательности Control+D. Так оно и есть: действие этой комбинации клавиш зависит от позиции курсора в момент её введения. В редакторе командной строки, при нахождении курсора в середине последней, она удаляет следующий за курсором символ. Continue reading ‘Tcsh: отступление о Control+D’ »

. .

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

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

. .

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

Встроенный в оболочку tcsh редактор командной строки предоставляет средства навигации внутри неё и функции редактирования с возможностью изменения отдельных знаков и компонентов команд, их опций и аргументов. Continue reading ‘Командная строка tcsh: навигация и редактирование’ »

. .

Tcsh: встроенные псевдонимы и переменные

Так, в предыдущем разделе говорилось о командах определения псевдонимов. Однако в tcsh существуют также встроенные (то есть зарезервированные) псевдонимы, перечисленные в следующем приложении. Continue reading ‘Tcsh: встроенные псевдонимы и переменные’ »

. .

Tcsh: встроенные команды

Одна из основных функций любой командной среды -- исполнение команд, внешних (то есть независимых программ) и встроенных. Встроенные и внешние команды могут иногда дублировать функции (и имена) друг друга, но при прочих равных условиях применение первых -- предпочтительней, так как они выполняются быстрее. Да и при вызове команды в случае совпадения имён в первую очередь вызывается встроенная команда. И набор встроенных команд -- это то, что, помимо всего прочего, отличает командные среды друг от друга и определяет их функциональность. Continue reading ‘Tcsh: встроенные команды’ »

. .

Tcsh: специфика

Никакими из перечисленных выше функций не удивить пользователя bash и, тем более, zsh, однако в tcsh они реализованы существенно иначе. Собственно, основные особенности tcsh проще всего рассмотреть в их сравнении с таковыми оболочек sh-совместимого типа. Continue reading ‘Tcsh: специфика’ »

. .

TENEX C-shell: общий обзор

Со времени создания tcsh прошло много лет, в течении которых эта оболочка активно развивалась. Ныне местом своего обитания она имеет tcsh.org, где можно найти ссылки на исходные её тексты, доступные с нескольких зеркал, и документацию.

Как уже было сказано, tcsh входит в состав базового комплекта FreeBSD Distributions, который устанавливается при любом типе инсталляции этой системы. И также обязательно эта оболочка имеется в составе OpenBSD и DragonFlyBSD (вероятно, она есть и в базовом наборе NetBSD). Но и дистрибутивы Linux общего назначения ею не обделены: если её не найдется на установочных дисках, то почти наверняка прекомпилированный для данного дистрибутива пакет tcsh имеется в его официальном или пользовательском репозитории, откуда может быть установлен штатными средствами. Так что к скачиванию исходников и их сборке придётся прибегнуть лишь в особых случаях -- в разделе о настройках я скажу, в каких именно.

Текущая версия tcsh на данный момент -- 6.15, датированная мартом 2007 года. И из истории её обновлений можно видеть (например, здесь ), что в последние годы программа обновлялась не очень активно. Это не значит, что проект tcsh замер: просто оболочка дошла в своём развитии до некоторой логической черты, после которой требует лишь косметических улучшений.

Одно из таких косметических улучшений вылилось в самостоятельный проект tcshrc, в рамках которого осуществляется разработка конфигурационных файлов для оболочки tcsh. О нем мы подробно поговорим в разделе о настройке нашего шелла.

Как и все другие оболочки, tcsh объединяет в себе интерактивный командный процессор и интерпретатор собственного языка сценариев, превращающий ее в простую в обращении, но весьма мощную среду программирования.

Как интерактивная среда, tcsh предоставляет в распоряжение пользователя следующие функции:

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

Разумеется, в tcsh, как и в любой развитой оболочке, поддерживаются стандартные для всех Unix-подобных систем командные конструкции -- группировка команд, операторы последовательного и условно-последовательного выполнения, операторы перенаправления ввода-вывода и командные конвейеры, что может использоваться как в интерактивном режиме, так и при составлении сценариев.

Наконец, целям csh-скриптинга служат операторы -- условные, циклические и многовариантные.


Содержание

. .

Tcsh: начало истории

Изначально tcsh создавалась по образу и подобию командного интерпретатора операционной системы TENEX -- собственно, имя её и означает TENEX csh. А особенностью TENEX -- древней, ещё до-Unix'овой, операционки (из недр которой, кстати, происходит и знаменитая "собака" в адресах электронной почты) были чрезвычайно длинные команды, да ещё и с избыточными словами "для ясности". С такими командными директивами было бы трудно работать без развитых средств навигации и редактирования командной строки, каковые и стали отличительными особенностями TENEX C-shell. Continue reading ‘Tcsh: начало истории’ »

. .

Предыстория tcsh: C-shell

Как уже говорилось в первых строках этого очерка, командная оболочка, используемая в аккаунте администратора FreeBSD по умолчанию, именуется csh, в чём легко убедиться такой командой: Continue reading ‘Предыстория tcsh: C-shell’ »

. .

Tcsh: зачем он нужен?

Для пользователя любого универсального дистрибутива Linux'а вопрос, вынесенный в заголовок, представляется более чем резонным. Ведь в его распоряжении по умолчанию имеется командная оболочка bash, причём, скорее всего уже настроенная "из коробки" -- если и не идеальным для него образом, то вполне разумно и легко корректируемо, как показано на предыдущих страницах . Continue reading ‘Tcsh: зачем он нужен?’ »

. .

Tcsh в подробностях

В этом цикле заметок я попытался обобщить все материалы по командной оболочке tcsh, в первую очередь -- по приёмам её интерктивного использования и методам конфигурирования. Continue reading ‘Tcsh в подробностях’ »

. .

Bash: ещё раз про псевдонимы

Очень полезно в файле ~/.bashrc определить псевдонимы (aliases) для некоторых часто используемых команд. Псевдоним -- это просто некоторое условное имя, подменяющее определенную команду с теми ее опциями, которые мы используем чаще всего. Причем, что характерно, псевдоним команды может совпадать с ее именем. То есть, например, -- набирая просто ls, мы получаем список файлов не в умолчальном формате, а в том, в каком угодно нам. Continue reading ‘Bash: ещё раз про псевдонимы’ »

. .

Bash: автодополнение и поиск в истории

По умолчанию в bash автодополнение клавишей табулятора не работает, например, в аргументах многих команд, таких, как sudo или man. Continue reading ‘Bash: автодополнение и поиск в истории’ »

. .

Bash: принципы настройки

Для настройки шелла важно понимать разницу между интерактивным и неинтерактивным шеллами. Первый -- это любой экземпляр командной оболочки, запущенный пользователем непосредственно. Если этот экземпляр запускается при входе пользователя в систему, его называют login shell (то есть главная пользовательская оболочка). Очевидно, что login shell -- также интерактивен, однако в сеансе работы каждого пользователя он будет единственным. Просто же интерактивных шеллов можно запустить сколько угодно -- например, в каждом терминальном окне или вкладке терминальных программ будет функционировать собственная копия интерактивного шелла. Continue reading ‘Bash: принципы настройки’ »

. .