Comando csh de Linux

comando csh

En Tipo Unix sistemas operativos, el csh comando lanza el shell C, es un intérprete de comandos con un sintaxis inspirado por el Lenguaje de programación C .

Descripción

csh es un intérprete de lenguaje de comandos con muchas características poderosas, incluido un mecanismo de historial (ver Sustituciones de historia ), instalaciones de control de trabajos (ver Trabajos ), interactivo Nombre del archivo y nombre de usuario finalización (ver Completar nombre de archivo ) y una sintaxis similar a C. Se utiliza tanto como interactivo acceso shell y un procesador de comandos de script de shell.

Si el primer argumento (argumento 0) del shell es un guión (' - '), luego csh se ejecuta como un shell de inicio de sesión. También se puede especificar un shell de inicio de sesión invocando el shell con el -l bandera como el único argumento.

Sintaxis

|_+_| |_+_|

Opciones

-b Esta bandera obliga a rotura 'del procesamiento de opciones, lo que hace que cualquier otro argumento de shell se trate como argumentos que no son de opción. Los argumentos restantes no se interpretarán como opciones de shell. Esto se puede usar para pasar opciones a un script de shell sin confusión o posibles subterfugios. El shell no ejecutará un script set-user-ID sin esta opción.
-c Los comandos se leen desde el único argumento siguiente -c , que debe estar presente. Los argumentos restantes se colocan en argv .
-es El shell sale si cualquier comando invocado termina de forma anormal o da un estado de salida distinto de cero.
-F El shell se iniciará más rápido, porque no buscará ni ejecutará comandos desde el archivo. .cshrc en el directorio de inicio del invocador. Tenga en cuenta que si el Variable ambiental CASA no está configurado, el inicio rápido es el predeterminado.
-I El shell es interactivo y solicita su entrada de nivel superior, incluso si parece no ser una terminal. Las carcasas son interactivas sin esta opción si sus entradas y salidas son terminales.
-l El shell es un shell de inicio de sesión (pero solo si -l es la única bandera especificada).
-metro Leer .cshrc , independientemente de su propietario y grupo. Esta opción es peligrosa y solo debe ser utilizada por superusuario .
-norte Los comandos son analizado , pero no ejecutado. Esto es útil para verificar la sintaxis de los scripts de shell. Cuando se usa de forma interactiva, el caparazón se puede terminar presionando control-D (carácter de fin de archivo), ya que la salida no funcionará.
-s La entrada de comando se toma del entrada estándar .
-t Se lee y ejecuta una sola línea de entrada. Una barra invertida ( ) se puede utilizar para escapar de la nueva línea al final de esta línea y continúe por otra línea.
-V Provoca lo detallado variable para ser configurado incluso antes .cshrc es ejecutado.
-v Hace que se establezca la variable detallada, con el efecto de que la entrada del comando se repita después de la sustitución del historial.
-X Hace que la variable de eco se establezca incluso antes .cshrc es ejecutado.
-x Causa el echo variable que se establecerá, de modo que los comandos se repitan inmediatamente antes de la ejecución.

