Comando sh de Linux

comando sh

En los sistemas operativos tipo Unix, sh es el nombre del comando del shell Bourne, el intérprete de lenguaje de comandos estándar de Unix y muchos sistemas operativos tipo Unix, incluido Linux.

Sintaxis

sh [-acefhikmnprstuvx] [arg] ...

Descripción e historia

sh es un intérprete de lenguaje de comandos que ejecuta comandos leídos desde una cadena de línea de comandos, la entrada estándar o un archivo especificado.

Stephen Bourne desarrolló el shell Bourne en 1977 en los Laboratorios Bell de AT&T 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 shell Bourne o un enlace simbólico. (o enlace duro) a un shell compatible.

El Bourne Shell se desarrolló originalmente como un reemplazo para el shell Thompson, cuyo archivo ejecutable también se llamaba sh. Aunque se utiliza como un intérprete de comandos interactivo, su propósito original era funcionar como un lenguaje de script.

Las características de Bourne Shell incluyen:

  • Las secuencias de comandos se pueden invocar como comandos utilizando su nombre de archivo.
  • El caparazón puede usarse de forma interactiva o no interactiva.
  • Los comandos pueden ejecutarse sincrónicamente o asincrónicamente.
  • El shell admite la redirección de entrada y salida, y las tuberías.
  • Un conjunto robusto de comandos integrados.
  • Construcciones de control de flujo, facilidades de cotización y funciones.
  • Variables sin tipo.
  • Ambas variables locales y globales.
  • Los scripts se pueden interpretar, es decir, no tienen que compilarse para ejecutarse.
  • Sustitución de comandos usando comillas inversas, por ejemplo: `comando`
  • "Aquí documentos": el uso de << para incrustar un bloque de texto de entrada dentro de un script.
  • bucles "for / do / done", en particular el uso de $ * para recorrer los argumentos.
  • Mecanismo de selección "case / in / esac", destinado principalmente a ayudar al análisis de argumentos.
  • Soporte para variables de entorno utilizando parámetros de palabras clave y variables exportables.
  • Disposiciones fuertes para controlar la entrada y salida y en sus facilidades de coincidencia de expresiones.

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

Comandos

Un comando simple es una secuencia de palabras no en blanco separadas por espacios en blanco (un espacio en blanco es una pestaña 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 exec). El valor de un comando simple es su estado de salida si termina normalmente o más de 200 si termina anormalmente (consulte nuestra descripción general de las señales del sistema operativo para obtener una lista de valores de estado).

Una tubería es una secuencia de uno o más comandos separados por una barra vertical ("|"). La salida estándar de cada comando pero la última está conectada por una tubería a la entrada estándar del siguiente comando. Cada comando se ejecuta como un proceso separado; el shell espera a que termine el último comando. El valor de una tubería es el estado de salida de su último comando.

Una lista es una secuencia de una o más tuberías separadas por ";", "&", "&&" o "||" y opcionalmente terminado por ";" o "&". ";" y "&" tienen la misma precedencia que es menor que la de "&&" y "||", "&&" y "||" También tienen igual precedencia. Un punto y coma provoca la ejecución secuencial; un ampersand hace que la tubería anterior se ejecute sin esperar a que termine. El símbolo "&&" ("||") hace que la siguiente lista se ejecute solo si la canalización anterior devuelve un valor cero (no cero). Las nuevas líneas pueden aparecer en una lista, en lugar de punto y coma, para delimitar comandos.

Un "#" al comienzo de una palabra comienza un comentario y hace que se ignore el resto de la línea.

Un comando 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:

