Entendiendo la base de comandos de Linux/Unix

Share on facebook
Share on twitter
Share on linkedin
Share on telegram
Share on whatsapp
Share on email
Share on print
VALORACIÓN DEL ARTÍCULO:
5/5


El comando Linux Bash es un intérprete de lenguaje de comandos compatible con sh que ejecuta comandos leídos desde la entrada estándar o desde un archivo. Bash también incorpora características útiles de los shells Korn y C ( ksh y csh ).

Opciones de bash

Además de las opciones de shell de un solo carácter documentadas en la descripción del comando set builtin, bash interpreta las siguientes opciones cuando se invoca:

  • -c string: Si la opción -c está presente, los comandos se leen desde string. Si hay argumentos después de la cadena , se asignan a los parámetros posicionales, empezando por $0 .
  • -i :Si la opción -i está presente, el shell es interactivo.
  • -l :Make bash actúa como si se hubiera invocado como un shell de inicio de sesión.
  • -r :Si la opción -r está presente, el shell se vuelve restringido.
  • -s :Si la opción -s está presente, o si no quedan argumentos después del procesamiento de la opción, entonces los comandos se leen desde la entrada estándar. Esta opción permite establecer los parámetros de posición cuando se invoca una shell interactiva.
  • -D :En la salida estándar se imprime una lista de todas las cadenas con doble cita precedidas por $ . Estas son las cadenas que están sujetas a traducción de idioma cuando la localización actual no es C o POSIX . Esto implica la opción – n ; no se ejecutará ningún comando.
  • [-+]O [ shopt_option]: shopt_option es una de las opciones de shell aceptadas por el shopt builtin. Si shopt_option está presente, -O establece el valor de esa opción, y +O la anula. Si shopt_option no se suministra, los nombres y valores de las opciones de shell aceptadas por shopt se imprimen en la salida estándar. Si la opción de invocación es +O , la salida se muestra en un formato que puede reutilizarse como entrada.
  • :A señala el final de las opciones y desactiva el procesamiento de opciones. Cualquier argumento después de se trata como nombres de archivo y argumentos. Un argumento de es equivalente a .

Bash también interpreta varias opciones de varios caracteres. Estas opciones deben aparecer en la línea de comandos antes de que se reconozcan las opciones de un solo carácter:

  • –dump-po-strings : Equivalente a -D , pero la salida está en el formato de archivo GNU gettext po (portable object).
  • –dump-strings : Equivalente a -D .
  • –help : Muestra un mensaje de uso en la salida estándar y sale correctamente.
  • –init-file : file and –rcfile file: Ejecute comandos desde file en lugar del archivo de inicialización personal estándar ~/.bashrc si la shell es interactiva.
  • –login : Equivalente a -l .
  • –noiting : No use la biblioteca readline de GNU para leer líneas de comando cuando el shell es interactivo.
  • –noprofile : No lea el archivo de inicio de todo el sistema /etc/profile ni ninguno de los archivos de inicialización personal ~/.bash_profile, ~/.bash_login, o ~/.profile. Por defecto, bash lee estos archivos cuando se invoca como shell de inicio de sesión.
  • –norc : No lea ni ejecute el archivo de inicialización personal ~/.bashrc si el shell es interactivo. Esta opción está activada por defecto si el shell se invoca como sh .
  • –posix : Cambiar el comportamiento de bash donde la operación por defecto difiere del estándar POSIX para que coincida con el estándar ( posix mode).
  • -restringido : El shell se vuelve restringido.
  • –rpm-requiere :Produce la lista de archivos que son necesarios para que se ejecute el script del shell. Esto implica ‘-n’ y está sujeto a las mismas limitaciones que la comprobación de errores en tiempo de compilación; las pruebas Backticks, [] y evals no se analizan, por lo que algunas dependencias pueden perderse.
  • –verbose :Equivalente a -v .
  • –version :Mostrar información de versión para esta instancia de bash en la salida estándar y salir con éxito.