Después de que se procesan los argumentos de la bandera, si los argumentos permanecen pero ninguno de los -c , -I , -s , o -t Se dieron opciones, el primer argumento se toma como el nombre de un archivo de comandos a ejecutar. El shell abre este archivo y guarda su nombre para una posible resustitución por $0 . Dado que muchos sistemas utilizan las carcasas estándar de la versión 6 o la versión 7, guiones no son compatibles con este shell, el shell ejecutará un shell 'estándar' si el primer carácter de un script no es una marca de almohadilla ( # ); es decir, si el guión no comienza con un comentario. Los argumentos restantes inicializan la variable argv .

Una instancia de csh comienza ejecutando comandos desde el archivo /etc/csh.cshrc y, si se trata de un shell de inicio de sesión, /etc/csh.login . Luego ejecuta comandos desde .cshrc en el directorio de inicio del invocador y, si se trata de un shell de inicio de sesión, el archivo .acceso en el mismo lugar. Es típico de los usuarios de CRT monitores para poner el comando ' stty crt 'en su archivo .login , y también invocar tset allí.

En el caso normal, el shell comenzará a leer comandos desde el terminal, solicitando con % . El procesamiento de argumentos y el uso del shell para procesar archivos que contienen secuencias de comandos se describen a continuación.

El shell realiza repetidamente las siguientes acciones: se lee una línea de entrada de comando y se divide en 'palabras'. Esta secuencia de palabras se coloca en la lista del historial de comandos y se analiza. Finalmente se ejecuta cada comando en la línea actual.

Cuando un shell de inicio de sesión termina, ejecuta comandos desde los archivos .cerrar sesión en el directorio de inicio del usuario y /etc/csh.logout .

Estructura léxica

El shell divide las líneas de entrada en palabras en espacios en blanco y tabulaciones con las siguientes excepciones. Los caracteres & , | , ; , < , > , ( , y ) formar palabras separadas. Si se dobla en && , || , << , o >> , estos pares forman palabras simples. Estos metacaracteres del analizador pueden formar parte de otras palabras, o evitar su significado especial, precediéndolos con una barra invertida ( ). Una nueva línea precedida por una es equivalente a un espacio en blanco.

Cadenas encerradas en pares coincidentes de citas, ' , ' , o ' , forman partes de una palabra; Los metacaracteres de estas cadenas, incluidos los espacios en blanco y las tabulaciones, no forman palabras separadas. Estas citas tienen una semántica que se describirá más adelante. Dentro de pares de ' o ' caracteres, una nueva línea precedida por un da un verdadero carácter de nueva línea.

Cuando la entrada del shell no es una terminal, el carácter # introduce un comentario que continúa hasta el final de la línea de entrada. Este significado especial se evita cuando está precedido por y en citas usando ' , ' , y ' .

Comandos

Un comando simple es una secuencia de palabras, la primera de las cuales especifica el comando que se ejecutará. Un comando simple o una secuencia de comandos simples separados por | los personajes forman una tubería. La salida de cada comando en una canalización está conectada a la entrada del siguiente. Las secuencias de tuberías pueden estar separadas por ; , y luego se ejecutan secuencialmente. Se puede ejecutar una secuencia de tuberías sin esperar inmediatamente a que termine siguiéndola con un & .

Cualquiera de los anteriores se puede colocar en ( ) para formar un comando simple (que puede ser un componente de una tubería, por ejemplo). También es posible separar tuberías con || o && mostrando, como en el lenguaje C, que el segundo debe ejecutarse solo si el primero falla o tiene éxito, respectivamente. Ver Expresiones .

Trabajos

El shell asocia un trabajo con cada canalización. Mantiene una tabla de trabajos actuales, impresos por el comando de trabajos, y les asigna números enteros pequeños. Cuando un trabajo se inicia de forma asincrónica con & , el caparazón imprime una línea que se parece a:

|_+_|

mostrando que el trabajo que se inició de forma asincrónica era el número de trabajo 1 y tenía un proceso (de nivel superior), cuyo ID de proceso era 1234 .

Si está ejecutando un trabajo y desea hacer otra cosa, puede presionar ^ Z (control-Z), que envía un SIGSTOP señal al trabajo actual. Entonces, el shell normalmente mostrará que el trabajo se ha 'Detenido' e imprimirá otro mensaje. A continuación, puede manipular el estado de este trabajo, poniéndolo en segundo plano con el bg comando, o ejecutar algunos otros comandos y eventualmente traer el trabajo de nuevo al primer plano con el comando fg. A ^ Z entra en vigor inmediatamente y es como una interrupción en el sentido de que la salida pendiente y la entrada no leída se descartan cuando se escribe. Hay otra clave especial ^Y que no genera un SIGSTOP señal hasta que un programa intente leerlo. Esta solicitud se puede escribir con anticipación cuando haya preparado algunos comandos para un trabajo que desee detener después de haberlos leído.

Un trabajo que se está ejecutando en segundo plano se detendrá si intenta leer desde el terminal. Los trabajos en segundo plano normalmente pueden producir resultados, pero esto se puede desactivar dando el comando stty tostop . Si configura esto tty , los trabajos en segundo plano se detendrán cuando intenten producir una salida como lo hacen cuando intentan leer la entrada.

Hay varias formas de hacer referencia a los trabajos en el shell. El personaje % introduce un nombre de trabajo. Si desea hacer referencia al trabajo número 1, puede nombrarlo como %1 . El simple hecho de nombrar un trabajo lo pone en primer plano; entonces, %1 es sinónimo de fg% 1 , devolviendo el trabajo número 1 al primer plano. Del mismo modo, diciendo %1 & reanuda el trabajo número 1 en segundo plano. Los trabajos también se pueden nombrar mediante prefijos de la cadena introducida para iniciarlos, si estos prefijos no son ambiguos; por lo tanto %ex normalmente reiniciaría un trabajo ex suspendido, si solo hubiera un trabajo suspendido cuyo nombre comenzara con la cadena 'ex'. También es posible decir %? cuerda , que especifica un trabajo cuyo texto contiene cuerda , si solo hay uno de esos trabajos.

El caparazón mantiene una noción de los trabajos actuales y anteriores. En la salida sobre trabajos, el trabajo actual se marca con un + y el trabajo anterior con un - . La abreviatura %+ se refiere al trabajo actual y %- se refiere al trabajo anterior. Para una estrecha analogía con la sintaxis del mecanismo histórico (que se describe a continuación), %% también es sinónimo del trabajo actual.

El mecanismo de control del trabajo requiere que el stty Se establecerá la opción nueva. Es un artefacto de una nueva implementación del controlador tty que permite la generación de caracteres de interrupción desde el teclado para indicarle a los trabajos que se detengan. Ver stty para obtener detalles sobre las opciones de configuración en el nuevo controlador tty.

Informe de estado

El shell aprende inmediatamente cada vez que un proceso cambia de estado. Normalmente le informa cada vez que un trabajo se bloquea para que no sea posible seguir avanzando, pero solo justo antes de que imprima un mensaje. Esto se hace para que no interfiera con su trabajo. Sin embargo, si establece la notificación de variable de shell, el shell le notificará inmediatamente de los cambios de estado en los trabajos en segundo plano. También hay un comando de shell notificar que marca un solo proceso para que sus cambios de estado sean reportados inmediatamente. Por defecto notificar marca el proceso actual; decir notificar después de iniciar un trabajo en segundo plano para marcarlo.

Cuando intente salir del shell mientras los trabajos están detenidos, se le advertirá que 'Ha detenido trabajos'. Puede utilizar el trabajos comando para ver cuáles son. Si intenta salir de nuevo inmediatamente, el shell no le advertirá por segunda vez y se cancelarán los trabajos suspendidos.

Completar nombre de archivo

Cuando la función de finalización de nombre de archivo está habilitada estableciendo la variable de shell filec (ver colocar ), csh Completará de forma interactiva los nombres de archivo y los nombres de usuario a partir de prefijos únicos cuando se ingresen desde el terminal seguido del carácter de escape (la tecla de escape, o control-[ ). Por ejemplo, si el directorio actual se parece a

|_+_|

y la entrada es

|_+_|

csh completará el prefijo ' ch 'al único nombre de archivo coincidente' caosnet ', cambiando la línea de entrada a

|_+_|

Sin embargo, dado

|_+_|

csh solo expandirá la entrada a

|_+_|

y sonará la campana de la terminal para indicar que la expansión está incompleta, ya que hay dos nombres de archivo que coinciden con el prefijo D .

Si un nombre de archivo parcial va seguido del carácter de fin de archivo (generalmente control-D ), luego, en lugar de completar el nombre, csh enumerará todos los nombres de archivo que coincidan con el prefijo. Por ejemplo, la entrada

|_+_|

hace que todos los archivos que comienzan con D Encontrarse dentro de la lista:

|_+_|

mientras que la línea de entrada permanece sin cambios.

El mismo sistema de escape y final de archivo también se puede usar para expandir nombres de usuario parciales, si la palabra que se debe completar (o listar) comienza con el carácter de tilde ( ~ ). Por ejemplo, escribiendo

|_+_|

puede producir la expansión

|_+_|

El uso de la campana del terminal para señalar errores o coincidencias múltiples se puede inhibir configurando la variable no bip .

Normalmente, todos los archivos del directorio en particular son candidatos para completar el nombre. Los archivos con ciertos sufijos se pueden excluir de la consideración estableciendo la variable fignore a la lista de sufijos que se ignorarán. Por tanto, si fignore lo establece el comando

|_+_|

luego escribiendo

|_+_|

resultaría en la finalización de

|_+_|

ignorando los archivos ' xmpl.o ' y ' xmpl.out '. Sin embargo, si la única terminación posible requiere no ignorar estos sufijos, entonces no se ignoran. Además, fignore no afecta la lista de nombres de archivos por control-D . Todos los archivos se enumeran independientemente de sus sufijos.

Sustituciones de historia

Sustituciones de historia coloque palabras de la entrada de comando anterior como partes de nuevos comandos, lo que facilita la repetición de comandos, la repetición de argumentos de un comando anterior en el comando actual o la corrección de errores ortográficos en el comando anterior con poco tecleo y un alto grado de confianza. Las sustituciones de historia comienzan con el personaje. ! y pueden comenzar en cualquier parte del flujo de entrada (siempre que no se aniden). Esto ! puede ir precedido de un para prevenir su significado especial; por conveniencia, un ! El carácter se pasa sin cambios cuando va seguido de un espacio en blanco, tabulación, nueva línea, = o ( . Las sustituciones del historial también ocurren cuando una línea de entrada comienza con ^ . Esta abreviatura especial se describe a continuación. Cualquier línea de entrada que contenga la sustitución del historial se repite en el terminal antes de que se ejecute, ya que se habría escrito sin la sustitución del historial.

Los comandos ingresados ​​desde el terminal que constan de una o más palabras se guardan en la lista del historial. Las sustituciones del historial reintroducen secuencias de palabras de estos comandos guardados en el flujo de entrada. El tamaño de la lista del historial está controlado por el historia variable; el comando anterior siempre se conserva, independientemente del valor de la historia variable. Los comandos se numeran secuencialmente desde 1 .

Considere la siguiente salida de la historia mando:

|_+_|

Los comandos se muestran con sus números de evento. Por lo general, no es necesario utilizar números de evento, pero el número de evento actual se puede hacer parte del mensaje colocando un ! en la cadena de solicitud.

Con el evento actual 13 podemos referirnos a eventos anteriores por número de evento !11 , relativamente como en !-2 (refiriéndose al mismo evento), por un prefijo de una palabra de comando como en !D para evento 12 o ! wri para evento 9 , o por una cadena contenida en una palabra en el comando como en !?¿pequeño? también refiriéndose al evento 9 . Estos formularios, sin más cambios, reintroducen las palabras de los eventos especificados, cada una separada por un solo espacio en blanco. Como caso especial, !! se refiere al comando anterior; por lo tanto !! solo es un rehacer.

Para seleccionar palabras de un evento, podemos seguir la especificación del evento mediante un : y un designador para las palabras deseadas. Las palabras de una línea de entrada se numeran desde 0 , la primera palabra (generalmente de comando) es 0 , siendo la segunda palabra (primer argumento) 1 , etc. Los designadores de palabras básicos son:

0 primera palabra (comando)
norte norte th argumento
^ primer argumento; es decir, '1'
$ último argumento
% palabra que coincide con (inmediatamente anterior)? s? buscar
x - y rango de palabras
- y abrevia ' 0- y
* abrevia ' ^-$ ', O nada si solo 1 palabra en el evento
x * abrevia ' x -$
x - como ' x * 'Pero omitiendo la palabra' $

La : separar la especificación del evento del designador de palabra se puede omitir si el selector de argumento comienza con un ^ , $ , * , - , o % . Después del designador de palabra opcional, se puede colocar una secuencia de modificadores, cada uno precedido por un : . Se definen los siguientes modificadores:

h Elimina un componente de nombre de ruta final, dejando el encabezado.
r Elimine un componente '.xxx' final, dejando el nombre raíz.
es Quite todo excepto la extensión '.xxx'.
s/ l / r / Sustituir l por r .
t Elimine todos los componentes de la ruta de acceso principales, dejando la cola.
& Repite la sustitución anterior.
gramo Aplique el cambio una vez en cada palabra, anteponiendo lo anterior; huevo&'.
a Aplique el cambio tantas veces como sea posible en una sola palabra, anteponiendo lo anterior. Se puede utilizar junto con 'g' para aplicar una sustitución a nivel mundial.
pag Imprima la nueva línea de comando pero no la ejecute.
q Cite las palabras sustituidas, evitando más sustituciones.
x Como ' q ', Pero se rompen en palabras en espacios en blanco, tabulaciones y nuevas líneas.

A menos que esté precedido por un gramo el cambio se aplica solo a la primera palabra modificable. Con sustituciones, es un error que ninguna palabra sea aplicable.

El lado izquierdo de las sustituciones no es expresiones regulares en el sentido de los editores, sino cadenas. Cualquier carácter puede usarse como delimitador en lugar de / ; a cita el delimitador en el l y r instrumentos de cuerda. El personaje & en el lado derecho se reemplaza por el texto de la izquierda. A también citas & . Un nulo l ( // ) utiliza la cadena anterior de una l o de una cadena de escaneo contextual s en !?s? . El delimitador final en la sustitución puede omitirse si sigue inmediatamente una nueva línea, al igual que el final ? en un escaneo contextual.

Se puede dar una referencia histórica sin una especificación de evento; p.ej., !$ . Aquí, la referencia es al comando anterior a menos que se haya producido una referencia de historial anterior en la misma línea, en cuyo caso este formulario repite la referencia anterior. Por lo tanto ' !? foo? ^! $ 'da el primer y último argumento de la coincidencia de comandos' ? foo? '.

Se produce una abreviatura especial de una referencia histórica cuando el primer carácter que no está en blanco de una línea de entrada es un ^ . Esto es equivalente a ' !: s ^ 'proporcionando una forma abreviada conveniente de sustituciones en el texto de la línea anterior. Por lo tanto ^ lb ^ lib corrige la ortografía de ' lib 'en el comando anterior. Finalmente, una sustitución de historia puede estar rodeada de { y } si es necesario para aislarlo de los personajes que siguen. Por lo tanto, después de ls -ld ~ paul podríamos hacer !{la que hacer ls -ld ~paula , tiempo !la buscaría un comando que comience con ' la '.

Citas con 'y'

La cita de cadenas por ' y ' se puede utilizar para prevenir todas o algunas de las sustituciones restantes. Cadenas encerradas en ' se les impide cualquier interpretación posterior. Cadenas encerradas en ' puede ampliarse como se describe a continuación.

En ambos casos, el texto resultante se convierte en (todo o parte de) una sola palabra; solo en un caso especial (ver Sustitución de comando , abajo) hace un ' la cadena entre comillas produce partes de más de una palabra; ' las cadenas entre comillas nunca lo hacen.

Alias substitution

El shell mantiene una lista de alias que se pueden establecer, mostrar y modificar mediante los comandos alias y unalias. Después de escanear una línea de comando, se analiza en comandos distintos y se verifica la primera palabra de cada comando, de izquierda a derecha, para ver si tiene un alias. Si es así, entonces el texto que es el alias de ese comando se vuelve a leer con el mecanismo de historial disponible como si ese comando fuera la línea de entrada anterior. Las palabras resultantes reemplazan la lista de comandos y argumentos. Si no se hace referencia a la lista del historial, la lista de argumentos no se modifica.

Por tanto, si el alias de ' ls ' es ' ls -l ', El comando ls / usr se mapearía a ls -l / usr , la lista de argumentos aquí no está alterada. Del mismo modo, si el alias de ' buscar ' estaba ' grep! ^ / etc / passwd 'luego la factura de búsqueda se asignaría a grep bill / etc / passwd .

Si se encuentra un alias, se realiza la transformación de palabras del texto de entrada y el proceso de creación de alias comienza de nuevo en la línea de entrada reformada. Se evita el bucle si la primera palabra del nuevo texto es la misma que la anterior marcándola para evitar más alias. Se detectan otros bucles y provocan un error.

Tenga en cuenta que el mecanismo permite que los alias introduzcan la 'metasintaxis' del analizador. Por lo tanto, podemos alias print 'pr ! * | lpr ' para hacer un comando que pr Son sus argumentos para la impresora de línea.

Sustitución variable

El shell mantiene un conjunto de variables, cada una de las cuales tiene como valor una lista de cero o más palabras. Algunas de estas variables las establece el shell o las hace referencia a ellas. Por ejemplo, el argv La variable contiene la lista de argumentos del shell, y las palabras del valor de esta variable se denominan de formas especiales.

Los valores de las variables se pueden mostrar y cambiar usando los comandos de armado y desarmado. De las variables a las que hace referencia el shell, algunas son conmutadores; al caparazón no le importa cuál sea su valor, solo si están configurados o no. Por ejemplo, el verboso La variable es un conmutador que hace que se repita la entrada del comando. La configuración de esta variable resulta de la -v opción de línea de comandos.

Otras operaciones tratan las variables numéricamente. La @ El comando permite realizar cálculos numéricos y asignar el resultado a una variable. Sin embargo, los valores de las variables siempre se representan como cadenas (cero o más). A los efectos de las operaciones numéricas, el nulo cuerda se considera cero, y la segunda y las palabras adicionales de valores de varias palabras se ignoran.

Después de que la línea de entrada tiene un alias y se analiza, y antes de que se ejecute cada comando, se realiza la sustitución de variables, tecleada por $ caracteres. Esta expansión se puede prevenir precediendo al $ con un excepto entre comillas dobles ( ' ), donde siempre se produce la sustitución, y entre comillas simples ( ' ), donde nunca ocurre. Cadenas entre comillas invertidas ( ' ' ) se interpretan más tarde (ver Sustitución de comando , a continuación), entonces $ la sustitución no ocurre allí hasta más tarde, si es que ocurre. A $ se pasa sin cambios si va seguido de un espacio en blanco, tabulación o final de línea.

Las redirecciones de entrada / salida se reconocen antes de la expansión variable y se expanden de forma variable por separado. De lo contrario, el nombre del comando y la lista completa de argumentos se expanden juntos. Por lo tanto, es posible que la primera palabra (comando) (hasta este punto) genere más de una palabra, la primera de las cuales se convierte en el nombre del comando y el resto en argumentos.

A menos que esté incluido en ' o dado el :q modificador, los resultados de la sustitución de variables pueden eventualmente ser sustituidos por comando y nombre de archivo. Dentro ' , una variable cuyo valor consta de varias palabras se expande a (una parte de) una sola palabra, con las palabras del valor de la variable separadas por espacios en blanco. Cuando el :q El modificador se aplica a una sustitución, la variable se expandirá a varias palabras con cada palabra separada por un espacio en blanco y entre comillas para evitar la sustitución posterior de un comando o nombre de archivo.

Se proporcionan las siguientes metasecuencias para introducir valores de variable en la entrada del shell. Salvo que se indique lo contrario, es un error hacer referencia a una variable que no está establecida.

$ nombre

${ nombre }
Se reemplazan por las palabras del valor de la variable. nombre , cada uno separado por un espacio en blanco. Los tirantes aíslan nombre de los siguientes personajes que de otro modo serían parte de él. Las variables de shell tienen nombres que constan de hasta 20 letras y dígitos que comienzan con una letra. El carácter de subrayado se considera una letra. Si nombre no es una variable de shell, pero se establece en el entorno, entonces ese valor se devuelve (pero : modificadores y otras formas que se dan a continuación no están disponibles aquí).
$ nombre [ selector ]

${ nombre [ selector ]}
Puede usarse para seleccionar solo algunas de las palabras del valor de nombre . La selector está sujeto a $ sustitución y puede consistir en un solo número o dos números separados por un - . La primera palabra del valor de una variable está numerada. 1 . Si se omite el primer número de un rango, el valor predeterminado es 1 . Si se omite el último número de un rango, el valor predeterminado es $ # nombre . La selector * selecciona todas las palabras. No es un error que un rango esté vacío si el segundo argumento se omite o está dentro del rango.
$# nombre

${# nombre }
Da el número de palabras de la variable. Esto es útil para su uso posterior en un ' $ argv [ selector ] '.
$0 Sustituye el nombre del archivo desde el que se lee la entrada del comando. Se produce un error si no se conoce el nombre.
$ número

${ número }
Equivalente a ' $ argv [ número ] '.
$* Equivalente a ' $ argv [*] '.

Los modificadores :es , : h , : t , : r , :q , y :x puede aplicarse a las sustituciones anteriores como puede : gh , : gt , y : gr . Si frenillos { } aparecen en el formulario de comando, entonces los modificadores deben aparecer entre llaves. La implementación actual permite solo una : modificador en cada $ expansión.

Las siguientes sustituciones no se pueden modificar con : modificadores.

$? nombre

${? nombre }
Sustituye la cadena ' 1 'si se establece el nombre,' 0 ' si no es.
$?0 Sustitutos 1 si se conoce el nombre del archivo de entrada actual, 0 si no es.
$$ Sustituya el número de proceso (decimal) del shell (padre). NO utilice este mecanismo para generar nombres de archivos temporales; ver mktemp en lugar de.
$! Sustituya el número de proceso (decimal) del último proceso en segundo plano iniciado por este shell.
$< Sustituye una línea de la entrada estándar, sin más interpretación. Se puede usar para leer desde el teclado en un script de shell.

Sustitución de nombre de archivo y comando

Las sustituciones restantes, sustitución de comandos y nombres de archivo, se aplican de forma selectiva a los argumentos de los comandos integrados. Aquí, 'selectivamente' significa que las porciones de expresiones que no se evalúan no están sujetas a estas expansiones. Para los comandos que no son internos al shell, el nombre del comando se sustituye por separado de la lista de argumentos. Esto ocurre muy tarde, después de que se realiza la redirección de entrada-salida, y en un elemento secundario del shell principal.

Sustitución de mando

Sustitución de mando se muestra mediante un comando encerrado en ' . La salida de dicho comando normalmente se divide en palabras separadas en espacios en blanco, tabulaciones y nuevas líneas, y las palabras nulas se descartan; este texto luego reemplaza la cadena original. Entre comillas dobles ( ' ), solo las nuevas líneas fuerzan nuevas palabras; se conservan los espacios en blanco y las pestañas.

En cualquier caso, la única nueva línea final no obliga a una nueva palabra. Tenga en cuenta que, por lo tanto, es posible que una sustitución de comando produzca solo una parte de una palabra, incluso si el comando genera una línea completa.

Sustitución de nombre de archivo

Si una palabra contiene alguno de los caracteres * , ? , [ , o { , o comienza con el personaje ~ , entonces esa palabra es candidata para la sustitución del nombre de archivo, también conocida como 'globbing'. Luego, esta palabra se considera un patrón y se reemplaza con una lista ordenada alfabéticamente de nombres de archivos que coinciden con el patrón. En una lista de palabras que especifican la sustitución del nombre de archivo, es un error que ningún patrón coincida con un nombre de archivo existente, pero no es necesario que cada patrón coincida. Solo los metacaracteres * , ? , y [ implican coincidencia de patrones, los caracteres ~ y { siendo más parecido a las abreviaturas.

En nombres de archivo coincidentes, el personaje . al comienzo de un nombre de archivo o inmediatamente después de un / , así como el personaje / debe coincidir explícitamente. El personaje * coincide con cualquier cadena de caracteres, incluida la cadena nula. El personaje ? coincide con cualquier carácter.

La secuencia ' [ ... ] 'coincide con cualquiera de los caracteres incluidos. Dentro ' [ ... ] ', un par de caracteres separados por - coincide con cualquier carácter léxico entre los dos (inclusive). Dentro ' [ ... ] ', el nombre de una clase de caracteres entre [: y :] representa la lista de todos los personajes que pertenecen a esa clase. Clases de personajes compatibles:

  • sacando
  • alfa
  • blanco
  • cntrl
  • dígito
  • grafico
  • más bajo
  • impresión
  • espacio
  • superior
  • punto
  • xdigit

Estos coinciden con los caracteres utilizando las macros especificadas en ctype . Una clase de caracteres no se puede utilizar como punto final de un rango.

El personaje ~ al principio de un nombre de archivo se refiere a los directorios de inicio. De pie solo, es decir, ~ , se expande al directorio de inicio del invocador como se refleja en el valor de la variable inicio. Cuando va seguido de un nombre que consta de letras, dígitos y - caracteres, el shell busca un usuario con ese nombre y lo sustituye por su directorio de inicio; por lo tanto ' ~ ken 'podría expandirse a' / usr / ken ' y ' ~ ken / chmach ' a ' / usr / ken / chmach '. Si el personaje ~ va seguido de un carácter que no sea una letra o / , o no aparece al principio de una palabra, no se modifica.

The metanotation ' a B C D e 'es una abreviatura de' abe ace ade '. Se conserva el orden de izquierda a derecha, y los resultados de las coincidencias se ordenan por separado en un nivel bajo para conservar este orden. Esta construcción puede ser anidado . Por lo tanto, ' ~ fuente / s1 / {oldls, ls} .c 'se expande a' /usr/source/s1/oldls.c /usr/source/s1/ls.c 'sin posibilidad de error si el directorio de inicio de' fuente ' es ' / usr / source '. Similar ' ../{memo,*box} 'podría expandirse a' ../memo ../box ../mbox '. Tenga en cuenta que ' memorándum 'no fue ordenado con los resultados del partido a' *caja '. Como caso especial { , } , y {} pasan sin ser molestados.

De entrada y salida

La entrada estándar y la salida estándar de un comando se pueden redirigir con la siguiente sintaxis:

< nombre Abrir documento nombre (que es la primera variable, comando y nombre de archivo expandidos) como entrada estándar.
<< palabra Lea la entrada del shell hasta una línea que sea idéntica a palabra . La palabra no está sujeto a la sustitución de variable, comando o nombre de archivo, y cada línea de entrada se compara con palabra antes de que se realicen sustituciones en la línea de entrada. A menos que una cotización , ' , ' o ' aparece en palabra , la sustitución de variables y comandos se realiza en las líneas intermedias, lo que permite citar $ , y ' . Los comandos que se sustituyen tienen todos los espacios en blanco, tabulaciones y nuevas líneas conservadas, excepto la última línea nueva que se elimina. El texto resultante se coloca en un archivo temporal anónimo que se le da al comando como su entrada estándar.
> nombre

>! nombre

>>& nombre

>>&! nombre
El archivo nombre se utiliza como salida estándar. Si el archivo no existe, se crea; si el archivo existe, está truncado; su contenido anterior se pierde.

Si la variable no clobber está configurado, entonces el archivo no debe existir o ser un archivo especial de caracteres (por ejemplo, un terminal o / dev / null ) o se produce un error. Esto ayuda a prevenir la destrucción accidental de archivos. Aquí el ! Se pueden utilizar formularios para suprimir esta verificación.

Las formas que involucran & enruta la salida de error estándar al archivo especificado, así como la salida estándar. El nombre se expande de la misma forma que < los nombres de archivo de entrada son.
>> nombre

>>& nombre

>>! nombre

>>&! nombre
Usa archivo nombre como salida estándar; como > pero coloca la salida al final del archivo. Si la variable no clobber está configurado, entonces es un error que el archivo no exista a menos que uno de los ! se da formas. De lo contrario, similar a > .

Un comando recibe el entorno en el que se invocó el shell modificado por los parámetros de entrada y salida y la presencia del comando en una canalización. Por lo tanto, a diferencia de algunos shells anteriores, los comandos que se ejecutan desde un archivo de comandos del shell no tienen acceso al texto de los comandos por defecto; en su lugar, reciben la entrada estándar original del shell. La << Se debe utilizar un mecanismo para presentar datos en línea. Esto permite que los scripts de comandos de shell funcionen como componentes de tuberías y permite que el shell bloquee la lectura de su entrada. Tenga en cuenta que la entrada estándar predeterminada para una ejecución de comando separada no se modifica para ser el archivo vacío / dev / null ; en cambio, la entrada estándar permanece como la entrada estándar original del shell. Si se trata de una terminal y si el proceso intenta leer desde la terminal, entonces el proceso se bloqueará y se notificará al usuario (ver Trabajos sobre).

La salida de error estándar puede dirigirse a través de una tubería con la salida estándar. Usa el formulario |& en lugar de solo | .

Expresiones

Varios de los comandos integrados (que se describirán más adelante) toman expresiones, en las que los operadores son similares a los de C, con la misma precedencia, pero con la agrupación opuesta: de derecha a izquierda. Estas expresiones aparecen en el @ , Salida , Si , y tiempo comandos. Están disponibles los siguientes operadores:

  • ||
  • &&
  • |
  • & uarr;
  • &
  • ==
  • !=
  • =~
  • !~
  • <=
  • >=
  • <
  • >
  • <<
  • >>
  • +
  • -
  • *
  • /
  • %
  • !
  • ~
  • (
  • )

Aquí la precedencia aumenta hacia abajo en la lista, con == != =~ y !~ , <= >= < y > , << y >> , + y - , * / y % estar, en grupos, al mismo nivel. La == != =~ y !~ los operadores comparan sus argumentos como cadenas; todos los demás operan con números. Los operadores =~ y !~ son como != y == excepto que el lado derecho es un patrón (que contiene, por ejemplo, * 's, ? 's, e instancias de' [...] ') con el que se compara el operando izquierdo. Esto reduce la necesidad de utilizar el cambiar declaración en scripts de shell cuando todo lo que realmente se necesita es la coincidencia de patrones.

Cadenas que comienzan con 0 se consideran números octales. Los argumentos nulos o faltantes se consideran 0 . Los resultados de todas las expresiones son cadenas, que representan números decimales. Es importante señalar que no pueden aparecer dos componentes de una expresión en la misma palabra; excepto cuando son adyacentes a componentes de expresiones que son sintácticamente significativas para el analizador ( & , | , < , > , ( , y ) ), deben estar rodeadas de espacios.

También están disponibles en expresiones como operandos primitivos las ejecuciones de comandos encerradas en { y } y presentar consultas del formulario -l nombre dónde l es uno de:

r acceso de lectura
en acceso de escritura
x ejecutar el acceso
es existencia
o propiedad
con tamaño cero
F archivo simple
D directorio

El nombre especificado es comando y nombre de archivo expandido y luego probado para ver si tiene la relación especificada con el usuario real. Si el archivo no existe o es inaccesible, todas las consultas regresan falso , es decir., 0 . Las ejecuciones de comandos tienen éxito, devolviendo verdadero, es decir, 1 , si el comando sale con estado 0 , de lo contrario fallan, devolviendo falso, es decir, 0 . Si se requiere información de estado más detallada, el comando debe ejecutarse fuera de una expresión y examinarse el estado de la variable.

Flujo de control

El shell contiene varios comandos que se pueden utilizar para regular el flujo de control en archivos de comandos (scripts de shell) y (de forma limitada pero útil) desde la entrada del terminal. Todos estos comandos operan forzando al shell a releer u omitir su entrada y, debido a la implementación, restringen la ubicación de algunos de los comandos.

La para cada , cambiar , y tiempo declaraciones, así como las si-entonces-si no forma de la Si La declaración requiere que las palabras clave principales aparezcan en un solo comando simple en una línea de entrada como se muestra a continuación.

Si la entrada del shell no se puede buscar, el shell almacena en búfer la entrada cada vez que se lee un bucle y realiza búsquedas en este búfer interno para lograr la relectura implícita en el bucle. En la medida en que esto lo permita, al revés ir tendrá éxito en entradas no buscables.

Comandos integrados

Los comandos integrados se ejecutan dentro del shell. Si un comando incorporado ocurre como cualquier componente de una canalización excepto el último, entonces se ejecuta en un sub-shell.

alias

alias nombre

alias nombre lista de palabras
El primer formulario imprime todos los alias. El segundo formulario imprime el alias para nombre . La forma final asigna la lista de palabras especificada como el alias de nombre ; lista de palabras se sustituye el comando y el nombre de archivo. La nombre no se permite ser 'alias' o 'unalias'.
alloc Muestra la cantidad de dinámica memoria adquirido, desglosado en memoria usada y libre. Con un argumento muestra el número de bloques libres y usados ​​en cada categoría de tamaño. Las categorías comienzan en tamaño 8 y doble en cada paso. La salida de este comando puede variar según el tipo de sistema, ya que los sistemas distintos del VAX pueden usar un asignador de memoria diferente.
bg

bg% trabajo ...
Pone el actual o especificado trabajos en un segundo plano, continuando con ellos si se detuvieron.
rotura Hace que la ejecución se reanude después del final del encerramiento más cercano para cada o tiempo . Se ejecutan los comandos restantes en la línea actual. Por lo tanto, es posible realizar saltos de varios niveles escribiéndolos todos en una línea.
rompew Causa un rotura a partir de una cambiar , reanudando después de la terminaw .
caso etiqueta: A etiqueta en un cambiar declaración como se explica a continuación.
cd

cd nombre

chdir

chdir nombre
Cambiar el caparazón directorio de trabajo al nombre del directorio. Si no se proporciona ningún argumento, cambie al directorio de inicio del usuario. Si el nombre no se encuentra como subdirectorio del directorio actual (y no comienza con / , ./ o ../ ), luego cada componente de la variable cdpath se comprueba para ver si tiene un nombre de subdirectorio. Finalmente, si todo lo demás falla, pero el nombre es una variable de shell cuyo valor comienza con / , luego se intenta ver si es un directorio.
Seguir Continuar con la ejecución del cerramiento más cercano tiempo o para cada . Se ejecutan el resto de los comandos de la línea actual.
defecto: Etiqueta el caso predeterminado en una declaración de cambio. El valor predeterminado debe aparecer después de todas las etiquetas de casos.
dirs Imprime la pila de directorios; la parte superior de la pila está a la izquierda, siendo el primer directorio de la pila el directorio actual.
echo lista de palabras

echo -n lista de palabras
Las palabras especificadas se escriben en la salida estándar del shell, separadas por espacios y terminadas con una nueva línea a menos que la -norte se especifica la opción.
demás

final

terminara si

terminaw
Ver la descripción del para cada , Si , cambiar , y tiempo declaraciones debajo.
eval arg ... Imita la evaluación en sh: los argumentos se leen como entrada al shell y los comandos resultantes se ejecutan en el contexto del shell actual. Esto se usa generalmente para ejecutar comandos generados como resultado de la sustitución de comandos o variables, ya que el análisis se produce antes de estas sustituciones. Ver tset en el manual para ver un ejemplo de uso eval .
ejecutivo mando El comando especificado se ejecuta en lugar del shell actual.
Salida

Salida (expr)
El shell sale con el valor de la variable de estado (primer formulario) o con el valor del especificado. expr (segunda forma).
fg

fg% trabajo ...
Trae la corriente o especificada trabajos en primer plano, continuando con ellos si se detuvieron.
para cada nombre ( lista de palabras )
...
final
El nombre de la variable se establece sucesivamente para cada miembro de lista de palabras y la secuencia de comandos entre este comando y la coincidencia final se ejecutan. Ambas cosas para cada y final debe aparecer solo en líneas separadas. El comando incorporado Seguir puede usarse para continuar el ciclo prematuramente y el comando incorporado rotura para terminarlo prematuramente. Cuando se lee este comando desde el terminal, el bucle se lee una vez y se solicita ? antes de que se ejecuten las sentencias del bucle. Si comete un error al escribir un bucle en la terminal, puede borrarlo.
globo lista de palabras Como echo pero no los escapes se reconocen y las palabras están delimitadas por caracteres NUL en la salida. Útil para programas que desean usar el shell para expandir el nombre de archivo una lista de palabras.
ir palabra El especificado palabra es el nombre de archivo y el comando expandidos para producir una cadena de la forma etiqueta . El shell rebobina su entrada tanto como sea posible y busca una línea del formulario ' etiqueta: ', posiblemente precedido de espacios en blanco o pestañas. La ejecución continúa después de la línea especificada.
hashstat Imprima una línea de estadísticas que muestre cuán efectivo es el picadillo mesa ha estado en localizar comandos (y evitar ejecutivos). Un ejecutivo se intenta para cada componente de la ruta donde la función hash indica un posible acierto, y en cada componente que no comienza con un / .
historia

historia norte

historia -h norte

historia -r norte
Muestra la lista de eventos históricos; Si norte se da, solo el norte Se imprimen los eventos más recientes. La -h Esta opción hace que la lista del historial se imprima sin números iniciales. Este formato produce archivos adecuados para el abastecimiento utilizando el -h opción a fuente. La -r La opción invierte el orden de impresión para que sea la más reciente primero en lugar de la más antigua primero.
Si (expr) comando Si la expresión especificada se evalúa como cierto , luego se ejecuta el comando único con argumentos. La sustitución de variables en el comando ocurre temprano, al mismo tiempo que lo hace para el resto de la Si mando. El comando debe ser un comando simple, no una canalización, una lista de comandos o una lista de comandos entre paréntesis. La redirección de entrada / salida ocurre incluso si expr es falso , es decir, cuando el comando no se ejecuta (esto en realidad es un error).
Si (expr) luego
...
si no (expr2) luego
...
demás
...
terminara si
Si el especificado expr es cierto luego los comandos hasta el primero demás se ejecutan; de lo contrario si expr2 es cierto luego los comandos hasta el segundo demás se ejecutan, etc. si no los pares son posibles; sólo uno terminara si es necesario. La demás parte es igualmente opcional. Las palabras demás y terminara si debe aparecer al principio de las líneas de entrada; la Si debe aparecer solo en su línea de entrada o después de una demás .
trabajos

trabajos -l
Enumera los trabajos activos; la -l La opción enumera los ID de proceso además de la información normal.
matar % trabajo

matar [ -s nombre_señal ] pid

matar -sig pid ...

matar -l [ exit_status ]
Envía el SIGTERM (Terminar) señal o la señal especificada a los trabajos o procesos especificados. Las señales se dan por número o por nombre (como se indica en , despojado del prefijo ' SIG '). Los nombres de las señales se enumeran por ' matar -l '; Si una exit_status se especifica, solo se escribirá el nombre de la señal correspondiente. No hay ningún defecto; solo digo ' matar 'no envía una señal al trabajo actual. Si la señal que se envía es SIGTERM (terminar) o SIGHUP (colgar), el trabajo o proceso se enviará un SIGCONT (continuar) señal también.
límite

límite recurso

límite uso máximo de recursos

límite -h

límite -h recurso

límite -h uso máximo de recursos
Limita el consumo por el proceso actual y cada proceso que crea para no exceder individualmente uso máximo en el recurso especificado. Si no uso máximo se da, luego se imprime el límite actual; si no recurso se da, entonces se dan todas las limitaciones. Si el -h se da una bandera, se utilizan los límites estrictos en lugar de los límites actuales. Los límites estrictos imponen un techo a los valores de los límites actuales. Solo el superusuario puede aumentar los límites estrictos, pero un usuario puede reducir o aumentar los límites actuales dentro del rango legal.

Los recursos controlables actualmente incluyen:

cputime : el número máximo de segundos de CPU que utilizará cada proceso.

tamaño del archivo : el archivo individual más grande (en bytes) que se puede crear.

tamaño de datos : el crecimiento máximo de la región de datos + pila a través de sbrk más allá del final del texto del programa.

tamaño de la pila : el tamaño máximo de la región de pila extendida automáticamente.

coredumpsize : el tamaño del más grande volcado de memoria (en bytes ) que se creará.

uso de memoria : el tamaño máximo (en bytes) al que puede crecer el tamaño del conjunto residente (RSS) de un proceso.

memoria bloqueada : El tamaño máximo (en bytes) que un proceso puede bloquear en la memoria usando el mlock función.

maxproc : El número máximo de procesos simultáneos para este ID de usuario.

abrir archivos : El número máximo de archivos abiertos simultáneos para este ID de usuario.

vmemoryuse : el tamaño máximo (en bytes) al que puede crecer el tamaño total de un proceso.

La uso máximo se puede dar como un número (de coma flotante o entero) seguido de un factor de escala. Para todos los límites que no sean cputime la escala predeterminada es a o ' kilobytes ' ( 1024 bytes ); un factor de escala de metro o ' megabytes 'también se puede utilizar. Para cputime la escala predeterminada es ' segundos '; un factor de escala de metro por minutos o h por horas, o un tiempo de la forma ' mm: ss También se pueden utilizar 'dando minutos y segundos.

Tanto para los nombres de recursos como para los factores de escala, son suficientes los prefijos inequívocos de los nombres.
acceso Termine un shell de inicio de sesión, reemplazándolo con una instancia de / usr / bin / login . Ésta es una forma de cerrar la sesión, incluida por compatibilidad con sh .
cerrar sesión Termine un shell de inicio de sesión. Especialmente útil si ignorante de Está establecido.
bonito

bonito + número

bonito mando

bonito + comando numérico
El primer formulario establece la prioridad de programación de este shell en 4 . La segunda forma establece la prioridad a la dada número . Los dos formularios finales ejecutan el comando con prioridad 4 y número respectivamente. Cuanto mayor sea el número, menos UPC el proceso se pone. El superusuario puede especificar una prioridad negativa usando ' buen número ... '. mando siempre se ejecuta en un sub-shell, y las restricciones impuestas a los comandos en simple Si se aplican declaraciones.
nohup

nohup mando
La primera forma se puede utilizar en scripts de shell para hacer que se ignoren los bloqueos durante el resto del script. La segunda forma hace que el comando especificado se ejecute sin tener en cuenta los cuelgues. Todos los procesos separados con & son efectivamente nohup 'ed.
notificar

notificar% trabajo ...
Hace que el shell notifique al usuario de forma asincrónica cuando el estado del actual o especificado trabajos cambio; normalmente, la notificación se presenta antes de un mensaje. Esto es automático si la variable de shell notificar Está establecido.
onintr

onintr -

onintr etiqueta
Controla la acción del shell en las interrupciones. El primer formulario restaura la acción predeterminada del shell en las interrupciones, que es terminar los scripts del shell o volver al nivel de entrada de comandos de la terminal. La segunda forma onintr - hace que se ignoren todas las interrupciones. La forma final hace que el shell ejecute un ir etiqueta cuando se recibe una interrupción o un proceso hijo termina porque fue interrumpido.

En cualquier caso, si el shell se ejecuta de forma separada y se ignoran las interrupciones, todas las formas de onintr no tienen significado y las interrupciones continúan siendo ignoradas por el shell y todos los comandos invocados. Finalmente, onintr Las declaraciones se ignoran en los archivos de inicio del sistema donde las interrupciones están deshabilitadas ( /etc/csh.cshrc , /etc/csh.login ).
popd

popd + n
Abre la pila de directorios y regresa al nuevo directorio superior. Con un argumento ' + n 'descarta el norte la entrada en la pila. Los miembros de la pila de directorios están numerados desde arriba comenzando en 0 .
empujado

empujado nombre

empujado + n
Sin argumentos empujado intercambia los dos elementos superiores del directorio apilar . Dado un nombre argumento, empujado cambios en el nuevo directorio (ala cd ) y empuja el antiguo directorio de trabajo actual (como en pwd ) en la pila de directorios. Con un argumento numérico, empujado gira el norte El argumento de la pila de directorios es el elemento superior y cambia a él. Los miembros de la pila de directorios están numerados desde arriba comenzando en 0 .
refrito Provoca la tabla hash interna del contenido de los directorios en el camino variable a volver a calcular. Esto es necesario si se agregan nuevos comandos a los directorios en la ruta mientras está conectado. Esto solo debería ser necesario si agrega comandos a uno de sus directorios o si un programador de sistemas cambia el contenido de un directorio del sistema.
repetir comando de conteo El especificado mando , que está sujeto a las mismas restricciones que el comando en la instrucción de una línea if anterior, se ejecuta contar veces. E / S las redirecciones ocurren exactamente una vez, incluso si el recuento es 0 .
colocar

colocar nombre

colocar nombre = palabra

colocar nombre [ índice ] = palabra

colocar nombre = ( lista de palabras )

La primera forma del comando muestra el valor de todas las variables de shell. Las variables que tienen un valor diferente a una sola palabra se imprimen como una lista de palabras entre paréntesis. La segunda forma establece el nombre de la cadena nula. La tercera forma establece el nombre de una sola palabra. La cuarta forma establece el índice el componente del nombre a la palabra; este componente ya debe existir. La forma final establece el nombre en la lista de palabras en lista de palabras . El valor es siempre comando y nombre de archivo expandido.

Estos argumentos pueden repetirse para establecer varios valores en un solo comando de conjunto. Sin embargo, tenga en cuenta que la expansión de variables ocurre para todos los argumentos antes de que ocurra cualquier configuración.

setenv

setenv nombre

setenv valor del nombre
El primer formulario enumera todas las variables de entorno actuales. Es equivalente a printenv. La última forma establece el valor del nombre de la variable de entorno en valor, una sola cadena. La segunda forma establece nombre a una cadena vacía. Las variables de entorno más utilizadas USUARIO , TÉRMINO , y CAMINO se importan y exportan automáticamente desde el csh variables usuario , término , y camino ; no hay necesidad de usar setenv para éstos.
cambiar

cambiar variable
Los miembros de argv se desplazan hacia la izquierda, descartando argv [1] . Es un error para argv que no se establezca o que tenga menos de una palabra como valor. El segundo formulario realiza la misma función en el especificado variable .
fuente nombre

fuente -h nombre
El shell lee los comandos de nombre . fuente los comandos pueden estar anidados; si están anidados demasiado profundamente, el shell puede quedarse sin descriptores de archivo. Un error en una fuente en cualquier nivel finaliza todos los comandos de la fuente anidados. Normalmente se ingresa durante fuente los comandos no se colocan en la lista del historial; la -h La opción hace que los comandos se coloquen en la lista del historial sin ser ejecutados.
detener

detener % trabajo ...
Detiene la corriente o la especificada trabajos que se están ejecutando en segundo plano.
suspender Hace que el proyectil se detenga en seco, como si se le hubiera enviado un detener señal con ^ Z . Esto se usa con mayor frecuencia para detener los proyectiles iniciados por su .
cambiar (cuerda)
caso str1:
...
rompew
...
defecto:
...
rompew
terminaw
Cada caso la etiqueta se compara sucesivamente con el especificado cuerda , que es el primer comando y el nombre de archivo expandidos. Los metacaracteres del archivo * , ? y ' [...] 'puede ser utilizado en el caso etiquetas, que son variables expandidas. Si ninguna de las etiquetas coincide antes del ' defecto 'se encuentra la etiqueta, entonces la ejecución comienza después de la defecto etiqueta. Cada caso etiqueta y la defecto La etiqueta debe aparecer al principio de una línea. El comando rompew hace que la ejecución continúe después de la terminaw . De lo contrario, el control puede fallar caso etiquetas y la etiqueta predeterminada como en C.Si ninguna etiqueta coincide y no hay ninguna etiqueta predeterminada, la ejecución continúa después de la terminaw .
hora

hora mando
Sin argumento, se imprime un resumen del tiempo utilizado por este shell y sus hijos. Si se dan argumentos, el comando simple especificado se cronometra y un resumen de tiempo como se describe en el hora se imprime la variable. Si es necesario, se crea un caparazón adicional para imprimir el hora estadística cuando se completa el comando.
umask

umask valor
Se muestra la máscara de creación de archivos (primer formulario) o se establece en el valor especificado. valor (segunda forma). La máscara se da en octal. Los valores comunes para la máscara son 002 dando todo el acceso al grupo y leer y ejecutar el acceso a otros o 022 dando todo el acceso excepto el acceso de escritura para los usuarios del grupo u otros.
unalias patrón Se descartan todos los alias cuyos nombres coincidan con el patrón especificado. Por lo tanto, todos los alias son eliminados por unalias * . No es un error que nada quede sin alias.
unhash El uso de la tabla hash interna para acelerar la ubicación de los programas ejecutados está deshabilitado.
ilimitado

ilimitado recurso

ilimitado -h

ilimitado -h recurso
Elimina la limitación de recurso . Si no recurso se especifica, luego se eliminan todas las limitaciones de recursos. Si -h se da, se eliminan los límites duros correspondientes. Solo el superusuario puede hacer esto.
desarmado patrón Se eliminan todas las variables cuyos nombres coinciden con el patrón especificado. Por lo tanto, todas las variables son eliminadas por desarmado * ; esto tiene efectos secundarios notablemente desagradables. No es un error que no se pueda desarmar nada.
unsetenv patrón Elimina todas las variables cuyos nombres coinciden con el patrón especificado del entorno. Ver también el setenv comando anterior y printenv.
Espere Espere todos los trabajos en segundo plano. Si el shell es interactivo, una interrupción puede interrumpir la espera. Después de la interrupción, el shell imprime los nombres y números de trabajo de todos los trabajos que se sabe que están pendientes.
cual mando Muestra el comando resuelto que será ejecutado por el shell.
tiempo (expr)

...

final
Mientras que la expresión especificada se evalúa como distinta de cero, los comandos entre tiempo y el emparejamiento final son evaluados. rotura y Seguir puede usarse para terminar o continuar el ciclo prematuramente. La tiempo y final debe aparecer solo en sus líneas de entrada. La indicación ocurre aquí la primera vez a través del bucle como para el para cada declaración si la entrada es una terminal.
% trabajo Trae lo especificado trabajo en primer plano.
% trabajo & Continúa el trabajo especificado en segundo plano.

@

@ nombre = expr

@ nombre [ índice ] = expr

El primer formulario imprime los valores de todas las variables de shell. La segunda forma establece el especificado nombre al valor de expr . Si la expresión contiene < , > , & o | entonces al menos esta parte de la expresión debe colocarse dentro ( ) . La tercera forma asigna el valor de expr hacia índice el argumento de nombre . Tanto el nombre como su índice El componente ya debe existir.

Los operadores *= , += , etc. están disponibles como en C. El espacio que separa el nombre del operador de asignación es opcional. Sin embargo, los espacios son obligatorios para separar los componentes de expr , que de otro modo serían palabras sueltas.

Sufijo especial ++ y -- los operadores incrementan y reducen el nombre respectivamente; es decir., ' @ i ++ '.

Variables de entorno y predefinidas

Las siguientes variables tienen un significado especial para el shell. De estos, argv , cwd , casa , camino , inmediato , cáscara y estado siempre son establecidos por el shell. Excepto por cwd y estado , esta configuración ocurre solo en la inicialización; estas variables no se modificarán a menos que el usuario lo haga explícitamente.

El shell copia la variable de entorno. USUARIO en la variable usuario , TÉRMINO dentro término , y CASA dentro casa , y los copia de nuevo en el entorno cada vez que se restablecen las variables normales del shell. La variable de entorno CAMINO también se maneja; no es necesario preocuparse por su configuración más que en el archivo .cshrc ya que los procesos csh inferiores importarán la definición de camino del entorno y vuelva a exportarlo si lo cambia.

argv Establecido en los argumentos del shell, es a partir de esta variable que se sustituyen los parámetros posicionales; es decir., ' $1 'es reemplazado por' $ argv [1] ', etc.
cdpath Da una lista de directorios alternativos buscados para encontrar subdirectorios en chdir comandos.
cwd El nombre de ruta completo del directorio actual.
echo Establecer cuando el -x Se proporciona la opción de línea de comandos. Hace que cada comando y sus argumentos se repitan justo antes de ejecutarse. Para los comandos no incorporados, todas las expansiones ocurren antes de hacer eco. Los comandos integrados se repiten antes de la sustitución de comandos y nombres de archivo, ya que estas sustituciones se realizan de forma selectiva.
filec Habilite la finalización del nombre de archivo
histchars Se le puede dar un valor de cadena para cambiar los caracteres utilizados en la sustitución del historial. El primer carácter de su valor se utiliza como carácter de sustitución del historial, reemplazando el carácter predeterminado. ! . El segundo carácter de su valor reemplaza al carácter ^ en sustituciones rápidas.
histfile Se puede configurar con el nombre de la ruta donde se guardará / restaurará el historial.
historia Se le puede dar un valor numérico para controlar el tamaño de la lista del historial. Cualquier comando al que se haya hecho referencia en esta cantidad de eventos no se descartará. Los valores de historial demasiado grandes pueden hacer que el shell se quede sin memoria. El último comando ejecutado siempre se guarda en la lista del historial.
casa El directorio de inicio del invocador, inicializado desde el entorno. La expansión del nombre de archivo de ' ~ 'se refiere a esta variable.
ignorante de Si se establece, el shell ignora el final del archivo de los dispositivos de entrada que son terminales. Esto evita que los proyectiles mueran accidentalmente por control-D s.
correo Los archivos donde el shell busca correo. Esta verificación se realiza después de la finalización de cada comando que dará como resultado un mensaje, si ha transcurrido un intervalo específico. El caparazón dice 'Tienes correo nuevo'. si el archivo existe con un tiempo de acceso no mayor que su tiempo de modificación.

Si la primera palabra del valor de correo es numérica, especifica un intervalo de verificación de correo diferente, en segundos, que el predeterminado, que es de 10 minutos.

Si se especifican varios archivos de correo, el shell dice 'Nuevo correo en nombre' cuando hay correo en el nombre del archivo.
no clobber Como se describe en la sección sobre Entrada / salida, se imponen restricciones en la redirección de salida para garantizar que los archivos no se destruyan accidentalmente y que >> las redirecciones se refieren a archivos existentes.
noglob Si se establece, se inhibe la expansión del nombre de archivo. Esta inhibición es más útil en scripts de shell que no se ocupan de nombres de archivos, o después de que se ha obtenido una lista de nombres de archivos y no es deseable realizar más expansiones.
nonomatch Si se establece, no es un error que una expansión de nombre de archivo no coincida con ningún archivo existente; en su lugar, se devuelve el patrón primitivo. Sigue siendo un error que el patrón primitivo esté mal formado; es decir., ' echo [ 'todavía da un error.
notificar Si se establece, el shell notifica de forma asincrónica las finalizaciones de trabajos; el valor predeterminado es presentar los trabajos completados justo antes de imprimir un mensaje.
camino Cada palabra del camino variable especifica un directorio en el que se deben buscar los comandos para su ejecución. Una palabra nula especifica el directorio actual. Si no hay una variable de ruta, solo se ejecutarán los nombres de ruta completos. La ruta de búsqueda habitual es ' . ', ' / soy ', ' / usr / bin ', ' / sbin ' y ' / usr / sbin ', pero esto puede variar de un sistema a otro. Para el superusuario, la ruta de búsqueda predeterminada es ' / soy ', ' / usr / bin ', ' / sbin ', y ' / usr / sbin '. Un caparazón al que no se le da ni el -c ni el -t La opción normalmente codificará el contenido de los directorios en la variable de ruta después de leer .cshrc , y cada vez que se restablece la variable de ruta. Si se agregan nuevos comandos a estos directorios mientras el shell está activo, es posible que sea necesario hacer un refrito o es posible que no se encuentren los comandos.
inmediato La cadena que se imprime antes de cada comando se lee desde una entrada de terminal interactiva. Si un ! aparece en la cadena será reemplazado por el número de evento actual a menos que un precedente es dado. El valor predeterminado es ' % ', o ' # 'para el superusuario.
savehist Se le da un valor numérico para controlar el número de entradas de la lista del historial que se guardan en ~ / .historia cuando el usuario cierra la sesión. Se guardará cualquier comando al que se haya hecho referencia en esta cantidad de eventos. Durante el inicio de las fuentes de shell ~ / .historia en la lista del historial, lo que permite guardar el historial a través de inicios de sesión. Valores demasiado grandes de savehist ralentizará la cáscara durante el arranque. Si savehist se acaba de configurar, el shell utilizará el valor de historia .
cáscara El archivo en el que reside el shell. Esta variable se utiliza en shells bifurcados para interpretar archivos que tienen configurados los bits de ejecución, pero que el sistema no puede ejecutar. Consulte la descripción de la ejecución de comandos no integrados a continuación. Inicializado en el inicio (dependiente del sistema) del shell.
estado El estado devuelto por el último comando. Si terminó anormalmente, entonces 0200 se agrega al estado. Los comandos integrados que fallan devuelven el estado de salida 1 , todos los demás comandos incorporados establecen el estado en 0 .
hora Controla la sincronización automática de los comandos. Si se establece, cualquier comando que tome más de estos segundos de CPU generará una línea que indicará el usuario, el sistema y los tiempos reales, y un porcentaje de utilización que es la relación entre los tiempos del usuario más el tiempo del sistema y el tiempo real que se imprimirá cuando finalice.
verboso Establecido por el -v opción de línea de comandos, hace que las palabras de cada comando se impriman después de la sustitución del historial.

Ejecución de comandos no incorporados

Cuando se descubre que un comando a ejecutar no es un comando incorporado, el shell intenta ejecutar el comando a través de ejecutivo . Cada palabra en la ruta de la variable nombra un directorio desde el cual el shell intentará ejecutar el comando. Si no se le da ni un -c ni un -t opción, el shell hará un hash de los nombres en estos directorios en una tabla interna para que solo intente una ejecutivo en un directorio si existe la posibilidad de que el comando resida allí. Este atajo acelera enormemente la ubicación del comando cuando hay muchos directorios presentes en la ruta de búsqueda. Si este mecanismo se ha desactivado (a través de unhash ), o si el caparazón se le dio un -c o -t argumento, y en cualquier caso para cada componente de directorio de la ruta que no comience con un / , el shell se concatena con el nombre de comando dado para formar un nombre de ruta de un archivo que luego intenta ejecutar.

Los comandos entre paréntesis siempre se ejecutan en un sub-shell. Por lo tanto

|_+_|

imprime el directorio de inicio; dejándote donde estabas (imprimiendo esto después del directorio de inicio), mientras

|_+_|

te deja en el directorio de inicio. Los comandos entre paréntesis se utilizan con mayor frecuencia para prevenir chdir de afectar el shell actual.

Si el archivo tiene permisos de ejecución pero no es un binario ejecutable para el sistema, entonces se asume que es un archivo que contiene comandos de shell y se genera un nuevo shell para leerlo.

Si hay un alias para shell, las palabras del alias se antepondrán a la lista de argumentos para formar el comando de shell. La primera palabra del alias debe ser el nombre de ruta completo del shell (por ejemplo, ' $ caparazón '). Tenga en cuenta que este es un caso especial, tardío, de sustitución de alias, y solo permite añadir palabras a la lista de argumentos sin cambios.

Manejo de señales

El caparazón normalmente ignora SIGQUIT señales . Trabajos que se ejecutan separados (ya sea por & o el bg o %... & comandos) son inmunes a las señales generadas desde el teclado, incluidos los cuelgues. Otras señales tienen los valores que el shell heredó de su padre. El manejo del shell de las interrupciones y las señales de terminación en los scripts del shell se puede controlar mediante onintr . Los shells de inicio de sesión capturan SIGTERM (terminar) señal; de lo contrario, esta señal se transmite a los hijos desde el estado en el padre del shell. No se permiten interrupciones cuando un shell de inicio de sesión está leyendo el archivo .cerrar sesión .

Limitaciones

Longitudes de palabras: las palabras no pueden tener más de 1024 caracteres. El número de argumentos de un comando que implica la expansión del nombre de archivo está limitado a 1/6 del número de caracteres permitidos en una lista de argumentos. Las sustituciones de comandos no pueden sustituir más caracteres de los permitidos en una lista de argumentos. Para detectar bucles, el shell restringe el número de sustituciones de alias en una sola línea a 20.

Archivos

~ / .cshrc leído al comienzo de la ejecución por cada shell
~ / .login leído por el shell de inicio de sesión, después .cshrc al iniciar sesión
~ / .logout leído por el shell de inicio de sesión, al cerrar la sesión
/ bin / sh shell estándar, para scripts de shell que no comiencen con un #
/tmp/sh.* archivo temporal para <<
/ etc / passwd fuente de directorios de inicio para ' ~ nombre '

Ejemplos de

|_+_|

Ejecuta y ejecuta C Shell (si está presente).

Consulte la guía .cshrc para ver un ejemplo de .cshrc archivo e información adicional sobre este archivo.

intento - El intérprete de comandos de shell de Bourne Again.
antes de Cristo - Una calculadora.
echo - Texto de salida.
acceso - Iniciar una sesión en un sistema.
ls - Lista el contenido de un directorio o directorios.
más - Muestra el texto de una pantalla a la vez.
ps - Informar el estado de un proceso o procesos.
sh - El intérprete de comandos del shell Bourne.