Comando sh de Linux

comando sh

En Tipo Unix sistemas operativos, sh es el nombre de comando del shell Bourne, el lenguaje de comando estándar Interprete de Unix Y muchos Tipo Unix sistemas operativos , incluyendo Linux .

Sintaxis

|_+_|

Descripción e historia

sh es un intérprete de lenguaje de comandos que ejecuta comandos leídos de un línea de comando cuerda , la entrada estándar , o un especificado expediente .

El caparazón de Bourne fue desarrollado en 1977 por Stephen Bourne en AT&T 's Laboratorios Bell en 1977. Era el shell predeterminado de Unix Versión 7. La mayoría de los sistemas similares a Unix contienen el archivo / bin / sh que es el caparazón de Bourne, o un enlace simbólico (o enlace fijo) a un shell compatible.

El Bourne Shell se desarrolló originalmente como un reemplazo del shell Thompson, cuyo Archivo ejecutable también fue nombrado sh . Aunque se usa como comando interactivo Interprete , su propósito original era funcionar como un guion idioma.

Las características del Bourne Shell incluyen:

  • Los scripts se pueden invocar como comandos usando su Nombre del archivo .
  • El caparazón se puede utilizar de forma interactiva o no interactiva.
  • Los comandos se pueden ejecutar de forma sincrónica o asincrónica.
  • El shell admite la redirección de entrada y salida y las canalizaciones.
  • Un conjunto robusto de comandos integrados.
  • Construcciones de control de flujo, facilidades de cotización y funciones .
  • Sin tipo variables .
  • Ámbitos de variables locales y globales.
  • Los guiones se pueden interpretar, es decir, no tienen que ser compilado para ser ejecutado.
  • Sustitución de comandos utilizando comillas inversas, por ejemplo: ' mando ' .
  • 'Aquí documentos': el uso de << para incrustar un bloque de texto de entrada dentro de una secuencia de comandos.
  • ' por / hacer / hecho 'bucles, en particular el uso de $* para recorrer los argumentos.
  • ' caso / en / esac 'mecanismo de selección, principalmente destinado a ayudar a la argumentación analizando .
  • Apoyo para Variables de entorno utilizando parámetros de palabras clave y variables exportables.
  • Disposiciones sólidas para controlar la entrada y la salida y en sus instalaciones de comparación de expresiones.

El uso de Bourne Shell ha sido reemplazado en gran medida por Bourne-Again Shell ( intento ), que admite funciones interactivas más fáciles de usar, como el control de trabajos y un historial de comandos .

Comandos

A comando simple es una secuencia de palabras que no están en blanco separadas por espacios en blanco (un espacio en blanco es una tabulación o un espacio). La primera palabra especifica el nombre del comando que se ejecutará. Excepto como se especifica a continuación, las palabras restantes se pasan como argumentos al comando invocado. El nombre del comando se pasa como argumento 0 (ver ejecutivo ). El valor de un comando simple es su estado de salida si termina normalmente o el estado 200 + si termina anormalmente (consulte nuestro descripción general de las señales del sistema operativo para obtener una lista de valores de estado).

A tubería es una secuencia de uno o más comandos separados por una barra vertical (' | '). La salida estándar de cada comando, pero el último está conectado por una tubería al entrada estándar del siguiente comando. Cada comando se ejecuta como un proceso independiente; el shell espera a que termine el último comando. El valor de una canalización es el estado de salida de su último comando.

A lista es una secuencia de una o más canalizaciones separadas por ' ; ', ' & ', ' && ' o ' || 'y opcionalmente terminado por' ; ' o ' & '. ' ; ' y ' & 'tienen igual precedencia que es menor que la de' && ' y ' || ', ' && ' y ' || 'también tienen igual precedencia. Un punto y coma provoca una ejecución secuencial; un ampersand hace que la canalización anterior se ejecute sin esperar a que finalice. El símbolo ' && ' (' || ') hace que la siguiente lista se ejecute solo si la canalización anterior devuelve un valor cero (distinto de cero). Newlines puede aparecer en una lista, en lugar de punto y coma, para delimitar comandos.

A ' # 'al principio de una palabra comienza un comentario y hace que se ignore el resto de la línea.

A mando es un comando simple o uno de los siguientes. El valor devuelto por un comando es el del último comando simple ejecutado en el comando:

por nombre [ en palabra ...] hacer lista hecho En bucle . Cada vez que un por se ejecuta el comando, nombre está configurado para el siguiente palabra en el por lista de palabras. Si ' en palabra ... 'se omite, entonces' en '[correo electrónico protegido]' ' se supone. La ejecución finaliza cuando no hay más palabras en la lista.
caso palabra en [ patrón [ | patrón ] ... ) lista ;; ] ... esac A caso comando ejecuta el lista asociado con el primero patrón eso combina palabra . La forma de los patrones es la misma que se usa para la generación de nombres de archivos.
Si lista luego lista [ elif lista luego lista ] ... [ demás lista ] ser La lista siguiente Si se ejecuta, y si devuelve cero, el lista siguiente luego es ejecutado. De lo contrario, el lista siguiente elif ('else if') se ejecuta y si su valor es cero, el lista siguiente luego es ejecutado. Si falla el demás lista es ejecutado.
tiempo lista [ hacer lista ] hecho A tiempo comando ejecuta repetidamente el tiempo lista , y si su valor es cero, ejecuta el hacer lista ; de lo contrario, el bucle termina. El valor devuelto por un tiempo comando es el del último comando ejecutado en el hacer lista . Hasta que puede usarse en lugar de tiempo para negar la prueba de terminación de bucle.
( lista ) Ejecutar lista en una subcapa.
{ lista ; } La lista es ejecutado.
nombre () { lista ; } Define la función de shell nombre . Cada vez nombre se reconoce como un comando, lista se ejecuta, con los parámetros posicionales $1 , $2 ... establecido en los argumentos del comando. Una vez que la función regresa, se restauran los parámetros posicionales anteriores.

Las siguientes palabras solo se reconocen como la primera palabra de un comando y cuando no están entre comillas:

  • Si
  • luego
  • demás
  • elif
  • ser
  • caso
  • en
  • esac
  • por
  • tiempo
  • Hasta que
  • hacer
  • hecho
  • {
  • }

Sustitución de comando

La salida estándar de un comando encerrado en un par de acentos graves ( '' ) se puede utilizar como parte o en su totalidad de una palabra; Se eliminan las nuevas líneas finales. Por ejemplo, si el script ejecutable echotest.sh contenía el comando:

|_+_|

Luego, ejecutar el script mostraría la salida combinada de echo y nombre de base :

|_+_|

Sustitución de parámetros

El personaje $ se utiliza para introducir parámetros sustituibles. A los parámetros posicionales se les pueden asignar valores mediante colocar . Las variables se pueden establecer en la forma ' nombre = valor [ nombre = valor ] ...'.

${ parámetro } A parámetro es una secuencia de letras, dígitos o guiones bajos (un nombre), un dígito o cualquiera de los caracteres * @ # ? - $ ! . Se sustituye el valor, si lo hay, del parámetro. Las llaves son necesarias solo cuando el parámetro va seguido de una letra, un dígito o un guión bajo que no debe interpretarse como parte de su nombre. Si parámetro es un dígito, entonces es un parámetro posicional. Si el parámetro es * o @ luego todos los parámetros posicionales, comenzando con $1 , se sustituyen separados por espacios. $0 se establece desde el argumento cero cuando se invoca el shell.
${ parámetro :- palabra } Si parámetro está establecido y no está vacío, luego sustituya su valor; de lo contrario sustituir palabra .
${ parámetro := palabra } Si parámetro no está configurado y no está vacío, luego configúrelo en palabra ; luego se sustituye el valor del parámetro. Los parámetros de posición no se pueden asignar de esta manera.
${ parámetro :? palabra } Si parámetro está establecido y no está vacío, luego sustituya su valor; de lo contrario, imprimir palabra y salir del caparazón. Si palabra se omite, se imprime un mensaje estándar.
${ parámetro :+ palabra } Si parámetro está configurado y no vacío, luego sustitúyalo palabra ; de lo contrario no sustituyas nada.

Si el : se omite, las sustituciones solo se ejecutan si el parámetro está configurado, incluso si está vacío.

En lo anterior, palabra no se evalúa a menos que se utilice como cadena sustituida. Así por ejemplo, ' echo $ {d-'pwd '}' solo ejecutará pwd Si D está desarmado.

El shell establece automáticamente los siguientes parámetros:

# El número de parámetros posicionales, en decimal.
- Opciones proporcionadas al shell en la invocación o por colocar .
? El valor devuelto por el último comando ejecutado, en decimal.
$ El número de proceso de este shell.
! El número de proceso del último comando en segundo plano invocado.

El shell utiliza los siguientes parámetros:

CDPATH La ruta de búsqueda del cd mando.
CASA El argumento predeterminado (directorio de inicio) para el cd mando.
OPTARG El valor del último argumento de opción procesado por el getopts comando especial.
optando El índice de la última opción procesada por el getopts comando especial.
CAMINO La ruta de búsqueda de comandos (ver Ejecución ).
CORREO Si esta variable se establece en el nombre de un archivo de correo, el shell informa al usuario de la llegada del correo en el archivo especificado.
CORREO Si se establece esta variable, se interpreta como un valor en segundos para esperar entre las comprobaciones de correo nuevo. El valor predeterminado es 600 (10 minutos). Si el valor es cero, se comprueba el correo antes de cada solicitud.
MAILPATH Una lista de archivos separados por dos puntos que se comprueban en busca de correo nuevo. MAIL se ignora si se establece esta variable.
PS1 Cadena de solicitud principal, de forma predeterminada '$ ' .
PS2 Cadena de solicitud secundaria, de forma predeterminada '> ' .
IFS Separadores de campo internos, normalmente espacio, tabulación y nueva línea.
LANG , LC_ALL Variables locales.
LC_CTYPE Afecta la asignación de bytes a caracteres para la generación de nombres de archivos, para la interpretación de ' ', y para manipular $ IFS .
SHACCT Si esta variable se establece en el entorno inicial que se pasa al shell y apunta a un archivo en el que el usuario puede escribir, se escriben estadísticas de contabilidad.
SE ACABÓ EL TIEMPO El shell existe cuando se solicita una entrada si no se ingresa ningún comando por más del valor dado en segundos. Un valor de cero significa que no hay tiempo de espera y es el valor predeterminado.

Interpretación en blanco

Después de la sustitución de parámetros y comandos, los resultados de la sustitución se escanean en busca de caracteres separadores de campo internos (los que se encuentran en $ IFS ) y dividirlos en distintos argumentos donde se encuentren dichos caracteres. Argumentos nulos explícitos ( '' o '' ) se conservan. Se eliminan los argumentos nulos implícitos (los que resultan de parámetros que no tienen valores).

Generación de nombre de archivo