para nombre [en palabra …] hacer lista En bucle. Cada vez que se ejecuta un comando for, el nombre se establece en la siguiente palabra en la lista de palabras for. Si se omite 'en palabra …', se asume 'en "[correo electrónico protegido]"'. La ejecución termina cuando no hay más palabras en la lista.
palabra del caso en [patrón [| patrón] …) lista ;;] … esac Un comando de caso ejecuta la lista asociada con el primer patrón que coincide con la palabra. La forma de los patrones es la misma que la utilizada para la generación del nombre de archivo.
si lista entonces lista [lista elif luego lista] … [más lista] fi Se ejecuta la lista siguiente if, y si devuelve cero, se ejecuta la lista siguiente. De lo contrario, se ejecuta la lista que sigue a elif ("else if") y si su valor es cero, se ejecuta la siguiente lista. Si no se ejecuta la lista else.
mientras lista [hacer lista] hecho Un comando while ejecuta repetidamente la lista while, y si su valor es cero, ejecuta la lista do; de lo contrario el ciclo termina. El valor devuelto por un comando while es el del último comando ejecutado en la lista do. hasta que pueda usarse en lugar de while para negar la prueba de terminación de bucle.
(lista) Ejecutar lista en una subshell.
{lista; } La lista se ejecuta.
lista de nombres; } Define el nombre de la función de shell. Cada vez que el nombre se reconoce como un comando, se ejecuta la lista, con los parámetros posicionales $ 1, $ 2 … establecidos en los argumentos del comando. Después de que la función regresa, los parámetros posicionales anteriores se restauran.

Las siguientes palabras solo se reconocen como la primera palabra de un comando, y cuando no se incluyen entre comillas:

  • if
  • entonces
  • más
  • elif
  • fi
  • caso
  • in
  • esac
  • idea
  • mientras
  • hasta
  • do
  • hecho
  • {
  • }

Sustitución de comando

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

echo "El nombre de este script es` basename $ 0` ".

Luego, ejecutar el script mostrará la salida combinada de echo y basename:

El nombre de este script es echotest.sh.

Sustitución de parámetros

El carácter $ se usa para introducir parámetros sustituibles. A los parámetros posicionales se les pueden asignar valores por conjunto. Las variables se pueden establecer en la forma "nombre = valor [nombre = valor] …".

$ {parámetro} Un parámetro es una secuencia de letras, dígitos o guiones bajos (un nombre), un dígito o cualquiera de los caracteres * @ #? PS El valor, si lo hay, del parámetro se sustituye. Las llaves solo son necesarias cuando el parámetro va seguido de una letra, dígito o guión bajo que no debe interpretarse como parte de su nombre. Si el parámetro es un dígito, entonces es un parámetro posicional. Si el parámetro es * o @, 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: -word} Si el parámetro está configurado y no está vacío, sustituya su valor; de lo contrario sustituir palabra.
$ {parámetro: = palabra} Si el parámetro no está configurado y no está vacío, configúrelo en word; el valor del parámetro luego se sustituye. Los parámetros posicionales pueden no asignarse de esta manera.
$ {parámetro:? palabra} Si el parámetro está configurado y no está vacío, sustituya su valor; de lo contrario, imprima word y salga del shell. Si se omite la palabra, se imprime un mensaje estándar.
$ {parámetro: + palabra} Si el parámetro está configurado y no está vacío, sustituya la palabra; de lo contrario, no sustituya nada.

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

En lo anterior, la palabra no se evalúa a menos que se use como la cadena sustituida. Entonces, por ejemplo, "echo $ {d-`pwd`}" solo ejecutará pwd si d no está configurado.

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

# El número de parámetros posicionales, en decimal.
Opciones suministradas al shell en la invocación o por conjunto.
? 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 de fondo invocado.

El shell utiliza los siguientes parámetros:

