fbpx
Wikipedia

C shell

[Cuentas Google 1]

C shell
Información general
Tipo de programa Shell
Autor Bill Joy
Lanzamiento inicial 1978
Licencia BSD
Información técnica
Programado en C
Versiones
Última versión estable 6.20.00 ()
Lanzamientos
C shell
Tcsh
Enlaces
Repositorio de código

C shell es un intérprete de comandos (shell) de Unix (llamado csh o tcsh) creado por Bill Joy al graduarse de la Universidad de Bekeley en California en 1970. Las primeras versiones se distribuyeron con el sistema operativo 2BSD en el año de 1978.[1][2]​ Otros desarrolladores que contribuyeron al código de C shell en sus primeras etapas fueron Michael Ubell, Eric Allman, Mile O'Brien y Jim Kulp.[3]

Csh es un intérprete de comandos que se ejecuta en una ventana en modo texto, y permite al usuario ingresar comandos. También puede leer Reset desde un fichero de texto llamado script y como toda shell de Unix soporta comodines y tuberías para referirse a los nombres de ficheros, sustitución de comandos, variables, condicionales e interacción. Lo que diferenciaba la shell C de otras (en 1980) fueron sus características interactivas y el estilo general. Las nuevas características lo hicieron más fácil y rápido de usar, también destacaba el lenguaje de comandos similar al lenguaje de programación C.

En muchos sistemas como Mac OS X y Red Hat, csh es tcsh, una versión mejorada de csh. A menudo cualquiera de los dos nombres (csh o tcsh) es un enlace simbólico a la versión mejorada de C shell (tcsh).

En Debian y algunos derivados (Ubuntu) hay dos paquetes diferentes, csh y tcsh. El primero se basa en la versión original para BSD[4][5]​ y el segundo es la versión mejora de csh.[6][7]

tcsh agregó nombres de archivos, terminación de línea de comandos y la capacidad de editar líneas de comando que tomó prestado del sistema Tenex, por el cual lleva la letra "t" .[8]​ Debido a que tcsh[9]​ solo agregó funcionalidad y no cambió mucho se mantuvo compatible con la C shell original.

tcsh inició como una rama lateral a partir del código inicial que Bill Joe había escrito. tcsh es ahora la rama principal que se continua desarrollando, se mantiene estable y las versiones son publicadas alrededor del año y consisten en pequeñas correcciones de errores.[10]

Estilo C

El sistema operativo Unix se había escrito exclusivamente en C, así que el primer objetivo de C shell fue un lenguaje de comandos que poseyera un estilo consistente con el resto del sistema.

El uso de palabras claves, paréntesis, gramática integrada y el soporte de matrices de C shell fueron estrechamente influenciadas por el lenguaje C.

El siguiente ejemplo muestra la sintaxis, expresiones y diferencias entre csh y sh.

Bourne shell

#!/bin/sh if [ $días -gt 365 ] then echo Ha pasado más de un año. fi 

C shell

#!/bin/csh if ( $días > 365 ) then  echo Ha pasado más de un año. endif 

sh carecía de expresiones gramáticas. La condición entre corchetes era evaluada de forma lenta, esto quería decir que necesitaba correr programas externos para realizar dicha comprobación. sh tomaba palabras como argumentos y comandos que debían ser ejecutado como proceso hijos. Si el proceso hijo daba un código de retorno cero, entonces sh buscaría una cláusula then (una sentencia separada pero a menudo escrita en la misma línea con un punto y coma) y ejecutaría el bloque anidado, de lo contrario se ejecutaría el resto. La vinculación del programa "test" y "[" dio una ventaja de notación a los corchetes y la apariencia que la funcionalidad test era parte del lenguaje. sh usó una palabra clave invertida para marcar el final de un bloque de control, fue un estilo tomado de ALGOL68.[11]


Por el contrario csh podía evaluar expresiones directamente, lo que la hacía más rápida. Tenía mejor legibilidad: Sus expresiones utilizaban una gramática y un conjunto de operadores copiado en su mayoría del lenguaje C; ninguna de sus palabras claves se invirtieron y su estilo era parecido al de C.

Un segundo ejemplo, comparando scripts que calculan las primeras 10 potencias de 2.

Bourne shell

#!/bin/sh i=2 j=1 while [ $j -le 10 ] do echo '2 **' $j = $i i=`expr $i '*' 2` j=`expr $j + 1` done 

C shell