Argumentos

Si los argumentos permanecen después del procesamiento de opciones y no se ha proporcionado ni la opción -c ni la opción -s , se asume que el primer argumento es el nombre de un archivo que contiene comandos shell. Si bash se invoca de esta manera, $0 se establece en el nombre del archivo, y los parámetros de posición se establecen en los argumentos restantes. Bash lee y ejecuta comandos de este archivo; luego sale. Bash ‘s exit status es el estado de salida del último comando ejecutado en el script. Si no se ejecutan comandos, el estado de salida es 0. Primero se intenta abrir el archivo en el directorio actual y, si no se encuentra ningún archivo, el shell busca el script en los directorios en PATH .

Invocación

Un login shell es aquel cuyo primer carácter del argumento cero es un , o uno iniciado con la opción –login .

Una shell interactiva es la que se inicia sin argumentos de no opción y sin la opción -c cuya entrada y salida estándar están conectadas a terminales según lo determinado por isatty(3), o la que se inicia con la opción -i . PS1 está configurado y $- incluye si bash es interactivo, permitiendo que un script shell o un archivo de inicio pruebe este estado.

Los siguientes párrafos describen cómo bash ejecuta sus archivos de inicio. Si existe alguno de los archivos pero no se puede leer, bash informa de un error. Los tildes se expanden en nombres de archivo como se describe en Expansión de Tilde.

Cuando bash se invoca como un intérprete de comandos de inicio de sesión interactivo o como un intérprete de comandos no interactivo con la opción –login , primero lee y ejecuta comandos desde el archivo /etc/profile, si ese archivo existe. Después de leer ese archivo, busca ~/.bash_profile, ~/.bash_login, y ~/.profile, en ese orden, y lee y ejecuta comandos del primero que existe y es legible. La opción –noprofile puede utilizarse cuando se inicia el shell para inhibir este comportamiento.

Cuando un shell de inicio de sesión sale, bash lee y ejecuta comandos desde el archivo ~/.bash_logout, si existe.

Cuando se inicia un shell interactivo que no es un shell de inicio de sesión, bash lee y ejecuta comandos desde ~/.bashrc, si existe ese archivo. Esto puede ser inhibido usando la opción –norc . La opción –rcfile file forzará bash a leer y ejecutar comandos desde file en lugar de ~/.bashrc.

Cuando bash se inicia de forma no interactiva – para ejecutar un script de shell, por ejemplo – busca la variable BASH_ENV en el entorno, expande su valor si aparece allí, y utiliza el valor expandido como nombre de un archivo para leer y ejecutar. Bash se comporta como si se ejecutara el siguiente comando:

>si [ -n “$BASH_ENV” ]; entonces …. “$BASH_ENV”; fi

pero el valor de la variable PATH no se utiliza para buscar el nombre del archivo.

Si bash se invoca con el nombre sh , intenta imitar el comportamiento de inicio de las versiones históricas de sh lo más fielmente posible, a la vez que se ajusta al estándar POSIX. Cuando se invoca como un shell de inicio de sesión interactivo o como un shell no interactivo con la opción –login , primero intenta leer y ejecutar comandos desde /etc/profile y ~/.profile, en ese orden. La opción –noprofile puede utilizarse para inhibir este comportamiento. Cuando se invoca como un shell interactivo con el nombre sh , bash busca la variable ENV , expande su valor si está definido, y usa el valor expandido como el nombre de un archivo a leer y ejecutar. Dado que una shell invocada como sh no intenta leer y ejecutar comandos desde ningún otro archivo de inicio, la opción –rcfile no tiene ningún efecto. Una shell no interactiva invocada con el nombre sh no intenta leer ningún otro archivo de inicio. Cuando se invoca como sh , bash entra en modo posix después de que se leen los archivos de inicio.