Después de la sustitución, cada palabra de comando se escanea en busca de los caracteres * ', ' ? ' y ' [ '. Si aparece uno de estos caracteres, la palabra se considera un patrón. La palabra se reemplaza con nombres de archivo ordenados alfabéticamente que coinciden con el patrón. Si no se encuentra ningún nombre de archivo que coincida con el patrón, la palabra no se modifica. El personaje . al comienzo de un nombre de archivo o inmediatamente después de un ' / ', y el personaje' / ', debe coincidir explícitamente.

* Coincide con cualquier cadena, incluida la cadena nula.
? Coincide con cualquier carácter individual.
[ ... ] Coincide con cualquiera de los caracteres incluidos. Un par de caracteres separados por - coincide con cualquier carácter léxico entre el par.
[! ... ] Coincide con cualquier carácter excepto los incluidos.

Cotización

Los siguientes caracteres tienen un significado especial para el shell y provocan la terminación de una palabra a menos que se citen:

  • ;
  • &
  • (
  • )
  • |
  • ^
  • <
  • >
  • nueva línea
  • espacio
  • pestaña

Se puede citar un carácter precediéndolo con un ' '. ' \ nueva línea 'se ignora. Todos los caracteres encerrados entre un par de comillas ( '' ), excepto una comilla simple, se cotizan. Dentro de comillas dobles ( '' ) se produce la sustitución de parámetros y comandos y ' 'cita a los personajes , ' ' y $ .

' $* ' es equivalente a ' $1 $2 ...', mientras que ' [correo electrónico protegido] ' es equivalente a ' '$1' '$2' ...'.

Incitación

Cuando se usa de forma interactiva, el shell solicita el valor de $ PS1 antes de leer un comando. Si en algún momento se escribe una nueva línea y se necesitan más datos para completar un comando, entonces el indicador secundario ( $ PS2 ) se emite.

Entrada y salida

Antes de que se ejecute un comando, su entrada y salida pueden ser redirigidas usando una notación especial interpretada por el shell. Lo siguiente puede aparecer en cualquier lugar de un comando simple o puede preceder o seguir a un comando y no se pasa al comando invocado. La sustitución ocurre antes palabra o dígito se utiliza:

< palabra Usar archivo palabra como entrada estándar (descriptor de archivo 0).
> palabra Usar archivo palabra como salida estándar (descriptor de archivo 1). Si el archivo no existe, se crea; de lo contrario, se trunca a una longitud cero.
>> palabra Usar archivo palabra como salida estándar. Si el archivo existe, la salida se agrega (buscando al final); de lo contrario, se crea el archivo.
<< [ - ] palabra La entrada del shell se lee hasta una línea igual que palabra o al final del archivo. El documento resultante se convierte en la entrada estándar. Si cualquier personaje de palabra se cita, entonces no se da interpretación a los caracteres del documento; de lo contrario, se produce la sustitución de parámetros y comandos, nueva línea es ignorado, y se usa para citar a los personajes $ ' y el primer personaje de palabra . El opcional ' - 'hace que el carácter de tabulador principal se elimine del documento resultante; palabra entonces también puede ir precedido de un tabulador.
<& dígito La entrada estándar está duplicada del descriptor de archivo dígito . De manera similar para la salida estándar usando > .
<&- La entrada estándar está cerrada. De manera similar para la salida estándar usando > .

Si uno de los anteriores está precedido por un dígito, el descriptor de archivo creado es el especificado por el dígito (en lugar del 0 o 1 predeterminado). Por ejemplo, '... 2>&1 'crea descriptor de archivo 2 ser un duplicado del descriptor de archivo 1 . Si un comando va seguido de & entonces la entrada estándar predeterminada para el comando es el archivo vacío ( / dev / null ), a menos que el control de trabajos esté habilitado. De lo contrario, el entorno para la ejecución de un comando contiene los descriptores de archivo del shell de invocación modificados por las especificaciones de entrada y salida.

Ambiente

La ambiente es una lista de pares nombre-valor que se pasa a un programa ejecutado de la misma forma que una lista de argumentos normal; ver ejecutivo y alrededor de . El caparazón interactúa con el medio ambiente de varias formas. En la invocación, el shell escanea el entorno y crea un parámetro para cada nombre encontrado, dándole el valor correspondiente. Los comandos ejecutados heredan el mismo entorno. Si el usuario modifica los valores de estos parámetros o crea otros nuevos, ninguno de ellos afecta el entorno a menos que se utilice el comando de exportación para vincular el parámetro del shell al entorno. El entorno visto por cualquier comando ejecutado está compuesto por cualquier par nombre-valor no modificado originalmente heredado por el shell, más cualquier modificación o adición, todo lo cual debe anotarse en los comandos de exportación.

El entorno para cualquier comando simple puede aumentarse prefijándolo con una o más asignaciones de parámetros. Por tanto, estas dos líneas son equivalentes:

|_+_| |_+_|

Señales

La INTERRUPCIÓN y SALIDA señales para un comando invocado se ignoran si el comando va seguido de & (a menos que el control de trabajos esté habilitado); de lo contrario, las señales tienen los valores heredados por el shell de su padre. Ver también trampa .

Ejecución

Cada vez que se ejecuta un comando, se llevan a cabo las sustituciones anteriores. Luego, el shell primero mira si se definió una función con el nombre del comando; si es así, se elige para su ejecución. De lo contrario, a excepción de los 'comandos especiales' que se enumeran a continuación, se crea un nuevo proceso y se intenta ejecutar el comando a través de un ejecutivo .

El parámetro de shell $ RUTA define la búsqueda camino para el directorio que contiene el comando. Cada nombre de directorio alternativo está separado por dos puntos (' : '). La ruta predeterminada es ' / usr / sbin: / bin: / usr / bin: '. Si el nombre del comando contiene un / entonces no se utiliza la ruta de búsqueda. De lo contrario, se busca un archivo ejecutable en cada directorio de la ruta. Si el archivo se ha ejecutado permiso pero no es un fuera archivo, se supone que es un archivo que contiene comandos de shell. Se genera una subcapa (es decir, un proceso separado) para leerlo. Un comando entre paréntesis también se ejecuta en un subshell.

Comandos especiales

: Sin efecto; el comando no hace nada.
. expediente Leer y ejecutar comandos desde un archivo y regresar. La ruta de búsqueda $ RUTA se utiliza para encontrar el directorio que contiene expediente .
rotura [ norte ] Salir del recinto por o tiempo bucle, si lo hay. Si norte se especifica luego se rompe norte niveles.
Seguir [ norte ] Reanudar la siguiente iteración del adjunto por o tiempo círculo. Si norte se especifica y luego se reanuda en el norte th bucle envolvente.
cd [ enfadado ] Cambiar el directorio actual a enfadado . El parámetro de shell $ HOME es el argumento predeterminado. Si no se encuentra un directorio arg y el parámetro $ CDPATH contiene una lista de directorios separados por dos puntos, cada uno de estos directorios se usa como prefijo de arg en el orden dado, y el directorio actual se establece en el primero que se encuentre.

Si no se encuentra un directorio adecuado, un shell interactivo puede intentar corregir errores ortográficos y proponer un nombre de directorio alternativo:

sh [-acefhikmnprstuvx] [  arg  ] ...
echo 'The name of this script is 'basename $0'.'
Si la respuesta es ' y 'o cualquier otra cosa que' norte ', el shell establecerá el directorio actual en el propuesto.
echo [ enfadado ...] Cada enfadado se imprime en salida estándar; luego, se imprime una nueva línea. Las siguientes secuencias de escape se reconocen en enfadado :

 Imprime un carácter de retroceso.
c Hace que el comando regrese inmediatamente. Los siguientes caracteres se ignoran y no se imprime la nueva línea final.
F Imprime un carácter de avance de formulario.
orte Imprime un carácter de nueva línea.
r Imprime un carácter de retorno de carro.
t Imprime un carácter tabulador.
v Imprime un carácter de tabulador vertical.
\ Imprime un carácter de barra invertida.
nnn Imprime el carácter (byte) con valor octal nnn .

Si / usr / ucb precede / usr / sbin o / usr / bin en la configuración actual del $ RUTA variable y el primer argumento es -norte , la nueva línea de terminación no se imprime y no se reconocen secuencias de escape. Si el $ SYSV3 La variable se establece en el entorno inicial pasado al shell, el -norte El argumento también se interpreta, pero las secuencias de escape se procesan como de costumbre.
eval [ enfadado ...] Los argumentos se leen como entrada al shell y se ejecutan los comandos resultantes.
ejecutivo [ enfadado ...] El comando especificado por los argumentos se ejecuta en lugar de este shell sin crear un nuevo proceso. Pueden aparecer argumentos de entrada / salida y (si no se dan otros argumentos) hacer que se modifique la entrada / salida del shell.
Salida [ norte ] Hace que el shell salga con el estado de salida especificado por norte . Si norte se omite, el estado de salida es el del último comando ejecutado. Un final de archivo también saldrá del shell.
exportar [ nombre ...] Los nombres de pila están marcados para su exportación automática al entorno de los comandos ejecutados posteriormente. Si no se dan argumentos, se imprime una lista de nombres exportables.
getopts optstring variable [ enfadado ...] Recupera opciones y argumentos de opción de enfadado (o los parámetros posicionales) similar a coronado . optstring es una lista de caracteres (bytes); cada carácter representa una letra de opción. Un carácter seguido de ' : 'indica que la opción tiene un argumento. Vocación getopts repetidamente hace que se recupere una opción por llamada. El índice de la opción actual se almacena en la variable optando ; se inicializa para 1 cuando comienza el caparazón. El argumento-opción, si lo hay, se almacena en el OPTARG variable. El carácter de opción se almacena en el variable . Cuando se llega al final de las opciones, getopts devuelve con un valor distinto de cero. Un argumento faltante o una opción ilegal también genera un valor de retorno distinto de cero y se imprime un mensaje de error como error estándar.
picadillo [ nombre ...] La cáscara mantiene un picadillo tabla de las ubicaciones de los comandos externos. Si se dan argumentos de nombre, cada uno se busca y se inserta en la tabla si se encuentra. De lo contrario, se imprime una lista de los comandos que se encuentran actualmente en la tabla.
newgrp [ enfadado ...] Equivalente a ' ejecutivo newgrp enfadado ...'.
pwd Imprime el nombre del presente directorio de trabajo .
leer [ -r ] nombre ... Se lee una línea de la entrada estándar; las palabras sucesivas de la entrada se asignan al nombre de las variables en orden, y las palabras sobrantes a la última variable. El código de retorno es 0 a menos que se encuentre el final del archivo. Normalmente, las barras diagonales inversas escapan al siguiente carácter; esto se inhibe si el -r se da la opción.
solo lectura [ nombre ...] Los nombres de pila están marcados como de solo lectura y los valores de estos nombres no pueden cambiarse por asignaciones posteriores. Si no se dan argumentos, se imprime una lista de todos los nombres de solo lectura.
regreso [ norte ] Regrese de una función de shell al nivel de ejecución anterior. Con el argumento norte , la variable especial $? se establece en el valor dado.
colocar [ --aefhknptuvx [ enfadado ...]]
-- Sin efecto; útil si el primero enfadado empieza con - .
-a Exporte las variables que se modifiquen o creen a partir de ahora.
-es Si no es interactivo, salga inmediatamente si falla un comando.
-F La generación de nombre de archivo está deshabilitada.
-h Cuando se define una función, busque todos los comandos externos que contiene como se describe para picadillo comando especial. Normalmente, estos comandos se buscan cuando se ejecutan.
-a Todos los argumentos de palabras clave se colocan en el entorno de un comando, no solo los que preceden al nombre del comando.
-metro Habilita el control del trabajo (ver más abajo).
-norte Lea los comandos pero no los ejecute.
-pag Hace que el shell sea privilegiado. Un shell privilegiado no ejecuta el sistema y los perfiles de usuario; si un shell no privilegiado (el predeterminado) tiene un usuario efectivo o identificación de grupo diferente a su usuario real o identificación de grupo o si tiene un usuario efectivo o identificación de grupo por debajo de 100, restablece su usuario efectivo o identificación de grupo, respectivamente, a la identificación real correspondiente al inicio.
-t Salga después de leer y ejecutar un comando.
-u Trate las variables no configuradas como un error al sustituirlas.
-v Imprime las líneas de entrada del shell a medida que se leen.
-x Imprime comandos y sus argumentos a medida que se ejecutan.
- Apaga el -x y -v opciones.

Estos indicadores también se pueden utilizar tras la invocación del shell. El conjunto actual de banderas se puede encontrar en $- .

Si + se usa en lugar de - , las banderas dadas están deshabilitadas.

Los argumentos restantes son parámetros posicionales y se asignan, en orden, a $1 , $2 , etc. Si no se dan argumentos, se imprimen los valores de todos los nombres.
cambiar [ norte ] Los parámetros posicionales de $2 ... se renombran $1 ... La norte argumento causa un cambio por el número dado, es decir $ n + 1 se renombra a $1 Etcétera.
veces Imprima los tiempos acumulados del usuario y del sistema para los procesos que se ejecutan desde el shell.
prueba [ expr ] prueba evalúa la expresión expr , y si su valor es verdadero, devuelve el estado de salida cero; de lo contrario, se devuelve un estado de salida distinto de cero. prueba devuelve una salida distinta de cero si no hay argumentos.

Las siguientes primitivas se utilizan para construir expr :

-r expediente Verdadero si el archivo existe y es legible.
-en expediente Verdadero si el archivo existe y se puede escribir.
-u expediente Verdadero si el archivo existe y tiene el bit setuid establecido.
-gramo expediente Verdadero si el archivo existe y tiene el bit setgid establecido.
-a expediente Verdadero si el archivo existe y tiene el bit de pegamento establecido.
-F expediente Verdadero si el archivo existe y es un archivo normal (o cualquier archivo que no sea un directorio si / usr / ucb ocurre temprano en la corriente $ RUTA parámetro).
-D expediente Verdadero si el archivo existe y es un directorio .
-h expediente Verdadero si el archivo existe y es un enlace simbólico .
-L expediente Verdadero si el archivo existe y es un enlace simbólico.
-pag expediente Verdadero si el archivo existe y es una tubería con nombre.
-b expediente Verdadero si el archivo existe y es un dispositivo de bloqueo.
-c expediente Verdadero si el archivo existe y es un dispositivo de caracteres.
-s expediente Verdadero si el archivo existe y tiene un tamaño mayor que cero.
-t [ Marfil ] Verdadero si el archivo abierto cuyo número de descriptor de archivo es Marfil ( 1 por defecto) está asociado con un dispositivo terminal.
-con s1 Verdadero si la longitud de la cuerda s1 es cero.
-norte s1 Verdadero si la longitud de la cadena s1 es distinto de cero.
s1 = s2 Cierto si las cuerdas s1 y s2 son iguales.
s1 != s2 Cierto si las cuerdas s1 y s2 no son iguales.
s1 Cierto si s1 no es la cadena nula.
n1 -eq n2 Verdadero si los enteros n1 y n2 son algebraicamente iguales. Cualquiera de las comparaciones -Nació , -gt , -dar , -lt , o -la puede usarse en lugar de -eq .

Estas primarias se pueden combinar con los siguientes operadores:

! Operador de negación unario.
-a Operador binario AND.
-o Operador OR binario.
( expr ) Paréntesis para agrupar.

-a tiene mayor precedencia que -o . Observe que todos los operadores y banderas son argumentos separados para prueba . Observe también que los paréntesis son significativos como separadores de comandos y deben ser escapado .
trampa [ enfadado ] [ norte | nombre ] ... La enfadado es un comando que debe leerse y ejecutarse cuando el shell recibe señales norte . Tenga en cuenta que enfadado se escanea una vez cuando se coloca la trampa y una vez cuando se toma la trampa. trampa los comandos se ejecutan en orden de número de señal. Si enfadado está ausente, entonces todas las trampas norte se restablecen a sus valores originales. Si enfadado es la cadena nula, entonces el shell y los comandos invocados ignoran esta señal. Si norte es 0 entonces el comando enfadado se ejecuta al salir del shell, de lo contrario al recibir la señal norte como se numera en la señal. Trap sin argumentos imprime una lista de comandos asociados con cada número de señal. Se puede utilizar un nombre simbólico en lugar del norte argumento; está formado por el nombre de la señal en el C idioma menos el SIG prefijo, por ejemplo, TÉRMINO por SIGTERM . SALIDA es lo mismo que un cero (' 0 ') argumento.
tipo nombre ... Para cada nombre , imprime si se ejecutaría como una función de shell, como un comando especial o como un comando externo. En el último caso, también se imprime el nombre completo de la ruta al comando.
ulimit [ - [ HS ][ a | cdfmnstuv ]]

ulimit [ - [ HS ][ c | D | F | metro | norte | s | t | tu | v ]] [ límite ]

Maneja los límites de recursos para el shell y los procesos creados por él, como se describe en getrlimit . Sin un límite argumento, se imprimen los ajustes actuales; de lo contrario, se establece un nuevo límite. Se aceptan las siguientes opciones:

-H Establece un límite estricto. Solo el superusuario puede establecer un límite estricto.
-S Establece un límite suave. Un límite blando no debe exceder el límite estricto.

Si ninguno -H o -S se da, se imprime el límite suave o se establecen ambos límites, respectivamente.
-a Elige todos los límites descritos.
-c El tamaño máximo de un volcado de núcleo en bloques de 512 bytes.
-D El tamaño máximo del segmento de datos en kbytes .
-F El tamaño máximo de un archivo en bloques de 512 bytes. Este es el valor predeterminado si no se selecciona explícitamente ningún límite.
-l El tamaño máximo de la memoria bloqueada en kbytes.
-metro El tamaño máximo del conjunto residente en kbytes.
-norte El número máximo de descriptores de archivos abiertos.
-s El tamaño máximo del segmento de pila en kbytes.
-t El tiempo máximo de procesador en segundos.
-u El número máximo de procesos secundarios.
-v El tamaño máximo del espacio de direcciones en kbytes.
umask [ -S ] [ nnn ] La máscara de creación de archivos de usuario se establece en el valor octal nnn (ver umask ). Modos simbólicos como se describe en chmod también se aceptan. Si nnn se omite, se imprime el valor actual de la máscara. Con el -S opción, la máscara actual se imprime como una cadena simbólica.
desarmado variable ... Desinstala cada uno variable llamado.
Espere [ norte ] Espere el proceso especificado e informe su estado de terminación. Si norte no se da, se produce una espera para todos los procesos secundarios actualmente activos. El código de retorno de este comando es del proceso esperado. Si norte no se refiere a un proceso hijo del shell, Espere regresa inmediatamente con código 0 .

Invocación

Si el primer carácter del argumento cero es - , los comandos se leen desde / etc / profile y $ HOME / .profile , si existe el archivo respectivo. Luego, los comandos se leen como se describe a continuación. El shell interpreta los siguientes indicadores cuando se invoca:

-c cuerda Si el -c la bandera está presente, entonces se leen los comandos cuerda .
-s Si el -s la bandera está presente o si no quedan argumentos, los comandos se leen desde el entrada estándar . La salida del shell se escribe en el descriptor de archivo 2.
-I Si el -I la bandera está presente o si la entrada y salida del shell están conectadas a un terminal (como lo indica la función isatty () ) entonces este shell es interactivo. En este caso el terminar señal SIGTERM se ignora (de modo que ' matar 0 'no mata un shell interactivo) y la señal de interrupción SIGINT es capturado e ignorado (de modo que Espere es interrumpible). En todos los casos SIGQUIT es ignorado por el shell.

Los indicadores y argumentos restantes se describen en el colocar mando.

Control de trabajos

Cuando se invoca un shell interactivo como jsh , el control de trabajos está habilitado. El control de trabajos permite detener y reanudar procesos y cambiar entre trabajos en primer plano y en segundo plano. Un trabajo consta de los comandos de una única canalización. Cada trabajo se coloca en un grupo de procesos separado; un shell de inicio de sesión y todos los trabajos creados por él forman una sesión. Interrumpir, salir y otros caracteres de control del terminal solo afectan al grupo de procesos en primer plano actual. El trabajo en primer plano se puede detener presionando la tecla suspender, generalmente ^ Z ; cualquier trabajo se puede detener enviando el DETENER señalle. Los trabajos se identifican mediante los ID de trabajo de la siguiente forma:

% , %% , o %+ El trabajo actual.
%- El trabajo que anteriormente era el trabajo actual.
? cuerda El único trabajo cuyo nombre contiene cuerda .
% número El trabajo con el número dado.
número El trabajo con ID de grupo de proceso número .
cuerda El único trabajo por el que cuerda es un prefijo de su nombre.

Los siguientes comandos integrados también están disponibles con el control de trabajos:

bg [ Identificación del trabajo ...] Lugares cada uno Identificación del trabajo en el fondo. El ID de trabajo predeterminado es el trabajo actual.
fg [ Identificación del trabajo ...] Selecciona secuencialmente cada Identificación del trabajo como el trabajo de primer plano. El ID de trabajo predeterminado es el trabajo actual.
trabajos [ -pag | -l ] [ Identificación del trabajo ...] | [ -x mando [ argumentos ...]]

Imprime información sobre cada Identificación del trabajo o ejecuta mando :

-l Incluye el ID del grupo de procesos y el directorio de inicio.
-pag Incluye la identificación del grupo de procesos.
-x mando [ argumentos ...] Ejecuta comando con argumentos; cada argumento que forma un ID de trabajo es reemplazado por el ID de grupo de procesos del trabajo respectivo. Es un error si un trabajo determinado no existe.
matar [[ -s señal | - señal ] Identificación del trabajo ... | -l [ estado ] Una versión especial del matar comando que reconoce los identificadores de trabajos en sus argumentos.
detener Identificación del trabajo ... Detiene los trabajos dados (es decir, envía un DETENER señalles).
suspender Detiene la propia cáscara. Esto no está permitido si el shell es un líder de sesión.
Espere [ Identificación del trabajo ] La Espere El comando (ver arriba) reconoce los ID de trabajos en sus argumentos.

Notas

Por razones históricas, ^ es sinónimo de | como separador de tuberías. Por tanto, se desaconseja su uso en nuevas aplicaciones.

Si un comando que no sea un comando simple (es decir, ' por ...', ' caso ... ', etc.) se redirige, se ejecuta en una subcapa. Si las asignaciones de variables deben estar visibles en el shell padre después de que se haya redirigido la entrada, ejecutivo Se puede usar un comando especial:

|_+_|

Si los parámetros que se han heredado del entorno inicial se modifican, deben exportarse explícitamente para que el cambio sea visible para los comandos externos, como se describe en ' Ambiente ' sobre.

La $ IFS El parámetro se aplica a cualquier palabra sin comillas. Por lo tanto:

|_+_|

ejecuta el ' echo 'comando con el argumento' foo '. El comando ' colocar -- 'sin más argumentos es un no-op (sin operación). El comando especial de cambio se puede utilizar para borrar todos los parámetros de posición.

Solo hay un espacio de nombres para funciones y parámetros. Una definición de función eliminará un parámetro con el mismo nombre y viceversa.

Las asignaciones de parámetros que preceden a un comando especial afectan al propio shell; se ignoran las asignaciones de parámetros que preceden a la llamada de una función.

Archivos

/ etc / profile
$ HOME / .profile
/ tmp / sh *
/ dev / null

Ejemplos de

|_+_|

Invoca el shell Bourne y lo coloca en un símbolo del sistema.

antes de Cristo - Una calculadora.
en eso - El padre de todos los procesos del sistema.
matar - Enviar una señal a un proceso, afectando su comportamiento o matándolo.
ksh - El intérprete de comandos del shell Korn.
acceso - Iniciar una sesión en un sistema.
newgrp - Inicie sesión en un nuevo grupo.
ps - Informar el estado de un proceso o procesos.
pwd - Imprime el nombre del directorio de trabajo.
stty - Establecer opciones para la pantalla de su terminal.