CDPATH La ruta de búsqueda para el comando cd.
INICIO El argumento predeterminado (directorio de inicio) para el comando cd.
OPTARG El valor del argumento de la última opción procesada por el comando especial getopts.
OPTIND El índice de la última opción procesada por el comando especial getopts.
TRAYECTORIA La ruta de búsqueda de comandos (ver Ejecución).
MAIL Si esta variable se establece con el nombre de un archivo de correo, el shell informa al usuario de la llegada del correo en el archivo especificado.
CHEQUEO Si se establece esta variable, se interpreta como un valor en segundos para esperar entre comprobaciones de correo nuevo. El valor predeterminado es 600 (10 minutos). Si el valor es cero, el correo se verifica antes de cada solicitud.
Ruta de correo Una lista de archivos separados por dos puntos que se comprueban para correo nuevo. MAIL se ignora si se establece esta variable.
PS1 Cadena de solicitud primaria, por defecto '$'.
PS2 Cadena de solicitud secundaria, por defecto '>'.
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 del nombre de archivo, para la interpretación de '' y para manejar $ IFS.
SHACCT Si esta variable se establece en el entorno inicial pasado al shell y apunta a un archivo que el usuario puede escribir, se le escriben estadísticas contables.
TIMEOUT El shell existe cuando se solicita 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, todos los resultados de la sustitución se analizan en busca de caracteres separadores de campos internos (los que se encuentran en $ IFS) y se dividen en argumentos distintos donde se encuentran dichos caracteres. Los argumentos nulos explícitos ("" o '') se retienen. Los argumentos nulos implícitos (los que resultan de parámetros que no tienen valores) se eliminan.

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 archivos ordenados alfabéticamente que coinciden con el patrón. Si no se encuentra un 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 "/", y el carácter "/", debe coincidir explícitamente.

* Coincide con cualquier cadena, incluida la cadena nula.
? Coincide con cualquier personaje 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 personaje excepto los adjuntos.

Citando

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

  • ;
  • y
  • (
  • )
  • |
  • ^
  • <
  • >
  • nueva línea
  • espacio
  • lengüeta

Se puede citar un carácter precediéndolo con una "". "\ nueva línea" se ignora. Todos los caracteres encerrados entre un par de comillas (''), excepto una comilla simple, se citan. Dentro de las comillas dobles ("") se produce la sustitución de parámetros y comandos y "" cita los caracteres , `" 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 cualquier momento se escribe una nueva línea y se necesita más información para completar un comando, se emite el indicador secundario ($ PS2).

Entrada y salida

Antes de ejecutar un comando, su entrada y salida pueden redirigirse utilizando una notación especial interpretada por el shell. Lo siguiente puede aparecer en cualquier lugar de un comando simple o puede preceder o seguir un comando y no se pasa al comando invocado. La sustitución se produce antes de usar la palabra o el dígito:

<palabra Use la palabra archivo como entrada estándar (descriptor de archivo 0).
> palabra Use la palabra archivo como salida estándar (descriptor de archivo 1). Si el archivo no existe, se crea; de lo contrario se trunca a longitud cero.
>> palabra Use la palabra archivo como salida estándar. Si el archivo existe, la salida se agrega (buscando hasta el final); de lo contrario se crea el archivo.
<< [-] palabra La entrada del shell se lee en una línea igual a la palabra o al final del archivo. El documento resultante se convierte en la entrada estándar. Si se cita cualquier carácter de la palabra, entonces no se coloca ninguna interpretación sobre los caracteres del documento; de lo contrario, se produce la sustitución de parámetros y comandos, newline se ignora y se utiliza para citar los caracteres $ `y el primer carácter de la palabra. El "-" opcional hace que el carácter de tabulador inicial se elimine del documento resultante; la palabra también puede ser precedida por un tabulador.
<& digito La entrada estándar se duplica desde el dígito descriptor del archivo. 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 el descriptor de archivo 2 para ser un duplicado del descriptor de archivo 1. Si un comando es seguido por & entonces la entrada estándar predeterminada para el comando es el archivo vacío (/ dev / null), a menos que el control de trabajo esté habilitado. De lo contrario, el entorno para la ejecución de un comando contiene los descriptores de archivo del shell de invocación modificado por las especificaciones de entrada y salida.

Medio Ambiente

El entorno es una lista de pares de nombre-valor que se pasa a un programa ejecutado de la misma manera que una lista de argumentos normal; ver ejecutivo y medio ambiente. El shell interactúa con el entorno de varias maneras. En la invocación, el shell explora 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 nuevos, ninguno de ellos afecta el entorno a menos que el comando de exportación se utilice para vincular el parámetro del shell al entorno. El entorno visto por cualquier comando ejecutado se compone de cualquier par de nombre-valor no modificado originalmente heredado por el shell, más cualquier modificación o adición, todo lo cual debe tenerse en cuenta en los comandos de exportación.