Cuando bash se inicia en posix, como con la opción de línea de comandos –posix , sigue el estándar POSIX para archivos de inicio. En este modo, las shells interactivas expanden la variable ENV y los comandos se leen y ejecutan desde el archivo cuyo nombre es el valor expandido. No se leen otros archivos de inicio.

Bash intenta determinar cuándo está siendo ejecutado por el demonio de shell remoto, normalmente rshd. Si bash determina que está siendo ejecutado por rshd, lee y ejecuta comandos desde ~/.bashrc, si ese archivo existe y es legible. No lo hará si se invoca como sh . La opción –norc puede usarse para inhibir este comportamiento, y la opción –rcfile puede usarse para forzar la lectura de otro archivo, pero rshd generalmente no invoca el intérprete de órdenes con esas opciones ni permite que se especifiquen.

Si la shell se inicia con el identificador de usuario (grupo) efectivo no igual al identificador de usuario (grupo) real, y la opción -p no se proporciona, no se leen los archivos de inicio, las funciones de shell no se heredan del entorno, la variable SHELLOPTS , si aparece en el entorno, se ignora, y el identificador de usuario efectivo se establece en el identificador de usuario real. Si la opción -p se proporciona en la invocación, el comportamiento de inicio es el mismo, pero el ID de usuario efectivo no se restablece.

Definiciones

Las siguientes definiciones se utilizan en el resto de este documento:

  • En blanco :Un espacio o tabulador.
  • Word : Una secuencia de caracteres considerados como una sola unidad por el shell. También conocido como token .
  • Nombre :A word compuesto únicamente de caracteres alfanuméricos y guiones bajos, y comenzando con un carácter alfabético o un guión bajo. También llamado identificador .
  • Metacaracter : Un carácter que, cuando no está citado, separa palabras. Uno de los siguientes: | & () () ficha espacio
  • Operador de control : Un token que realiza una función de control. Es uno de los siguientes símbolos: | &&&&;; () |

Palabras reservadas

Las palabras reservadas son palabras que tienen un significado especial para el shell. Las siguientes palabras se reconocen como reservadas cuando no están citadas y pueden ser la primera palabra de un comando simple o la tercera palabra de un caso o para un comando :

! case do done elif else esac fi for function if in select then until while { } time [ ]]

Gramática de Shell: Comandos simples

Un comando simple es una secuencia de asignaciones de variables opcionales seguida de en blanco -palabras y redirecciones separadas y terminadas por un operador de control . La primera palabra especifica el comando a ejecutar, y se pasa como argumento cero. Las palabras restantes se pasan como argumentos al comando invocado.

El valor de retorno de un comando simple es su estado de salida, o 128+ n si el comando termina con la señal n.

Tuberías

Una pipeline es una secuencia de uno o más comandos separados por el carácter | . El formato de una tubería es [ tiempo [ -p ]]]. | comando2 … ].

La salida estándar de comando se conecta a través de una tubería a la entrada estándar de comando2. Esta conexión se realiza antes de cualquier redireccionamiento especificado por el comando.

Si la palabra reservada ! precede a una tubería, el estado de salida de esa tubería es el NOT lógico del estado de salida del último comando. De lo contrario, el estado de la tubería es el estado de salida del último comando. El shell espera a que todos los comandos en la tubería terminen antes de devolver un valor.

Si el tiempo reservado precede a una tubería, el tiempo transcurrido, así como el tiempo consumido por el usuario y el sistema para su ejecución, se informa cuando la tubería termina. La opción -p cambia el formato de salida al especificado por POSIX. La variable TIMEFORMAT se puede establecer en una cadena de formato que especifique cómo se debe mostrar la información de temporización.

Cada comando en un pipeline se ejecuta como un proceso separado (en un subshell, por ejemplo).

Listas

Una lista es una secuencia de una o más tuberías separadas por uno de los operadores ; , & , & , or ||| , and optionally terminated by one of (; tag__12) , & , or .

