tcsh ( / ˌ t iː ˈ s iː ʃ ɛ l / «tee-see-shell», / ˈ t iː ʃ ɛ l / «tee-shell», или как «tee see ess aitch», tcsh
) — оболочка Unix, основанная на оболочке C и обратно совместимая с ней .csh
По сути, это оболочка C с программируемым завершением командной строки , редактированием командной строки и несколькими другими функциями. В отличие от других распространенных оболочек, функции не могут быть определены в скрипте tcsh, и пользователь должен использовать псевдонимы вместо этого (как в csh). Это собственная оболочка root для некоторых систем на основе BSD, включая FreeBSD 13 и более ранние версии. (FreeBSD 14 изменила оболочку root по умолчанию на , чтобы sh
соответствовать оболочке пользователя по умолчанию [5], тогда как OpenBSD использует оболочку Korn ksh
как для root, так и для обычных пользователей. [6] )
tcsh добавил концепции завершения имени файла и команды, а также редактирования командной строки, заимствованные из операционной системы TENEX , которая является источником «t». [7] Поскольку он только добавил функциональность и не изменил то, что там было, tcsh остался обратно совместимым [8] с оригинальной оболочкой C. Хотя он начинался как побочная ветвь от исходного дерева csh, созданного Биллом Джоем , теперь tcsh является основной ветвью для продолжающейся разработки.
tcsh очень стабилен, но новые релизы продолжают появляться примерно раз в год, состоящие в основном из исправлений незначительных ошибок. [9]
Во многих системах, таких как macOS и Red Hat Linux , csh
на самом деле является tcsh
. Часто один из двух файлов является либо жесткой ссылкой , либо символической ссылкой на другой, так что любое имя ссылается на одну и ту же улучшенную версию оболочки C (хотя поведение может меняться в зависимости от того, какое имя используется).
В Debian и некоторых производных (включая Ubuntu ) есть два разных пакета: csh
и tcsh
. Первый основан на оригинальной версии BSD csh [10] [11] , а последний — это улучшенный tcsh. [12] [13]
«t» в слове tcsh
происходит от «T» в TENEX , операционной системе , которая вдохновила Кена Грира из Университета Карнеги-Меллона , автора tcsh, на функцию завершения команд. [14] Грир начал работать над своим кодом для реализации завершения имен файлов в стиле Tenex в сентябре 1975 года, окончательно объединив его с оболочкой C в декабре 1981 года. [7] Майк Эллис из Fairchild AI Labs добавил завершение команд в сентябре 1983 года. [7] 3 октября 1983 года Грир опубликовал исходный код в группе новостей net.sources. [7]
history
команда отображает ранее введенные команды.!!
выполняет предыдущую команду!n
выполняет n-ную команду, которая была выполнена ранее!-n
выполняет команду, которая была выполнена n команд назад!string
выполняет последнюю выполненную команду, которая начинается со строки!?string
выполняет последнюю выполненную команду, содержащую строку!*
- относится ко всем аргументам предыдущей команды!$
- относится к последнему аргументу предыдущей команды!^
- относится к первому аргументу предыдущей команды!:n
- относится к n -му аргументу из предыдущей команды!:m-n
- относится к аргументам с m -го по n- й из предыдущей команды!:n-$
- относится к аргументу с n -го по последний из предыдущей команды\!#
- селектор аргументов для всех аргументов, включая сам псевдоним/команду; аргументы указывать не обязательно.\!*
- селектор аргументов для всех аргументов, за исключением псевдонима/команды; аргументы указывать не обязательно.\!$
- селектор аргумента для последнего аргумента; аргумент указывать не обязательно, но если он не указан, псевдоним считается последним аргументом.\!^
- селектор аргумента для первого аргумента; аргумент ДОЛЖЕН быть указан.\!:n
- селектор аргумента для n- го аргумента; аргумент ДОЛЖЕН быть указан; n=0 относится к псевдониму/имени команды.\!:m-n
- селектор аргументов для аргументов от m -го до n- го ; аргументы ДОЛЖНЫ быть указаны.\!:n-$
- селектор аргументов для аргументов с n- го по последний; по крайней мере аргумент n ДОЛЖЕН быть указан.\!:n*
- селектор аргументов для аргументов с n- го по последний; указывать достаточное количество аргументов не обязательно.#Псевдоним команды cd, чтобы при смене каталогов содержимое отображалось немедленно. псевдоним cd 'cd \!* && ls'
если ( "$input" = ~ [ 0-9 ] * ) then echo "ввод начинается с целого числа" else echo "ввод НЕ начинается с целого числа" endif
where
команда. Работает как which
команда, но показывает все расположения целевой команды в указанных каталогах, $PATH
а не только то, которое будет использоваться.Ранние версии Mac OS X поставлялись с tcsh в качестве оболочки по умолчанию, но с версии 10.3 по умолчанию для новых учетных записей стал использоваться bash , а с версии 10.15 — zsh . (tcsh по-прежнему предоставляется, и обновление ОС не изменяет оболочку существующих учетных записей). tcsh был оболочкой root по умолчанию в FreeBSD до версии 14.0 (текущая оболочка и оболочка пользователя по умолчанию в более старых версиях основана на POSIX ) [15] [16] [17] и ее потомках, таких как DragonFly BSD и DesktopBSD .