El entorno para cualquier comando simple se puede aumentar con el prefijo con una o más asignaciones a los parámetros. Así, estas dos líneas son equivalentes:

PLAZO = args de 450 cmd
(exportación TERM; TERM = 450; cmd args)

Señales

Las señales INTERRUPT y QUIT para un comando invocado se ignoran si el comando es seguido por & (a menos que el control de trabajo 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 realizan las sustituciones anteriores. El shell primero busca si se definió una función con el nombre del comando; Si es así, se elige para la ejecución. De lo contrario, a excepción de los "comandos especiales" enumerados 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 $ PATH define la ruta de búsqueda 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 la ruta de búsqueda no se usa. De lo contrario, se busca un archivo ejecutable en cada directorio de la ruta. Si el archivo tiene permiso de ejecución pero no es un archivo a.out, se supone que es un archivo que contiene comandos de shell. Se genera un subshell (es decir, un proceso separado) para leerlo. Un comando entre paréntesis también se ejecuta en una subshell.

Comandos especiales

: Sin efecto; El comando no hace nada.
. archivo Lea y ejecute comandos del archivo y regrese. La ruta de búsqueda $ PATH se usa para encontrar el directorio que contiene el archivo.
descanso [n] Salga del ciclo de cierre para o while, si lo hay. Si se especifica n, rompa n niveles.
continuar [n] Reanude la próxima iteración del cerramiento para o mientras el ciclo. Si se especifica n, continúe en el enésimo bucle de cierre.
cd [arg] Cambiar el directorio actual a arg. El parámetro de shell $ HOME es el argumento predeterminado. Si no se encuentra el directorio arg y el parámetro $ CDPATH contiene una lista de directorios separados por dos puntos, cada uno de estos directorios se usa como un prefijo para arg en el orden dado, y el directorio actual se establece en el primero que se encuentra. Si no se encuentra un directorio adecuado, un shell interactivo puede intentar corregir los errores ortográficos y proponer un nombre de directorio alternativo:

cd / usf / lb
cd / usr / lib? yok

Si la respuesta es 'y' o cualquier otra cosa que no sea 'n', el shell establecerá el directorio actual al propuesto.

echo [arg …] Cada arg se imprime a la salida estándar; luego, se imprime una nueva línea. Las siguientes secuencias de escape se reconocen en arg:

b Imprime un carácter de retroceso.
c Hace que el comando regrese de inmediato. Los siguientes caracteres se ignoran y la nueva línea de terminación no se imprime.
f Imprime un personaje de avance de página.
n Imprime un personaje de nueva línea.
r Imprime un carácter de retorno de carro.
t Imprime un personaje tabulador.
v Imprime un personaje tabulador vertical.
\ Imprime un carácter de barra diagonal inversa.
0nnn Imprime el carácter (byte) con valor octal nnn.

Si / usr / ucb precede a / usr / sbin o / usr / bin en la configuración actual de la variable $ PATH y el primer argumento es -n, la nueva línea de terminación no se imprime y no se reconocen secuencias de escape. Si la variable $ SYSV3 se establece en el entorno inicial pasado al shell, el argumento -n también se interpreta, pero las secuencias de escape se procesan como de costumbre.

eval [arg …] Los argumentos se leen como entrada al shell y se ejecutan los comandos resultantes.
exec [arg …] El comando especificado por los argumentos se ejecuta en lugar de este shell sin crear un nuevo proceso. Los argumentos de entrada / salida pueden aparecer y (si no se dan otros argumentos) pueden hacer que se modifique la entrada / salida del shell.
salir [n] Hace que el shell salga con el estado de salida especificado por n. Si se omite n, 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 la exportación automática al entorno de comandos ejecutados posteriormente. Si no se proporcionan argumentos, se imprime una lista de nombres exportables.
getopts optstring variable [arg …] Recupera opciones y argumentos de opción de arg (o los parámetros posicionales) similares a getopt. 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. Llamar getopts repetidamente hace que se recupere una opción por llamada. El índice de la opción actual se almacena en la variable OPTIND; se inicializa a 1 cuando se inicia el shell. El argumento de opción, si lo hay, se almacena en la variable OPTARG. El carácter de opción se almacena en la variable. Cuando se alcanza el final de las opciones, getopts regresa con un valor distinto de cero. Un argumento que falta o una opción ilegal también provoca un valor de retorno distinto de cero, y se imprime un mensaje de error con error estándar.
hash [nombre …] El shell mantiene una tabla hash 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 actualmente en la tabla.
newgrp [arg …] Equivalente a "exec newgrp arg …".
pwd Imprime el nombre del directorio de trabajo actual.
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, con las palabras restantes a la última variable. El código de retorno es 0 a menos que se encuentre el final del archivo. Normalmente, las barras invertidas escapan al siguiente personaje; esto se inhibe si se da la opción -r.
readonly [nombre …] Los nombres de pila se marcan como de solo lectura y los valores de estos nombres no pueden modificarse mediante una asignación posterior. Si no se dan argumentos, se imprime una lista de todos los nombres de solo lectura.
volver [n] Regrese de una función de shell al nivel de ejecución anterior. Con el argumento n, la variable especial $? se establece en el valor dado.
establecer [–aefhknptuvx [arg …]]
Sin efecto; útil si el primer argumento comienza con -.
-a Exporte cualquier variable que se modifique o cree a partir de ahora.
-e 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 el comando especial hash. Normalmente, estos comandos se buscan cuando se ejecutan.
-k Todos los argumentos de palabras clave se colocan en el entorno de un comando, no solo los que preceden al nombre del comando.
-m Permite el control del trabajo (ver más abajo).
-n Lea los comandos pero no los ejecute.
-p 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 una identificación efectiva de usuario o grupo diferente a su usuario real o identificación de grupo o si tiene una identificación efectiva de usuario o grupo por debajo de 100, restablece su identificación efectiva de usuario o 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 definidas como un error al sustituir.
-v Imprima líneas de entrada de shell a medida que se leen.
-x Imprimir comandos y sus argumentos a medida que se ejecutan.
Desactiva las opciones -x y -v.

Estas banderas también se pueden usar al invocar el 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 proporcionan argumentos, se imprimen los valores de todos los nombres.

turno [n] Los parámetros posicionales de $ 2 … se renombran $ 1 … El argumento n provoca un cambio por el número dado, es decir, $ n + 1 se renombra a $ 1 y así sucesivamente.
veces Imprima los tiempos de usuario y sistema acumulados para los procesos ejecutados desde el shell.
prueba [expr] prueba evalúa la expresión expr, y si su valor es verdadero, entonces devuelve el estado de salida cero; de lo contrario, se devuelve un estado de salida distinto de cero. La prueba devuelve una salida distinta de cero si no hay argumentos. Las siguientes primitivas se utilizan para construir expr:

-r archivo Verdadero si el archivo existe y es legible.
-w archivo Verdadero si el archivo existe y se puede escribir.
-u archivo Verdadero si el archivo existe y tiene el bit setuid establecido.
-g archivo Verdadero si el archivo existe y tiene el bit setgid establecido.
-k archivo Verdadero si el archivo existe y tiene el bit fijo establecido.
-f archivo Verdadero si el archivo existe y es un archivo normal (o cualquier archivo que no sea un directorio si / usr / ucb aparece temprano en el parámetro $ PATH actual).
-d archivo Verdadero si el archivo existe y es un directorio.
-h archivo Verdadero si el archivo existe y es un enlace simbólico.
-L archivo Verdadero si el archivo existe y es un enlace simbólico.
-p archivo Verdadero si el archivo existe y es una tubería con nombre.
-b archivo Verdadero si el archivo existe y es un dispositivo de bloque.
-c archivo Verdadero si el archivo existe y es un dispositivo de caracteres.
-s archivo Verdadero si el archivo existe y tiene un tamaño mayor que cero.
-t [fildes] Verdadero si el archivo abierto cuyo número de descriptor de archivo es fildes (1 por defecto) está asociado con un dispositivo terminal.
-z s1 Verdadero si la longitud de la cadena s1 es cero.
-n s1 Verdadero si la longitud de la cadena s1 no es cero.
s1 = s2 Verdadero si las cadenas s1 y s2 son iguales.
s1! = s2 Verdadero si las cadenas s1 y s2 no son iguales.
s1 Verdadero si s1 no es la cadena nula.
n1 -eq n2 Verdadero si los enteros n1 y n2 son algebraicamente iguales. Cualquiera de las comparaciones -ne, -gt, -ge, -lt o -le puede usarse en lugar de -eq.

Estas primarias se pueden combinar con los siguientes operadores:

! Operador de negación unario.
-a Binario Y operador.
-o Operador binario OR.
(expr) Paréntesis para la agrupación.

-a tiene mayor precedencia que -o. Observe que todos los operadores y banderas son argumentos separados para probar. Observe también que los paréntesis son significativos como separadores de comandos y deben escaparse.

trampa [arg] [n | nombre] … El argumento es un comando que debe leerse y ejecutarse cuando el shell recibe la (s) señal (es) n. Tenga en cuenta que arg se escanea una vez cuando se establece la trampa y una vez cuando se toma la trampa. Los comandos trap se ejecutan en orden de número de señal. Si arg está ausente, todas las trampas n se restablecen a sus valores originales. Si arg es la cadena nula, esta señal es ignorada por el shell y por los comandos invocados. Si n es 0, entonces el comando arg se ejecuta al salir del shell; de lo contrario, al recibir la señal n como está numerada en la señal. La captura sin argumentos imprime una lista de comandos asociados con cada número de señal. Se puede usar un nombre simbólico en lugar del argumento n; está formado por el nombre de la señal en el lenguaje C menos el prefijo SIG, por ejemplo, TERM para SIGTERM. EXIT es lo mismo que un argumento cero ('0').
escribe un 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 de ruta completo al comando.
ulimit [- [HS] [a | cdfmnstuv]] ulimit [- [HS] [c | d | f | m | n | s | t | u | 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 argumento de límite, se imprime la configuración actual; de lo contrario, se establece un nuevo límite. Se aceptan las siguientes opciones:

-H Establece un límite duro. Solo el superusuario puede aumentar un límite estricto.
-S Establece un límite suave. Un límite suave no debe exceder el límite duro. Si no se proporciona -H o -S, se imprime el límite flexible 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 memoria bloqueada en kbytes.
-m El tamaño máximo del conjunto residente en kbytes.
-n El número máximo de descriptores de archivo 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 de 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 (consulte umask). Los modos simbólicos como se describe en chmod también se aceptan. Si se omite nnn, se imprime el valor actual de la máscara. Con la opción -S, la máscara actual se imprime como una cadena simbólica.
variable no establecida … Desensambla cada variable nombrada.
espera [n] Espere el proceso especificado e informe su estado de terminación. Si no se da n, se produce una espera para todos los procesos secundarios actualmente activos. El código de retorno de este comando es del proceso esperado. Si n no se refiere a un proceso secundario del shell, la espera regresa inmediatamente con el 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. Los comandos se leen como se describe a continuación. El shell interpreta los siguientes indicadores cuando se invoca:

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

Los indicadores y argumentos restantes se describen en el comando set.

Control de trabajo

Cuando se invoca un shell interactivo como jsh, se habilita el control del trabajo. El control de trabajos permite detener y reanudar procesos, y cambiar entre trabajos en primer plano y en segundo plano. Un trabajo consiste en los comandos de una sola tubería. Cada trabajo se coloca en un grupo de proceso separado; un shell de inicio de sesión y todos los trabajos creados por él forman una sesión. La interrupción, el abandono y otros caracteres de control de terminal solo afectan al grupo de procesos en primer plano actual. El trabajo en primer plano se puede detener presionando la tecla de suspensión, típicamente ^ Z; cualquier trabajo se puede detener enviándole la señal de STOP. Los trabajos se identifican mediante 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 cadena.
%número El trabajo con el número dado.
número El trabajo con el número de identificación del grupo de procesos.
cadena El único trabajo para el que la cadena es un prefijo de su nombre.

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

bg [jobid …] Coloca cada jobid en el fondo. La identificación de trabajo predeterminada es el trabajo actual.
fg [jobid …] Selecciona secuencialmente cada jobid como el trabajo en primer plano. La identificación de trabajo predeterminada es el trabajo actual.
trabajos [-p | -l] [jobid …] | [-x comando [argumentos …]]

Imprime información sobre cada jobid o ejecuta el comando:

-l Incluye la identificación del grupo de procesos y el directorio de inicio.
-p Incluye la identificación del grupo de procesos.
-x comando [argumentos …] Ejecuta comando con argumentos; cada argumento que forma una identificación de trabajo se reemplaza por la identificación del grupo de procesos del trabajo respectivo. Es un error si un trabajo dado no existe.
matar [[-s señal | -signal] jobid … | -l [estado] Una versión especial del comando kill que reconoce los identificadores de trabajo en sus argumentos.
dejar de trabajo … Detiene los trabajos dados (es decir, les envía una señal de PARADA).
suspender Detiene el propio caparazón. Esto no está permitido si el shell es un líder de sesión.
espera [jobid] El comando de espera (ver arriba) reconoce los identificadores de trabajo en sus argumentos.

Notas

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

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

exec 5 <& 0 <entrada mientras se lee la línea do ... variable = valor ... hecho exec <& 5 5 <& -

Si se modifican los parámetros que se han heredado del entorno inicial, se deben exportar explícitamente para que el cambio sea visible para los comandos externos, como se describe en el apartado "Entorno" anterior.

El parámetro $ IFS se aplica a cualquier palabra sin comillas. Así:

IFS = X echoXfoo

ejecuta el comando 'echo' con el argumento 'foo'. El comando 'set -' sin más argumentos es un no-op (sin operación). El comando especial shift se puede usar para eliminar todos los parámetros posicionales.

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; las asignaciones de parámetros que preceden a la llamada de una función se ignoran.

archivos

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

Ejemplos

sh

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

Comandos relacionados

bc – A calculator.init – El padre de todos los procesos en el sistema.kill – Envía una señal a un proceso, afectando su comportamiento o matándolo.ksh – El comando de shell Korn interpreter.login – Comienza una sesión en un sistema.newgrp – Inicie sesión en un nuevo grupo.ps – Informe el estado de un proceso o procesos.pwd – Imprima el nombre del directorio de trabajo.stty – Configure las opciones para la pantalla de su terminal.

#goog-gt-tt {display:none !important;}.goog-te-banner-frame {display:none !important;}.goog-te-menu-value:hover {text-decoration:none !important;}body {top:0 !important;}#gtranslate_element {display:none!important;}

var gt_not_translated_list = [«sh [-acefhikmnprstuvx] [arg] …»,»OPTARG»,»OPTIND»,»LANG, LC_ALL»,»LC_CTYPE»,»SHACCT»,»cd [arg]»,»echo [arg …]»,»eval [arg …]»,»exec [arg …]»,»getopts optstring variable [arg …]»,»newgrp [arg …]»,»-t [fildes]»,»-z s1″,»-n s1″,»s1 = s2″,»n1 -eq n2″,»umask [-S] [nnn]»,»bg [jobid …]»,»fg [jobid …]»];
document.cookie = «googtrans=/en/es; domain=.balogs.xyz»;
document.cookie = «googtrans=/en/es»;
function GTranslateElementInit() {new google.translate.TranslateElement({pageLanguage: ‘en’,layout: google.translate.TranslateElement.InlineLayout.SIMPLE,autoDisplay: false,multilanguagePage: true}, ‘gtranslate_element’);}