tcsh ( / ˌ t iː ˈ s iː ʃ ɛ l / “tee-see-shell”, / ˈ t iː ʃ ɛ l / “tee-shell”, o como “tee see ess aitch”, tcsh) es un shell de Unix basado en y compatible con versiones anteriores del shell C ( csh).
Caparazón
Es esencialmente el shell C con finalización programable de línea de comandos , edición de línea de comandos y algunas otras características. A diferencia de otros shells comunes, las funciones no se pueden definir en un script tcsh y el usuario debe usar alias en su lugar (como en csh). Es el shell raíz nativo para algunos sistemas basados en BSD, incluidos FreeBSD 13 y anteriores. (FreeBSD 14 cambió el shell raíz predeterminado a shpara que coincida con el shell de usuario predeterminado [5], mientras que OpenBSD usa el shell Korn ksh tanto para root como para usuarios normales. [6] )
tcsh agregó nombres de archivo, finalización de comandos y conceptos de edición de línea de comandos tomados del sistema operativo TENEX , que es la fuente de la “t”. [7] Debido a que solo agregó funcionalidad y no cambió lo que ya existía, tcsh siguió siendo compatible con versiones anteriores [8] con el C shell original. Aunque comenzó como una rama lateral del árbol de código fuente csh original que Bill Joy había creado, tcsh es ahora la rama principal para el desarrollo en curso.
tcsh es muy estable, pero siguen apareciendo nuevas versiones aproximadamente una vez al año, que consisten principalmente en correcciones de errores menores. [9]
En muchos sistemas, como macOS y Red Hat Linux , cshes en realidad tcsh. A menudo, uno de los dos archivos es un enlace físico o un enlace simbólico al otro, de modo que cualquiera de los dos nombres hace referencia a la misma versión mejorada del shell C (aunque el comportamiento puede modificarse según el nombre que se utilice).
En Debian y algunos derivados (incluido Ubuntu ), existen dos paquetes diferentes: csh y tcsh. El primero se basa en la versión BSD original de csh [10] [11] y el segundo es la versión mejorada de tcsh. [12] [13]
Historia
La “t” en tcshviene de la “T” en TENEX , un sistema operativo que inspiró a Ken Greer en la Universidad Carnegie Mellon , el autor de tcsh, con su función de finalización de comandos. [14] Greer comenzó a trabajar en su código para implementar la finalización de nombre de archivo al estilo Tenex en septiembre de 1975, finalmente fusionándolo con el shell C en diciembre de 1981. [7] Mike Ellis en Fairchild AI Labs agregó la finalización de comandos en septiembre de 1983. [7] El 3 de octubre de 1983, Greer publicó el código fuente en el grupo de noticias net.sources. [7]
Características significativas
- Historial de comandos
- El comando incorporado
historymuestra los comandos ingresados previamente - Uso de ↑/ en la línea de comandos para permitir al usuario seleccionar un comando del historial para editarlo/ejecutarlo↓
- Invocar comandos anteriores utilizando el historial de comandos
!!ejecuta el comando anterior!nejecuta el comando n-ésimo que se ejecutó previamente!-nejecuta el comando que se ejecutó hace n comandos!stringejecuta el comando ejecutado más recientemente que comienza con la cadena!?stringejecuta el comando ejecutado más recientemente que contiene la cadena
- Uso del historial en nuevos comandos
!*- se refiere a todos los argumentos del comando anterior!$- se refiere al último argumento del comando anterior!^- se refiere al primer argumento del comando anterior!:n- se refiere al n- ésimo argumento del comando anterior!:m-n- se refiere a los argumentos m- ésimo a n- ésimo del comando anterior!:n-$- se refiere al n -ésimo hasta el último argumento del comando anterior
- El comando incorporado
- Edición de línea de comandos
- Completado automático de nombres de archivos y variables, así como finalización programable en la línea de comandos
- Selectores de argumentos de alias: la capacidad de definir un alias para tomar los argumentos que se le proporcionan y aplicarlos a los comandos a los que hace referencia. Tcsh es el único shell que ofrece esta característica (en lugar de funciones).
\!#- selector de argumentos para todos los argumentos, incluido el alias/comando en sí; no es necesario proporcionar argumentos.\!*- selector de argumentos para todos los argumentos, excluyendo el alias/comando; no es necesario proporcionar argumentos.\!$- selector de argumentos para el último argumento; no es necesario suministrar ningún argumento, pero si no se suministra ninguno, el nombre del alias se considera el último argumento.\!^- selector de argumentos para el primer argumento; el argumento DEBE ser suministrado.\!:n- selector de argumentos para el argumento n- ésimo ; el argumento DEBE proporcionarse; n=0 se refiere al nombre del alias/comando.\!:m-n- selector de argumentos para los argumentos del m- ésimo al n -ésimo ; los argumentos DEBEN ser suministrados.\!:n-$- selector de argumentos para los argumentos del n- ésimo al último; se DEBE proporcionar al menos el argumento n.\!:n*- selector de argumentos para los argumentos del n- ésimo al último; no es necesario proporcionar suficientes argumentos.#Alias el comando cd para que cuando cambie de directorio, el contenido se muestre inmediatamente. alias cd 'cd \!* && ls'
- Coincidencia de comodines
if ( "$input" = ~ [ 0-9 ] * ) then echo "la entrada comienza con un entero" else echo "la entrada NO comienza con un entero" endif
- Control de trabajo
- El comando integrado
where. Funciona como elwhichcomando pero muestra todas las ubicaciones del comando de destino en los directorios especificados en$PATHlugar de solo el que se utilizará.
Despliegue
Las primeras versiones de Mac OS X se entregaban con tcsh como shell predeterminado, pero el valor predeterminado para las nuevas cuentas pasó a ser bash a partir de la versión 10.3 , luego zsh a partir de la versión 10.15 . (tcsh aún se proporciona, y actualizar el sistema operativo no cambia el shell de ninguna cuenta existente). tcsh era el shell raíz predeterminado de FreeBSD antes de la versión 14.0 (el shell actual y el shell de usuario predeterminado en versiones anteriores está basado en POSIX ) [15] [16] [17] y sus descendientes como DragonFly BSD y DesktopBSD .
Véase también
Referencias
- ^ "Versión 6.24.14". 26 de noviembre de 2024. Consultado el 1 de diciembre de 2024 .
- ^ "eliminar la cláusula 3 del copyright". GitHub . 2002-03-08.
- ^ "Eliminar la cláusula 3 del copyright (modificada en otros archivos el 8 de marzo de 2002)". GitHub . 14 de julio de 2014.
- ^ "Lanzamiento de Tcsh-6.00". GitHub . 4 de julio de 1991.
- ^ "Guía de inicio rápido de FreeBSD para usuarios de Linux".
- ^ "OpenBSD para usuarios de Linux".
- ^ abcd Ken Greer (3 de octubre de 1983). "C shell con reconocimiento y finalización de comandos y nombres de archivo". Grupo de noticias : net.sources . Consultado el 29 de diciembre de 2010 .
- ^ Página del manual tcsh(1). tcsh.
- ^ Corrige el archivo en tcsh-17 de junio de 2000.
- ^ Ubuntu - Detalles del paquete csh.launchpad.net.
- ^ Debian - Detalles del paquete csh.tracker.debian.org.
- ^ Ubuntu - Detalles del paquete tcsh.launchpad.net.
- ^ Debian - Detalles del paquete tcsh.tracker.debian.org.
- ^ "La T en tcsh". Archivado desde el original el 14 de abril de 2012. Consultado el 31 de octubre de 2013 .
- ^ Michael Urban; Brian Tiemann (2002). Sams: aprenda a usar FreeBSD en 24 horas. Sams Publishing. p. 56. ISBN 978-0-672-32424-6.
- ^ Lenguaje de comandos del shell POSIX 2008 "El shell System V fue seleccionado como punto de partida para el volumen Shell and Utilities de POSIX.1-2008. El shell BSD C fue excluido de la consideración"
- ^ "Guía de inicio rápido de FreeBSD para usuarios de Linux". Portal de documentación de FreeBSD . Consultado el 4 de febrero de 2024 .
Enlaces externos
- Sitio web oficial
- Comunicados de tcsh
- Lista de correo de tcsh
- Página del manual de tcsh
- Archivo del libro de O'Reilly "Usando csh y tcsh" Archivado el 25 de febrero de 2011 en Wayback Machine