De estos operadores de lista, & y || tienen igual precedencia, seguido de ; y &, que tienen igual precedencia.

Una secuencia de una o más líneas nuevas puede aparecer en una lista en lugar de un punto y coma para delimitar comandos.

Si un comando es terminado por el operador de control & , el shell ejecuta el comando en el fondo en un subshell. El shell no espera a que termine el comando, y el estado de retorno es 0. Los comandos separados por un ; se ejecutan secuencialmente; el shell espera a que cada comando termine por separado. El estado de retorno es el estado de salida del último comando ejecutado.

Los operadores de control & y ||| denotan listas AND y listas OR, respectivamente. Una lista AND tiene el formulario

command1 && command2

se ejecuta el comando2 si, y sólo si, el comando1 devuelve un estado de salida de cero.

Una lista OR tiene el formulario

command1 ||| command2

se ejecuta el comando2 si y sólo si el comando1 devuelve un estado de salida distinto de cero. El estado de retorno de las listas AND y OR es el estado de salida del último comando ejecutado en la lista.

Compuestos compuestos

Un comando compuesto comando es uno de los siguientes:

(lista): list se ejecuta en una subshell. Las asignaciones de variables y los comandos incorporados que afectan al entorno del shell no permanecen en efecto después de que el comando se completa. El estado de retorno es el estado de salida de list.

{ lista; }: list se ejecuta simplemente en el shell actual en

Deja un comentario

TAMBIÉN TE INTERESA

607123000 quien es

607123000, quién es y por qué te llaman tanto desde este número

Seguro que últimamente has recibido llamadas de este número: 607123000. En este artículo te mostraremos quién es, porque tanta insistencia y cómo evitar que te vuelvan a llamar si es que lo consideras oportuno.   Índice de contenidos1 607123000, quién es1.1 Un teléfono Vodafone que puede parecerse a otro cualquiera1.2 Muy similar al clásico 123

pasos-para-instalar-certificado-digital-en-Chrome

Instalar el certificado digital en Chrome paso a paso

En este artículo te enseñamos a instalar tu certificado digital en Chrome para poder hacer las muchas gestiones que se pueden hacer con este documento electrónico.   Antes de pasar a este breve y sencillo tutorial, nos detendremos en otro proceso, el de la obtención del certificado digital. La solicitud y obtención de un certificado

desinstalar-aplicaciones-en-Mac

Cómo desinstalar aplicaciones en Mac fácilmente

Desinstalar aplicaciones en Mac es un proceso muy sencillo, aunque es lógico que muchos principiantes en este sistema operativa tengan sus dudas. Y es que cuando has estado toda la vida operando en entornos Windows u otros como Linux, puedes estar algo perdido en acciones tan básicas como instalar o desinstalar aplicaciones en Mac. Índice

discos-duros-externos

Discos duros externos, la guía de compra que necesitas

Todo el mundo necesita discos duros externos. Aunque hoy los ordenadores dispongan de mucha memoria interna y la nube se haya consolidado en el mercado, estos aparatos siguen siendo necesarios para guardar todo tipo de información.   De eso se trata, de guardar la mucha información que hoy disponemos en archivos. A diferencia de la

descargar-videos-de-instagram

Cómo descargar vídeos de Instagram (2 soluciones útiles)

Hola instgramer, si estás buscando una app para poder descargar vídeos de Instagram de forma rápida, este artículo te ayudará.   Te habrás dado cuenta de que Instragram es una de esas redes sociales que se consideran imprescindibles para los usuarios millennials, así como la marcas. Instagram se ha convertido en una máquina de fabricar

Apple-Fitness+

Apple Fitness+: el deporte más tech

El nuevo servicio Apple Fitness+, desvelado en la última presentación de la compañía de Cupertino, promete elevar el deporte y el entrenamiento a otro nivel.   Queda claro que los últimos productos de Apple tienen una clara orientación al cuidado de la salud de las personas. A través del deporte, Apple quiere mover a sus