#!/bin/csh set i = 2 set j = 1 while ( $j <= 10 ) echo '2 **' $j = $i @ i *= 2 @ j++ end 

Debido a la falta de expresión gramática, el script sh utiliza la sustitución de comando y el comando expr. La declaración @ en C shell es un juego de palabras, es la sentencia "at-sign-ment".

Tenemos un tercer ejemplo mostrando un estilo para una instrucción switch.

Bourne shell

#!/bin/sh for i in d* do case $i in d?) echo $i is short ;; *) echo $i is long ;; esac done 

C shell

#!/bin/csh foreach i ( d* ) switch ( $i ) case d?: echo $i is short breaksw  default: echo $i is long endsw end 

En el script sh ";;" marca el final de cada caso debido a que sh no permite declaraciones nulas.

Mejoras para el uso interactivo

El segundo objetivo de C shell era ser mejor para el uso interactivo. Se introdujeron nuevas características que lo hizo más fácil, rápido y más amigable para escribir comandos en la terminal. Los usuarios podían realizar tareas con menos pulsaciones de teclas y ejecutaban más rápido. La característica nueva más significativa fue el historial y el mecanismo de edición de alias, directorios, notación de tilde, cdpath, control de trabajo y path hashing. Estas nuevas características resultaron ser muy populares y muchas de ellas fueron copiadas por otras shells de Unix.

Historial

El historial permite a los usuarios recordar comandos y volver a ejecutarlos haciendo algunas pulsaciones de teclas rápidas. Por ejemplo, dos signos de exclamación "!!" escritos como un comando se denominan un "bang, bang" y hace que se ejecute el comando anterior. Otras combinaciones cortas de pulsaciones de teclas son, "!$" significa que se debe ejecutar solo el último argumento del comando anterior; permite que los bits y piezas de comandos anteriores se peguen juntos y edite para formar un nuevo comando.

Edición de operadores

La edición funciona tanto para un comando anterior como en la sustitución de variables, donde los operadores van desde la búsqueda "/" a la sustitución de cadenas de caracteres o analizar una ruta para extraer un segmento específico.

Alias

Permiten abreviar un conjunto de comandos y expresiones dentro de una palabra clave definida por el usuario, la cual C shell expande y ejecuta. Para situaciones simples los alias se ejecutan más rápido y son más convenientes que los scripts.

Pila de directorios

La pila de directorios permite al usuario empujar o abrir el directorio de trabajo actual, facilitando el salto hacía adelante o hacía atrás entre distintos lugares del sistema de archivos.

Notación de tilde

La notación tilde ofrece un forma abreviada de especificar las rutas relativas al directorio home usando el carácter "~".

Autocompletando nombres de archivos

La tecla tabuladora puede ser utilizada de forma interactiva para mostrar posibles terminaciones de nombres de archivos.

Cdpath

Extiende la noción de ruta de búsqueda del comando cd (chage directory). Si el directorio especificado al comando cd no está en el directorio actual, csh intentará encontrarlo en los directorios almacenados en cdpath.

Control de procesos

En la década de los ochenta la mayoría de los usuarios tenía terminales en modo de caracteres simples que impedía varias ventanas, por lo cual solo podían trabajar en un proceso a la vez. El control de procesos de C shell permitió al usuario suspender la actividad actual y crear una nueva instancia de C shell, denominada proceso. Escribiendo Ctrl + Z, el usuario podía cambiar entre procesos utilizando el comando fg, entonces, se decía, que el proceso actual estaba en primer plano y el resto de los procesos estaban suspendidos o en segundo plano.

Path hashing

El hash de la ruta acelera la búsqueda de ejecutables en C shell. En lugar de realizar una llama al sistema de archivos por cada ruta de un directorio, esto es, uno a la vez hasta encontrar el archivo o quedarse sin posibilidades, C shell consultará una tabla hash interna que se construye al escanear la ruta de los directorios. Esta tabla puede indicar a C shell donde encontrar el archivo (si existe) sin tener que buscar y puede ser actualizada con el comando rehash.

Descripción general del lenguaje

C shell funciona ejecutando una línea a la vez. Cada línea es tokenizada en un conjunto de palabras separadas por espacios u otros caracteres con significado especial, incluyendo paréntesis, tubería, operadores de redirección de entrada y salida, punto y coma y signos de expansión.

Declaraciones básicas

Una instrucción básica es aquella que ejecuta un comando. La primera palabra se toma como nombre del comando que se va a ejecutar, puede ser un comando interno, por ejemplo, echo o un comando externo, el resto de las palabras se pasan como argumentos al comando.

Ejemplo básico de las declaraciones y su gramática:

Comodín

C shell al igual que todos los shells de Unix, trata cualquier argumento que contiene caracteres comodines como un patrón, y lo reemplaza con la lista de todos lo nombres de archivos que coinciden.

* coincide con cualquier número de caracteres.
? coincide con cualquier carácter individual.
[...] coincide con cualquier carácter dentro de los corchetes. Se permiten rangos usando el guion.
[! ... ] coincide con cualquier carácter que no esté en el conjunto.

C shell también introdujo varias notaciones convenientes (conocida como extend globbing) que fueron copiados por otros shells de Unix.

abc{def,ghi} es una variación y se expande a abcdef abcghi. ~ directorio home del usuario. ~user directorio home del usuario.

Mutiples niveles de directorios, por ejemplo, "*/*.c", son soportados.

Desde la versión 6.17.01 el comodín recursivo de la zsh (p. ej. "**/*.c" o "***/*.html" también soportado con la opción globstar.

Dar la responsabilidad de interpretar comodines a la shell era una decisión importante en Unix, significaba que los comodines funcionan como comandos y siempre de la misma manera. Sin embargo, la decisión se basó en la capacidad de Unix de pasar largas listas de argumentos de forma eficiente a través de las llamadas al sistema con exec que csh utiliza para ejecutar comandos. Por el contrario, en Windows la interpretación de comodín se realiza usualmente por cada aplicación. Este es un legado de MS-DOS que solo permitía que un línea de comandos de 128 bytes se pasara a una aplicación, haciendo que pasar un comodín al indicador de comandos de DOS fuera impráctico. En la actualidad Windows puede pasar líneas de comandos de aproximadamente 32K de caracteres Unicode. La carga para interpretar un comodín la tiene la aplicación.

Redirección de E/S (Entrada/Salida)

Por defecto cuando csh ejecuta un comando, el comando hereda las funciones de la biblioteca de entrada/salida (stdio) estándar para stdin (entrada estándar), stdout (salida estándar), stderr (salida de errores estándar) que normalmente apuntan a la ventana de la terminal donde se ejecuta C shell. Los operadores de redirección de E/S permite que el comando utilice un archivo en lugar de la entrada y salida estándar.

> significa que el stdout se escribirá en un archivo y si existe lo sobreescribirá y si no existe lo creará, los errores que se presenten serán mostrado en la ventana del shell.

>& significa que stdout y stderr se escribirá en una archivo, sobreescribiéndolo si existe y creándolo si no existe.

>> adjunta stdout al final de un archivo.

>& adjunta stdout y stderr al final de un archivo.

< significa leer stdin desde un archivo.

<< stdin leerá las siguientes líneas hasta que coincida con la cadena de caracteres.

Operadores de unión

Varios comandos pueden ser unidos en la misma línea.

; significa, ejecuta el primer comando y el siguiente.

&& significa, ejecuta el primero comando y si obtienes un código de retorno 0 ejecuta el siguiente.

||significa, ejecuta el primer comando, y si devuelve un código de retorno distintos de 0, entonces, ejecuta el siguiente.

Tuberías

Los comandos puede ser conectados usando tuberías, esto es, que la salida de un comando es la entrada del siguiente. Ambos comandos se ejecutan simultáneamente.

| significa conectar stdout con el siguiente comando. Si hay errores se mostrarán en la pantalla de la shell.

|& significa conectar stdout y stderr al stdin del siguiente comando.

Ejecutar simultáneamente significa "en paralelo". En sistema con varios núcleos (procesadores múltiples) los comandos de tuberías (pipeline) pueden estar ejecutándose al mismo tiempo, en caso contrario el programador del sistema operativo divide el tiempo de ejecución entre los comandos.

Dado un comando, p.ej. "a|b", la shell crea una tubería, entonces a y b usarán stdio para que los dos comandos sean redirigidos. a escribe su salida (stdout) en la entrada de la tubería (|), mientras b lee la entrada (stdin) desde la salida de la tubería. Las tuberías son implementadas por el sistemas operativo con una cierta cantidad de búfer para que puedan escribir antes que la tubería se llene, pero una vez que la tubería se llena cualquier escritura nueva será bloqueada dentro del sistema operativo hasta que b lea lo suficiente para desbloquear la nueva escritura. Si b intenta leer más dados de los que están disponibles se bloqueará hasta que haya escrito más datos o hasta que la tubería se cierre, p.ej. si sale.

Sustitución de variables

Si una palabra comienza con el signo de dólar, "$" los siguientes caracteres son tomados como el nombre de un variable y la referencia se sustituye por el valor que contenga la variable.

Comillas y símbolo de escape

Las comillas permiten que los caracteres especiales, como, espacios en blanco, comodines, paréntesis y signos de dólar, se tomen como texto literal.

/ Tomar el siguiente carácter como un carácter literal.

"texto" Comilla débil. Los espacios en blanco y comodines se toman como literales, mientras las sustituciones y comandos se siguen realizando.

'texto' Comilla fuerte. Todo el texto incluido se toma como literal.

Sustitución de comandos

La sustitución de comandos permite que la salida de un comando pueda ser usada como los argumentos de otro.

`comando` Significa: toma la salida de un comando, analiza las palabras y pégalas de nuevo en la línea de comando.

Ejecución en segundo plano

Normalmente cuando C shell inicia un comando, espera que el comando termine antes de darle al usuario otro mensaje que indica que puede escribir de nuevo otro comando.

comando & Significa, ejecuta el comando en segundo plano y muestra el indicador para que puedan escribir un nuevo comando.

Subshells

Una subshell es un copia secundaria separa de shell que hereda su estado actual, pero puede hacer cambios p. ej. en el directorio actual, sin afectar a la shell padre.

(comando). Significa, ejecute el comando en una subshell.

Estructuras de control

La C shell proporciona una estructura de control para condicionales e iteraciones; la condicional if, declaraciones switch, la estructura de interacción while, foreach y repeat.

condicional if

Hay dos formas de condicional, la forma larga y la forma corta. La forma corta se escribe especificando el condicional y el comando en la misma línea.

 if ( expresión)  comando 

Y la forma larga usando las palabras claves then, else y endif escritas en bloques de comandos dentro del condicional.

 if ( expresión1 ) then comandos else if ( expresión2 ) then comandos ... else comandos endif 

Las palabras claves aparecen en la misma línea y csh en vez de anidar las cadenas termina los bloques con solo endif

Sentencia switch

La sentencia switch compara un cadena de caracteres con una lista de patrones, donde cada patrón puede contener comodines. Si no coincide con ningún patrón se toma la acción por defecto (default), si la hay.

 switch ( cadena ) case patron1: comandos breaksw case patron2: comandos breaksw ... default: comandos breaksw endsw 

Bucle while

El bucle while evalúa una expresión. Si es verdadera, la shell ejecuta los comandos dentro del cuerpo del while mientras la expresión siga siendo cierta.

 while ( expression ) commands end 

Bucle foreach

El bucle foreach toma una lista de valores, por lo general un lista de nombres de archivos producidos por un comodín y asigna a la variable del bucle cada uno de los valores y ejecuta los comandos dentro del cuerpo del bucle.

 foreach variable ( lista_de_valores ) comandos end 

Instrucción repeat

La instrucción repeat repite un comando un número entero de veces.

 repeat número comando 

Véase también

Referencias

  1. Harley Hahn, Harley Hahn's Guide to Unix and Linux.
  2. Berkeley Engineering Lab Notes, volumen 1, problema 2, octubre 2001 el 9 de julio de 2010 en Wayback Machine..
  3. An Introduction to the C shell por Bill Joy.
  4. Ubuntu - Detalles del paquete csh. Packages.ubuntu.com.
  5. Debian - Detalles del paquete csh Packages.debian.org.
  6. Ubuntu - Detalles del paquete tcsh. Packages.ubuntu.com.
  7. Debian - Detalles del paquete tcsh. Packages.debian.org.
  8. Ken Greer (3 de octubre de 1983). "C shell with command and filename recognition/completion". net.sources (Google Groups). URL accedida el 29 de diciembre de 2010.
  9. tcsh(1) man page tcsh
  10. Fixes file in tcsh-17 June 2000.
  11. Respuesta: Late Bloomers Revisited USENET publicado en comp.lang.misc por Piercarlo "Peter" Grandi, Dept of CS, UCW Aberystwyth, UK, 17 de diciembre de 1989.
  •   Datos: Q1064516


Error en la cita: Existen etiquetas <ref> para un grupo llamado «Cuentas Google», pero no se encontró la etiqueta <references group="Cuentas Google"/> correspondiente.

shell, cuentas, google, información, generaltipo, programashellautorbill, joylanzamiento, inicial1978licenciabsdinformación, técnicaprogramado, encversionesÚltima, versión, estable6, lanzamientostcshenlacesrepositorio, código, editar, datos, wikidata, intérpre. Cuentas Google 1 C shellInformacion generalTipo de programaShellAutorBill JoyLanzamiento inicial1978LicenciaBSDInformacion tecnicaProgramado enCVersionesUltima version estable6 20 00 LanzamientosC shellTcshEnlacesRepositorio de codigo editar datos en Wikidata C shell es un interprete de comandos shell de Unix llamado csh o tcsh creado por Bill Joy al graduarse de la Universidad de Bekeley en California en 1970 Las primeras versiones se distribuyeron con el sistema operativo 2BSD en el ano de 1978 1 2 Otros desarrolladores que contribuyeron al codigo de C shell en sus primeras etapas fueron Michael Ubell Eric Allman Mile O Brien y Jim Kulp 3 Csh es un interprete de comandos que se ejecuta en una ventana en modo texto y permite al usuario ingresar comandos Tambien puede leer Reset desde un fichero de texto llamado script y como toda shell de Unix soporta comodines y tuberias para referirse a los nombres de ficheros sustitucion de comandos variables condicionales e interaccion Lo que diferenciaba la shell C de otras en 1980 fueron sus caracteristicas interactivas y el estilo general Las nuevas caracteristicas lo hicieron mas facil y rapido de usar tambien destacaba el lenguaje de comandos similar al lenguaje de programacion C En muchos sistemas como Mac OS X y Red Hat csh es tcsh una version mejorada de csh A menudo cualquiera de los dos nombres csh o tcsh es un enlace simbolico a la version mejorada de C shell tcsh En Debian y algunos derivados Ubuntu hay dos paquetes diferentes csh y tcsh El primero se basa en la version original para BSD 4 5 y el segundo es la version mejora de csh 6 7 tcsh agrego nombres de archivos terminacion de linea de comandos y la capacidad de editar lineas de comando que tomo prestado del sistema Tenex por el cual lleva la letra t 8 Debido a que tcsh 9 solo agrego funcionalidad y no cambio mucho se mantuvo compatible con la C shell original tcsh inicio como una rama lateral a partir del codigo inicial que Bill Joe habia escrito tcsh es ahora la rama principal que se continua desarrollando se mantiene estable y las versiones son publicadas alrededor del ano y consisten en pequenas correcciones de errores 10 Indice 1 Estilo C 2 Mejoras para el uso interactivo 2 1 Historial 2 2 Edicion de operadores 2 3 Alias 2 4 Pila de directorios 2 5 Notacion de tilde 2 6 Autocompletando nombres de archivos 2 7 Cdpath 2 8 Control de procesos 2 9 Path hashing 3 Descripcion general del lenguaje 3 1 Declaraciones basicas 3 1 1 Comodin 3 1 2 Redireccion de E S Entrada Salida 3 1 3 Operadores de union 3 1 4 Tuberias 3 1 5 Sustitucion de variables 3 1 6 Comillas y simbolo de escape 3 1 7 Sustitucion de comandos 3 1 8 Ejecucion en segundo plano 3 1 9 Subshells 3 2 Estructuras de control 3 2 1 condicional if 3 2 2 Sentencia switch 3 2 3 Bucle while 3 2 4 Bucle foreach 3 2 5 Instruccion repeat 4 Vease tambien 5 ReferenciasEstilo C EditarEl sistema operativo Unix se habia escrito exclusivamente en C asi que el primer objetivo de C shell fue un lenguaje de comandos que poseyera un estilo consistente con el resto del sistema El uso de palabras claves parentesis gramatica integrada y el soporte de matrices de C shell fueron estrechamente influenciadas por el lenguaje C El siguiente ejemplo muestra la sintaxis expresiones y diferencias entre csh y sh Bourne shell bin sh if dias gt 365 then echo Ha pasado mas de un ano fi C shell bin csh if dias gt 365 then echo Ha pasado mas de un ano endif sh carecia de expresiones gramaticas La condicion entre corchetes era evaluada de forma lenta esto queria decir que necesitaba correr programas externos para realizar dicha comprobacion sh tomaba palabras como argumentos y comandos que debian ser ejecutado como proceso hijos Si el proceso hijo daba un codigo de retorno cero entonces sh buscaria una clausula then una sentencia separada pero a menudo escrita en la misma linea con un punto y coma y ejecutaria el bloque anidado de lo contrario se ejecutaria el resto La vinculacion del programa test y dio una ventaja de notacion a los corchetes y la apariencia que la funcionalidad test era parte del lenguaje sh uso una palabra clave invertida para marcar el final de un bloque de control fue un estilo tomado de ALGOL68 11 Por el contrario csh podia evaluar expresiones directamente lo que la hacia mas rapida Tenia mejor legibilidad Sus expresiones utilizaban una gramatica y un conjunto de operadores copiado en su mayoria del lenguaje C ninguna de sus palabras claves se invirtieron y su estilo era parecido al de C Un segundo ejemplo comparando scripts que calculan las primeras 10 potencias de 2 Bourne shell bin sh i 2 j 1 while j le 10 do echo 2 j i i expr i 2 j expr j 1 done C shell bin csh set i 2 set j 1 while j lt 10 echo 2 j i i 2 j end Debido a la falta de expresion gramatica el script sh utiliza la sustitucion de comando y el comando expr La declaracion en C shell es un juego de palabras es la sentencia at sign ment Tenemos un tercer ejemplo mostrando un estilo para una instruccion switch Bourne shell bin sh for i in d do case i in d echo i is short echo i is long esac done C shell bin csh foreach i d switch i case d echo i is short breaksw default echo i is long endsw end En el script sh marca el final de cada caso debido a que sh no permite declaraciones nulas Mejoras para el uso interactivo EditarEl segundo objetivo de C shell era ser mejor para el uso interactivo Se introdujeron nuevas caracteristicas que lo hizo mas facil rapido y mas amigable para escribir comandos en la terminal Los usuarios podian realizar tareas con menos pulsaciones de teclas y ejecutaban mas rapido La caracteristica nueva mas significativa fue el historial y el mecanismo de edicion de alias directorios notacion de tilde cdpath control de trabajo y path hashing Estas nuevas caracteristicas resultaron ser muy populares y muchas de ellas fueron copiadas por otras shells de Unix Historial Editar El historial permite a los usuarios recordar comandos y volver a ejecutarlos haciendo algunas pulsaciones de teclas rapidas Por ejemplo dos signos de exclamacion escritos como un comando se denominan un bang bang y hace que se ejecute el comando anterior Otras combinaciones cortas de pulsaciones de teclas son significa que se debe ejecutar solo el ultimo argumento del comando anterior permite que los bits y piezas de comandos anteriores se peguen juntos y edite para formar un nuevo comando Edicion de operadores Editar La edicion funciona tanto para un comando anterior como en la sustitucion de variables donde los operadores van desde la busqueda a la sustitucion de cadenas de caracteres o analizar una ruta para extraer un segmento especifico Alias Editar Permiten abreviar un conjunto de comandos y expresiones dentro de una palabra clave definida por el usuario la cual C shell expande y ejecuta Para situaciones simples los alias se ejecutan mas rapido y son mas convenientes que los scripts Pila de directorios Editar La pila de directorios permite al usuario empujar o abrir el directorio de trabajo actual facilitando el salto hacia adelante o hacia atras entre distintos lugares del sistema de archivos Notacion de tilde Editar La notacion tilde ofrece un forma abreviada de especificar las rutas relativas al directorio home usando el caracter Autocompletando nombres de archivos Editar La tecla tabuladora puede ser utilizada de forma interactiva para mostrar posibles terminaciones de nombres de archivos Cdpath Editar Extiende la nocion de ruta de busqueda del comando cd chage directory Si el directorio especificado al comando cd no esta en el directorio actual csh intentara encontrarlo en los directorios almacenados en cdpath Control de procesos Editar En la decada de los ochenta la mayoria de los usuarios tenia terminales en modo de caracteres simples que impedia varias ventanas por lo cual solo podian trabajar en un proceso a la vez El control de procesos de C shell permitio al usuario suspender la actividad actual y crear una nueva instancia de C shell denominada proceso Escribiendo Ctrl Z el usuario podia cambiar entre procesos utilizando el comando fg entonces se decia que el proceso actual estaba en primer plano y el resto de los procesos estaban suspendidos o en segundo plano Path hashing Editar El hash de la ruta acelera la busqueda de ejecutables en C shell En lugar de realizar una llama al sistema de archivos por cada ruta de un directorio esto es uno a la vez hasta encontrar el archivo o quedarse sin posibilidades C shell consultara una tabla hash interna que se construye al escanear la ruta de los directorios Esta tabla puede indicar a C shell donde encontrar el archivo si existe sin tener que buscar y puede ser actualizada con el comando rehash Descripcion general del lenguaje EditarC shell funciona ejecutando una linea a la vez Cada linea es tokenizada en un conjunto de palabras separadas por espacios u otros caracteres con significado especial incluyendo parentesis tuberia operadores de redireccion de entrada y salida punto y coma y signos de expansion Declaraciones basicas Editar Una instruccion basica es aquella que ejecuta un comando La primera palabra se toma como nombre del comando que se va a ejecutar puede ser un comando interno por ejemplo echo o un comando externo el resto de las palabras se pasan como argumentos al comando Ejemplo basico de las declaraciones y su gramatica Comodin Editar C shell al igual que todos los shells de Unix trata cualquier argumento que contiene caracteres comodines como un patron y lo reemplaza con la lista de todos lo nombres de archivos que coinciden coincide con cualquier numero de caracteres coincide con cualquier caracter individual coincide con cualquier caracter dentro de los corchetes Se permiten rangos usando el guion coincide con cualquier caracter que no este en el conjunto dd C shell tambien introdujo varias notaciones convenientes conocida como extend globbing que fueron copiados por otros shells de Unix abc def ghi es una variacion y se expande a abcdef abcghi directorio home del usuario user directorio home del usuario Mutiples niveles de directorios por ejemplo c son soportados Desde la version 6 17 01 el comodin recursivo de la zsh p ej c o html tambien soportado con la opcion globstar Dar la responsabilidad de interpretar comodines a la shell era una decision importante en Unix significaba que los comodines funcionan como comandos y siempre de la misma manera Sin embargo la decision se baso en la capacidad de Unix de pasar largas listas de argumentos de forma eficiente a traves de las llamadas al sistema con exec que csh utiliza para ejecutar comandos Por el contrario en Windows la interpretacion de comodin se realiza usualmente por cada aplicacion Este es un legado de MS DOS que solo permitia que un linea de comandos de 128 bytes se pasara a una aplicacion haciendo que pasar un comodin al indicador de comandos de DOS fuera impractico En la actualidad Windows puede pasar lineas de comandos de aproximadamente 32K de caracteres Unicode La carga para interpretar un comodin la tiene la aplicacion Redireccion de E S Entrada Salida Editar Por defecto cuando csh ejecuta un comando el comando hereda las funciones de la biblioteca de entrada salida stdio estandar para stdin entrada estandar stdout salida estandar stderr salida de errores estandar que normalmente apuntan a la ventana de la terminal donde se ejecuta C shell Los operadores de redireccion de E S permite que el comando utilice un archivo en lugar de la entrada y salida estandar gt significa que el stdout se escribira en un archivo y si existe lo sobreescribira y si no existe lo creara los errores que se presenten seran mostrado en la ventana del shell gt amp significa que stdout y stderr se escribira en una archivo sobreescribiendolo si existe y creandolo si no existe gt gt adjunta stdout al final de un archivo gt amp adjunta stdout y stderr al final de un archivo lt significa leer stdin desde un archivo lt lt stdin leera las siguientes lineas hasta que coincida con la cadena de caracteres Operadores de union Editar Varios comandos pueden ser unidos en la misma linea significa ejecuta el primer comando y el siguiente amp amp significa ejecuta el primero comando y si obtienes un codigo de retorno 0 ejecuta el siguiente significa ejecuta el primer comando y si devuelve un codigo de retorno distintos de 0 entonces ejecuta el siguiente Tuberias Editar Los comandos puede ser conectados usando tuberias esto es que la salida de un comando es la entrada del siguiente Ambos comandos se ejecutan simultaneamente significa conectar stdout con el siguiente comando Si hay errores se mostraran en la pantalla de la shell amp significa conectar stdout y stderr al stdin del siguiente comando Ejecutar simultaneamente significa en paralelo En sistema con varios nucleos procesadores multiples los comandos de tuberias pipeline pueden estar ejecutandose al mismo tiempo en caso contrario el programador del sistema operativo divide el tiempo de ejecucion entre los comandos Dado un comando p ej a b la shell crea una tuberia entonces a y b usaran stdio para que los dos comandos sean redirigidos a escribe su salida stdout en la entrada de la tuberia mientras b lee la entrada stdin desde la salida de la tuberia Las tuberias son implementadas por el sistemas operativo con una cierta cantidad de bufer para que puedan escribir antes que la tuberia se llene pero una vez que la tuberia se llena cualquier escritura nueva sera bloqueada dentro del sistema operativo hasta que b lea lo suficiente para desbloquear la nueva escritura Si b intenta leer mas dados de los que estan disponibles se bloqueara hasta que haya escrito mas datos o hasta que la tuberia se cierre p ej si sale Sustitucion de variables Editar Si una palabra comienza con el signo de dolar los siguientes caracteres son tomados como el nombre de un variable y la referencia se sustituye por el valor que contenga la variable Comillas y simbolo de escape Editar Las comillas permiten que los caracteres especiales como espacios en blanco comodines parentesis y signos de dolar se tomen como texto literal Tomar el siguiente caracter como un caracter literal texto Comilla debil Los espacios en blanco y comodines se toman como literales mientras las sustituciones y comandos se siguen realizando texto Comilla fuerte Todo el texto incluido se toma como literal Sustitucion de comandos Editar La sustitucion de comandos permite que la salida de un comando pueda ser usada como los argumentos de otro comando Significa toma la salida de un comando analiza las palabras y pegalas de nuevo en la linea de comando Ejecucion en segundo plano Editar Normalmente cuando C shell inicia un comando espera que el comando termine antes de darle al usuario otro mensaje que indica que puede escribir de nuevo otro comando comando amp Significa ejecuta el comando en segundo plano y muestra el indicador para que puedan escribir un nuevo comando Subshells Editar Una subshell es un copia secundaria separa de shell que hereda su estado actual pero puede hacer cambios p ej en el directorio actual sin afectar a la shell padre comando Significa ejecute el comando en una subshell Estructuras de control Editar La C shell proporciona una estructura de control para condicionales e iteraciones la condicional if declaraciones switch la estructura de interaccion while foreach y repeat condicional if Editar Hay dos formas de condicional la forma larga y la forma corta La forma corta se escribe especificando el condicional y el comando en la misma linea if expresion comando Y la forma larga usando las palabras claves then else y endif escritas en bloques de comandos dentro del condicional if expresion1 then comandos else if expresion2 then comandos else comandos endif Las palabras claves aparecen en la misma linea y csh en vez de anidar las cadenas termina los bloques con solo endif Sentencia switch Editar La sentencia switch compara un cadena de caracteres con una lista de patrones donde cada patron puede contener comodines Si no coincide con ningun patron se toma la accion por defecto default si la hay switch cadena casepatron1 comandos breaksw casepatron2 comandos breaksw default comandos breaksw endsw Bucle while Editar El bucle while evalua una expresion Si es verdadera la shell ejecuta los comandos dentro del cuerpo del while mientras la expresion siga siendo cierta while expression commands end Bucle foreach Editar El bucle foreach toma una lista de valores por lo general un lista de nombres de archivos producidos por un comodin y asigna a la variable del bucle cada uno de los valores y ejecuta los comandos dentro del cuerpo del bucle foreachvariable lista de valores comandos end Instruccion repeat Editar La instruccion repeat repite un comando un numero entero de veces repeat numero comandoVease tambien Editarinterprete de comandos Shell informatica Bourne Shell bash ksh tcsh zshReferencias Editar Harley Hahn Harley Hahn s Guide to Unix and Linux Berkeley Engineering Lab Notes volumen 1 problema 2 octubre 2001 Archivado el 9 de julio de 2010 en Wayback Machine An Introduction to the C shell por Bill Joy Ubuntu Detalles del paquete csh Packages ubuntu com Debian Detalles del paquete csh Packages debian org Ubuntu Detalles del paquete tcsh Packages ubuntu com Debian Detalles del paquete tcsh Packages debian org Ken Greer 3 de octubre de 1983 C shell with command and filename recognition completion net sources Google Groups URL accedida el 29 de diciembre de 2010 tcsh 1 man page tcsh Fixes file in tcsh 17 June 2000 Respuesta Late Bloomers Revisited USENET publicado en comp lang misc por Piercarlo Peter Grandi Dept of CS UCW Aberystwyth UK 17 de diciembre de 1989 Datos Q1064516 Error en la cita Existen etiquetas lt ref gt para un grupo llamado Cuentas Google pero no se encontro la etiqueta lt references group Cuentas Google gt correspondiente Obtenido de https es wikipedia org w index php title C shell amp oldid 141686071, wikipedia, wiki, leyendo, leer, libro, biblioteca,

español

, española, descargar, gratis, descargar gratis, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, imagen, música, canción, película, libro, juego, juegos