Intérprete de comandos de Linux. Comandos básicos de Bash. Usando Bash y ch

En la mayoría de los sistemas operativos Linux, bash es el intérprete de línea de comandos predeterminado. Para determinar el intérprete actual, ingrese el siguiente comando:

$ eco $SHELL
/bin/bash

Este ejemplo utilizaintérprete de línea de comando intento. Hay muchos otros intérpretes de comandos. Para activar otro intérprete, puede ingresar su nombre en la línea de comando (ksh, tcsh, csh, sh, bash, etc.).

La mayoría de los sistemas operativos Linux con todas las funciones proporcionan todos los intérpretes de comandos que se describen aquí. Pero en sistemas operativos más pequeños, es posible que se proporcionen uno o dos intérpretes.

Comprobar la disponibilidad del artículo que te interesaintérpretelínea de comando

La forma más sencilla de comprobar la disponibilidad del intérprete de comandos de interés es introducir su nombre en la línea de comando. Si el intérprete ha comenzado, está disponible.

Hay varias razones para elegir carcasas alternativas.

  • Experiencia trabajando en sistemas UNIX System V (muchos de los cuales usan ksh de forma predeterminada) o Sun Microsystems y otros sistemas Berkeley UNIX (que a menudo usan csh). En este caso, el uso de estos intérpreteslínea de comandoSerá más conveniente.
  • La necesidad de ejecutar scripts creados para un intérprete de comandos específico.
  • Las capacidades de un caparazón alternativo pueden ser preferibles. Por ejemplo, uno de los miembros del grupo. Usuarios de Linux prefiere usar ksh porque no le gusta la forma en que bash crea alias.

Aunque la mayoría de los usuarios prefieren trabajar en un caparazón, las habilidades adquiridas les ayudan a aprender a trabajar en otros.intérpretes línea de comando , mirando de vez en cuando guía de referencia(por ejemplo, usando el comando manbash). La mayoría de la gente usa bash porque no hay razón para cambiar a otro intérprete.

Usando Bash y ch

El nombre bash es un acrónimo de Bourne Again SHell. Esta abreviatura indica que bash hereda el intérprete Bourneshell (comando sh), creado por Steve Bourne de AT&TBell Labs. Brian Fox de la Free Software Foundation creó bash como parte del Proyecto GNU. Posteriormente, el desarrollo pasó a manos de Chet Ramey en la Universidad Case Western Reserve.

El intérprete bash contiene características que se desarrollaron para los intérpretes sh y ksh en las primeras versiones de UNIX, así como una serie de características del intérprete csh.

Puede esperar que la mayoría de los sistemas Linux, excepto los especializados (como los que están integrados o arrancan desde unidad externa), bash es el intérprete predeterminado. En sistemas especializados, puede ser necesario un intérprete de comandos más pequeño, lo que también implica capacidades limitadas.

La mayoría de los ejemplos en esteartículodiseñado para uso bash.

El intérprete de bash puede ejecutarse en varios modos compatibilidad imitando el comportamiento de otros shells. Puede imitar el comportamiento del shell Bourne (sh) o un shell compatible con los estándares POSK (bash -posix).

Como resultado, el intérprete de bash con más probable podrá leer con éxito archivos de configuración y ejecutar scripts escritos específicamente para otros shells.

Todos los sistemas operativos Linux proporcionados utilizan el intérprete bash de forma predeterminada, excepto los sistemas operativos que arrancan desde medios removibles, que utilizan el intérprete ash de forma predeterminada.

Usando tcsh (y el intérprete csh anterior)

El intérprete de comandos tcsh es una implementación de código abierto del intérprete Cshell (csh). código fuente. El intérprete csh fue creado por Bill Joy y se utiliza de forma predeterminada en casi todos los sistemas Berkeley UNIX (dichos sistemas fueron distribuidos por Sun Microsystems).

Muchas de las funciones de csh, como la edición de la línea de comandos y los métodos de gestión del historial de comandos, se han implementado en tcsh y otros shells. Así como el comando sh ejecuta el intérprete bash en modo compatible con sh, el comando csh ejecuta el intérprete tcsh en modo compatible con csh.

Usando el intérprete de ceniza

El intérprete ash es una versión ligera del intérprete sh de Berkeley UNIX. No contiene muchos funciones básicas y no proporciona funciones como el historial de comandos.

El intérprete de cenizas es muy adecuado para su uso en sistemas integrados con limitaciones recursos del sistema. En el sistema operativo FedoraCore 4, el intérprete ash es un orden de magnitud más pequeño que el intérprete bash.

Usando zsh

El intérprete zsh es otro clon del intérprete sh. Es compatible con POSIX (como bash), pero tiene otras características, incluida la revisión ortográfica y un enfoque diferente para la edición de la línea de comandos. El intérprete zsh era el intérprete predeterminado en los primeros sistemas operativos MacOS X, pero los sistemas modernos usan el intérprete bash de forma predeterminada.

Bash es un shell de comandos o, en otras palabras, un intérprete de comandos que se utiliza de forma predeterminada en la mayoría de las distribuciones de Linux. El shell Bash tiene muchas capacidades. Más que un simple intérprete, en las manos adecuadas, Bash puede convertirse en un lenguaje de programación completo.

El trabajo principal del shell es ejecutar comandos, pero aparte de las utilidades ubicadas en sistema de archivos, Bash tiene su propio conjunto de comandos, muchos de los cuales usas todos los días sin darte cuenta. Estos comandos Bash no están en el disco, sino que están integrados en el propio shell. En este artículo, veremos los comandos bash básicos en Linux que pueden resultar útiles en algunas situaciones.

Este artículo no tendrá una introducción muy larga e iremos directo al grano. Todos los elementos de la lista están ordenados aleatoriamente. Después de revisarlos todos, comprenderá mejor cómo trabajar en Bash.

1. fuente

Este comando le permite leer y ejecutar todos los comandos del archivo especificado en el archivo actual. shell de comando. Esto significa que todas las variables de entorno configuradas en él serán visibles en todos los scripts o comandos que ejecute. Permítame recordarle que si ejecuta un script normal y declara una variable en él, estará disponible solo para él porque se crea una instancia de shell separada para los scripts. Hereda las variables del padre, pero no al revés. Este comando se usa a menudo para actualizar el entorno después del chroot:

fuente /etc/perfil

2. alias

El comando alias le permite crear alias para otros comandos. Por ejemplo, puedes configurarlo para que cuando ingreses a actualizar, se ejecute comando sudo actualización apta && sudo actualización apta. Si llama al comando sin parámetros, mostrará una lista de alias ya definidos. Vea más detalles sobre cómo crear en un artículo separado.

3.enlazar

Con este comando puedes asociar una pulsación de tecla con un comando o función específica. Por ejemplo, configuremos el comando pwd para que se ejecute al presionar F12 en una ventana de terminal:

enlazar ""\e * d *

lunes martes

Y aquí hemos mostrado los nombres de los archivos cuyo primer carácter es la letra "m" o "t", los caracteres siguientes son arbitrarios, luego la letra "d" y nuevamente caracteres arbitrarios.

Tenga cuidado al utilizar un asterisco con el comando rm; puede provocar la pérdida de sus datos. El siguiente comando elimina todo el contenido de la carpeta actual.

habitación *

$ ls *día

docl doc2 documentos

El signo de interrogación (?) indica sólo un carácter no especificado en los nombres de archivos.

Bash es un intérprete de lenguaje de comandos para sistemas compatibles con UNIX. Ejecuta comandos desde una entrada estándar (como una ventana de terminal) o desde un archivo. Bash también incluye extensiones útiles shells de los lenguajes Korn y C (comandos ksh y csh, respectivamente)

Sintaxis

intento [opciones]

Opciones

-do cadena Si este parámetro está presente, entonces el comando se leerá desde la línea cadena. Si el comando pasado tiene argumentos adicionales, se consideran posicionales y comienzan en $0. (Capítulo Argumentos )
-i Trabajo interactivo del intérprete.
-l Mira la INVOCACIÓN a continuación
-r Limitaciones en el funcionamiento del shell. Ver SHELL RESTRINGIDO
-s Si se especifica este parámetro y faltan todos los argumentos requeridos, se leen desde la entrada estándar
-D Se imprime una lista de todas las cadenas entre comillas dobles con $ al inicio. salida estándar. Requerido para completar la traducción. No se ejecutará ningún comando
[-+]0[opción_compra]

shopt_option: opciones de shell adicionales. Lea la subsección COMANDOS INTEGRADOS DE SHELL. Si este parámetro está presente6 entonces -0 delante de él establece parámetro especificado y +0 lo cancela. Si no se especifica el parámetro shopt_option, +0 muestra una lista establecer parámetros a una salida estándar en un formato que permita reutilizar como entrada.

-- Señala el final de la configuración de parámetros. Todos los parámetros posteriores se tratan como nombres de archivo y argumentos para el script. La opción "-" equivale a "--".

Bash también permite opciones de varios caracteres. Deben describirse antes que los de un solo carácter para que puedan ser reconocidos correctamente.

--depurador Inicia el perfil del depurador antes de ejecutar el script. Habilita el modo de depuración avanzado (más detalles en la descripción) extdebug) y ejecuta la función de seguimiento
(ver descripción del parámetro -o).
--dump-po-cadena Equivalente a -D, pero la salida está en formato de archivo localizations.po
--cadenas de volcado Completamente similar a -D
--ayuda Clave
--archivo-init archivo
--rcarchivo archivo Si el intérprete se inicia en modo interactivo, ejecuta los comandos de inicialización del archivo especificado. archivo, y no desde el archivo de inicialización estándar ~/.bashrc.
--acceso Igual que -l
--sin editar
--sin perfil No lea archivos de configuración de todo el sistema al iniciar el shell del intérprete /etc/perfil y cualquier archivo de configuración local como ~/.bash_profile, ~/.bash_login o ~/.perfil . De forma predeterminada, bash los usa cuando se ejecuta en modo de inicio de sesión (más detalles en el parámetro INVOCATION).
--norc No lea ni ejecute el archivo de configuración personal ~/.bashrc cuando se ejecute de forma interactiva. De forma predeterminada, este parámetro se establece cuando el shell se inicia con el comando sh.
--posix Cambie el comportamiento predeterminado de bash cuando encuentre un comando que no sea POSIX (para garantizar la compatibilidad)
--restringido Las acciones de Shell son limitadas (lea a continuación sobre el parámetro RESTRINGIDO SHELL)
--verboso Igual que -v ( salida detallada)
--versión Imprima información sobre la versión actual del intérprete en la salida estándar

Argumentos

Si, después de procesar los parámetros, todavía quedan argumentos no asociados con los parámetros -c o -s, entonces se considera que el primer argumento es el nombre del archivo que contiene el script con los comandos. $0 es el nombre del archivo y los argumentos restantes se escriben posicionalmente. Bash lee los comandos del script, los ejecuta y luego sale. El estado de salida será igual al estado de salida del último comando de script ejecutado. Si no se ejecutó ningún comando, el valor de retorno será "0". Primero, se intenta abrir un script desde la carpeta actual; si no está allí, se buscará el archivo especificado de acuerdo con la variable PATH para scripts.

llamada de bash

acceso caparazón- si el primer carácter después de -- es 0 o el inicio se realizó con el parámetro -login.

interactivo caparazón-trabajo interactivo. Si se inicia sin argumentos y sin el parámetro -c con dispositivo estándar ingrese la salida en el formulario terminal.app o inicie con el parámetro -i.

Procesamiento de archivos de inicialización. Si alguno de los archivos de parámetros de inicialización existe pero no se puede leer, bash en Mac informa un error.

Cuando bash se inicia en modo interactivo o de inicio de sesión, los comandos del archivo se leen y ejecutan primero /etc/perfil (si está disponible), se verifica la presencia de archivos ~/.bash_profile , ~/.bash_login , y ~/.perfil y si están disponibles y accesibles, sus comandos se ejecutan en el mismo orden en que aparecen en la lista. Para omitir el proceso de procesamiento archivo anterior puedes usar el parámetro --sin perfil

Si bash se inició en modo de inicio de sesión, el archivo se verifica y, si está presente, se ejecuta ~/.bash_logout .

Si se inicia en modo interactivo, sin modo de inicio de sesión, durante el inicio el archivo se ejecuta adicionalmente~/.bashrc . para apagar este archivo se utiliza el parámetro --norc o --rcarchivo archivo para reemplazar el archivo ejecutable por otro ( archivo).

Cuando se inicia bash en modo normal, por ejemplo, para ejecutar un script, busca la variable de entorno global BASH_ENV y usa su valor para encontrar el archivo ejecutable.

Cuando el comando llama a bash sh Intenta utilizar la versión más antigua para garantizar la compatibilidad con el estándar POSIX. Cuando se llama en modo interactivo o en modo --login, los archivos se leen y ejecutan secuencialmente primero/etc/perfil Y ~/.perfil , para prohibir el uso de estos archivos, utilice el parámetro --sin perfil. También lee interactivamente el valor de la variable ENV para usarla como ruta para encontrar el archivo ejecutable. Cuando se ejecuta con sh, la opción de inicio --rcfile se ignora y no se puede utilizar. Cuando se inicia en modo estándar, no se utilizan archivos de configuración; el intérprete opera en modo POSIX.

Cuando bash se ejecuta en modo posix usando una opción de línea de comando --posix el intérprete cumplirá con el estándar POSIX para archivos de inicialización. En este caso, el modo interactivo utiliza el valor de la variable ENV, que debe contener el nombre del archivo de inicialización; no se ejecutarán otros archivos de inicialización.

Esta sección cubre los siguientes temas:

  • Interactuar con shells y comandos
  • Comandos y secuencias de comandos
  • Definición, uso y exportación de variables de entorno.
  • Historial de comandos y herramientas de edición
  • Ejecutar comandos contenidos en una variable entorno RUTA y fuera de ella
  • Usando sustitución de comandos
  • Aplicar comandos de forma recursiva a un árbol de directorios
  • Usar páginas de manual (ayuda) para encontrar información sobre comandos

Esta sección describe algunas de las características básicas del shell bash. Se pone especial énfasis en las capacidades requeridas para la certificación. El caparazón es un entorno rico y acogemos con satisfacción su continuo desarrollo. autoestudio. Por equipo Intérpretes UNIX y se han escrito muchos libros sobre Linux y bash en particular.

intérprete de comandos bash

Intérprete intento uno de los varios intérpretes disponibles en Linux. También llamado B nuestro- a ganar sh bien, en honor a Stephen Bourne, creador de una de las primeras versiones del intérprete ( /bin/sh).Bash es esencialmente compatible con sh, pero introduce muchas mejoras, tanto en funcionalidad como en capacidades de programación. Incluye las capacidades de los intérpretes Korn (ksh) y C (csh) y está diseñado para ser un intérprete compatible con POSIX.

Antes de comenzar a aprender bash, recordemos que intérprete Es un programa que recibe y ejecuta comandos. También admite capacidades de programación, lo que le permite componer diseños complejos a partir de comandos comunes. Estas estructuras complejas o escenarios se pueden guardar en archivos, que a su vez son nuevos comandos. Además, muchos comandos en un sistema Linux típico se implementan como scripts de shell.

Los intérpretes contienen incorporado Comandos como cd, break y exec. Otros comandos son externo.

Los intérpretes también utilizan tres estándares. fluir E/S:

  • entrada estándar Este entrada estándar, que proporciona entrada para comandos.
  • salida estándar Este salida estándar, que muestra los resultados de un comando en una ventana de terminal.
  • stderr Este flujo de error estándar, que muestra los errores que ocurren al ejecutar comandos.

Los flujos de entrada proporcionan información a los programas, generalmente asociados con un teclado de terminal. Impresión de flujos de salida caracteres de texto, normalmente a la terminal. El terminal era originalmente ASCII. máquina de escribir o un terminal de vídeo, pero ahora suele aparecer como una ventana en un escritorio gráfico. El resto de esta sección se centrará en la redirección de alto nivel.

Si está utilizando un sistema Linux sin GUI o ha abierto una ventana de terminal en modo gráfico, verá un símbolo del sistema similar al Listado 1.

Listado 1. Ejemplos de mensajes de usuario típicos

$
ian@lyrebird:~>
$

Si ha iniciado sesión como root (o superusuario), su mensaje podría verse como el Listado 2.

Listado 2. Ejemplo de mensajes para root o superusuario

#
pájaro lira: ~ #
#

El usuario root tiene un poder significativo, así que utilícelo con precaución. Si tiene privilegios de root, la mayoría de las indicaciones comienzan con un signo de almohadilla (#). El mensaje para un usuario normal suele empezar con un carácter diferente, normalmente un signo de dólar ($). Su invitación puede diferir de los ejemplos de esta guía. Su mensaje puede incluir su nombre de usuario, nombre de la máquina, directorio actual, la fecha u hora en que se imprimió el mensaje, etc.

Algunas convenciones de este manual

Las guías de examen de developmentWorks LPI 101 y 102 incluyen código de ejemplo de sistemas Linux reales, utilizando las indicaciones predeterminadas para esos sistemas. En nuestro caso, el mensaje raíz comienza con #, por lo que puede distinguirlo de los mensajes usuarios comunes, que comienzan con el signo $. Esta convención es la misma que se utiliza en los libros sobre el tema. Mire atentamente el símbolo del shell en cada ejemplo.

Comandos y secuencias

Estás en el intérprete de comandos, veamos qué puedes hacer ahora. La función principal de los intérpretes de comandos es que ejecuta los comandos a través de los cuales interactúa con el sistema Linux. En los sistemas Linux (y UNIX), los comandos constan de un nombre de comando, opciones y parámetros. Algunos comandos no tienen opciones ni parámetros, otros tienen opciones pero no parámetros, mientras que otros no tienen opciones ni parámetros.

Si una línea contiene el carácter #, todos los caracteres siguientes se ignoran. Por tanto, el símbolo # puede significar el inicio de un comentario o una invitación a un usuario. Una interpretación adicional será obvia a partir del contexto.

Equipo eco

El comando echo imprime una lista de sus argumentos en la terminal como se muestra en el Listado 3.

Listado 3. Ejemplos del comando echo

$ eco Palabra
Palabra
$ eco y oración
y una propuesta
$ echo ¿A dónde fueron los espacios?
¿A dónde se fueron los espacios?
$ echo "Aquí vienen los espacios." # y comenta
Y aquí están los espacios.

En el tercer ejemplo del Listado 3, todos los espacios entre palabras en la salida del comando pasaron a ser del mismo tamaño, un espacio. Para evitar esto, deberá encerrar la cadena entre comillas, utilizando comillas dobles (“) o comillas simples (‘). Bash usa delimitadores como espacios, tabulaciones y nuevas líneas para dividir la cadena de entrada en tokens que luego se pasan a su comando. Encerrar una cadena entre comillas suprime su división y, por lo tanto, es un token único. En el ejemplo anterior, cada token después del nombre del comando es un parámetro, por lo que tenemos 1, 2, 4 y 1 parámetros respectivamente.

El comando echo tiene varias opciones. Normalmente, echo agrega un carácter de nueva línea después de su salida. Utilice la opción -n para que no agregue un carácter de nueva línea. Utilice la opción -e para que el comando interprete secuencias de escape.

Secuencias de escape y saltos de línea.

Hay un pequeño problema al utilizar la barra invertida en bash. Cuando el carácter de barra invertida (\) no está entre comillas, sirve como secuencia de escape para bash, preservando el significado del siguiente carácter. Esto es necesario para metacaracteres especiales, que veremos un poco más adelante. Hay una excepción a esta regla: barra invertida seguido de una nueva línea hace que bash se trague ambos caracteres y trate la secuencia como una solicitud de continuación de línea. Esto puede resultar útil al dividir líneas largas, especialmente en guiones.

Para que las secuencias descritas anteriormente sean procesadas correctamente por el comando echo o uno de los muchos otros comandos que usan caracteres de control de escape similares, debe citar las secuencias de escape, incluirlas en una cadena entre comillas o usar otra barra invertida para obtener es correcto. El Listado 4 contiene ejemplos de diferentes usos de \.

Listado 4. Ejemplos usando eco

$ echo -n Sin nueva línea
Sin nueva línea$ echo -e "Sin nueva línea\c"
No hay línea nueva$ echo "La línea donde hiciste clic
> Introducir clave"
La línea donde hiciste clic
Introducir clave
$ echo -e "Línea con carácter de escape de nueva línea"
Cadena con carácter de escape
nueva linea
$ echo "Línea con carácter de escape de nueva línea, pero sin opción -e"
Una cadena con un carácter de escape de nueva línea, pero sin la opción -e
$ echo -e Metacaracteres con doble\\n\\tbarra invertida
Metacaracteres con doble
barra invertida
$ echo Barra invertida \
> seguido de Enter \
> sirve como petición para continuar la línea.
Una barra invertida seguida de Enter sirve como una solicitud para continuar la línea.

Tenga en cuenta que bash muestra un mensaje especial (>) cuando escribe una cadena con comillas sin terminar. Su línea de entrada pasa a la segunda línea e incluye un carácter de nueva línea.

Bash metacaracteres y declaraciones de control

Bash incluye varios caracteres que, cuando no están entre comillas, también sirven para dividir la cadena de entrada en palabras. Además del espacio, estos símbolos son '|', '&', ';', '(', ')', '<’, и ‘>'. Analizaremos algunos de estos símbolos con más detalle en otras secciones de esta guía. Por ahora, tenga en cuenta que si desea incluir un metacarácter como parte de su texto, debe estar entre comillas o precedido por una barra invertida (\) como en el Listado 4.

La nueva línea y los metacaracteres correspondientes o pares de metacaracteres también sirven como declaraciones de control. Dichos símbolos son '||', '&&', '&', ';', ';;', '|' '(', Y ')'. Algunas de estas declaraciones de control le permiten crear secuencias o listas de comandos.

La secuencia de comandos más simple consta de dos comandos separados por un punto y coma (;). Cada comando siguiente se ejecuta después del anterior. En cualquier entorno de programación, los comandos devuelven un código que indica si el programa se completó normalmente o falló; Los comandos de Linux normalmente devuelven 0 si tienen éxito y un valor distinto de cero si no tienen éxito. Puede realizar procesamiento condicional utilizando los operadores de control && y ||. Si separa dos comandos con el operador de control &&, el segundo comando solo se ejecutará si el primero devolvió cero. Si separa los comandos con ||, el segundo comando solo se ejecutará si el primero devuelve un valor distinto de cero. El Listado 5 contiene algunas secuencias de comandos que utilizan el comando echo. Estos ejemplos no son muy interesantes ya que echo devuelve 0, pero veremos más ejemplos cuando aprendemos a usar más comandos.

Listado 5. Secuencias de comandos

$ línea de eco 1; línea de eco 2; línea de eco 3
linea 1
linea 2
linea 3
$ línea de eco 1 && línea de eco 2 && línea de eco 3
linea 1
linea 2
linea 3
$ línea de eco 1||línea de eco 2; línea de eco 3
linea 1
linea 3

Puede salir del shell usando el comando de salida. Además, puede especificar un código de salida como parámetro. Si está trabajando con el intérprete de comandos en una ventana de terminal en modo gráfico, en este caso simplemente se cerrará. Del mismo modo, si está conectado a un sistema remoto con usando ssh o telnet (por ejemplo), la conexión finalizará. En el intérprete de bash, también puede presionar Ctrl y d para salir.

Veamos otra declaración de control. Si incluye un comando o una lista de comandos entre paréntesis, el comando o secuencia de comandos se ejecutará en su copia del shell, por lo que el comando de salida sale de la copia del shell y no del shell en el que se está ejecutando. en este momento. El listado 6 contiene ejemplos simples junto con && y ||.

Listado 6. Shells y secuencias de comandos

$ (echo En una copia del intérprete; salir 0) && echo OK || eco Mala salida
En una copia del intérprete.
DE ACUERDO
$ (echo En una copia del intérprete; salida 4) && echo OK || eco Mala salida
En una copia del intérprete.
Mala salida

Manténgase atento a más comandos en esta guía.

Variables de entorno

Cuando ejecuta bash, está rodeado por una colección de configuraciones que conforman su entorno, como el formato de su mensaje, el nombre de su directorio de inicio, su directorio de trabajo, el nombre de su intérprete, los archivos que tiene abiertos, el funciones que haya definido, etc. Su entorno incluye muchas variables que tanto usted como bash pueden configurar. Bash también le permite crear variables de shell que puede exportar a su entorno para que las utilicen otros procesos que se ejecutan en el intérprete o otros intérpretes que puede iniciar desde el intérprete actual.

Tanto las variables de entorno como las variables de shell tienen un nombre. Puede hacer referencia al valor de una variable colocando un signo "$" delante del nombre de la variable. Algunas de las variables de entorno de bash más comunes se enumeran en la Tabla 4.

  • USUARIO Nombre de usuario registrado
  • UID ID digital del usuario que ha iniciado sesión
  • HOGAR Directorio de inicio del usuario
  • PWD Directorio de trabajo actual
  • CAPARAZÓN Nombre del caparazón
  • $ ID de proceso (o PID) de un proceso bash (u otro)
  • PPID El ID del proceso que generó este proceso (es decir, el ID del proceso principal)
  • ? Código de salida del último comando

En el Listado 7 puede ver algunas variables de bash.

Listado 7. Variables de entorno y shell

$ eco $USUARIO $UID
ian 500
$ eco $SHELL $INICIO $PWD
/bin/bash /home/ian /home/ian
$ (salida 0);eco $?;(salida 4);eco $?
0
4
$ eco $$ $PPID
30576 30575

Puede crear o configurar una variable de shell escribiendo un signo igual (=) inmediatamente después del nombre de la variable. Las variables distinguen entre mayúsculas y minúsculas, por lo que var1 y VAR1 son dos variables diferentes. Por convención, las variables, especialmente las variables exportadas, se escriben en mayúsculas, pero esto no es así. requisito obligatorio. Formalmente, $$ y $? son parámetros de shell, no variables. Puede hacer referencia a ellos, pero no asignarles valores.

Cuando crea una variable de shell, a menudo querrá exportarla al entorno para que esté disponible para otros procesos que inicie desde el shell. Las variables que exporta no están disponibles para los intérpretes principales. Para exportar una variable, utilice el comando exportar. Para mayor comodidad, puede asignar un valor y exportar una variable en un solo paso.

Para ilustrar la asignación y exportación, creemos otro bash a partir del intérprete de bash actual y luego iniciemos el intérprete Korn desde el bash creado (ksh). Usaremos el comando ps para mostrar información sobre los procesos en ejecución. Aprenderemos más sobre el comando ps cuando exploremos el concepto de estado del proceso más adelante en este tutorial.

¿No usas bash?

El intérprete bash es el intérprete predeterminado en muchas distribuciones de Linux. Si no eres un usuario de bash, quizás quieras considerar las siguientes formas de practicar el uso de bash.

  • usa el comando
    chsh -s /bin/bash
    para cambiar el intérprete predeterminado. Los cambios entrarán en vigor la próxima vez que inicie sesión.
  • Equipo
    su – $USUARIO -s /bin/bash
    creará otro proceso que será hijo de su intérprete actual. El nuevo proceso iniciará el proceso de inicio de sesión con el shell bash.
  • Cree un usuario bash para prepararse para el examen LPI.

Listado 8. Variables de entorno y shell

$ ps -p $$ -o "pid ppid cmd"
PID PPID CMD
30576 30575 -golpe
$golpe

PID PPID CMD
16353 30576 fiesta
$VAR1=var1
$VAR2=var2
$exportar VAR2
$ exportar VAR3=var3
$VAR2 $VAR3
var1 var2 var3
$ eco $VAR1 $VAR2 $VAR3 $SHELL
var1 var2 var3 /bin/bash
$ksh
$ ps -p $$ -o "pid ppid cmd"
PID PPID CMD
16448 16353 ksh
$ exportar VAR4=var4
$ eco $VAR1 $VAR2 $VAR3 $VAR4 $SHELL
var2 var3 var4 /bin/bash
$ salir
$ $ eco $VAR1 $VAR2 $VAR3 $VAR4 $SHELL
var1 var2 var3 /bin/bash
$ ps -p $$ -o "pid ppid cmd"
PID PPID CMD
16353 30576 fiesta
$ salir
$ ps -p $$ -o "pid ppid cmd"
PID PPID CMD
30576 30575 -golpe
$ eco $VAR1 $VAR2 $VAR3 $VAR4 $SHELL
/bin/bash

Nota:

  1. Al comienzo de esta secuencia, el intérprete de bash tenía un PID de 30576.
  2. El segundo intérprete de bash tiene un PID de 16353 y su PID principal es 30576, es decir, el bash original.
  3. Creamos las variables VAR1, VAR2 y VAR3 en la segunda instancia de bash, pero solo exportamos VAR2 y VAR3.
  4. En el intérprete Korn, creamos VAR4. El comando echo muestra los valores de VAR2, VAR3 y VAR4 únicamente y confirmó que VAR1 no se exportó. ¿No se sorprendió cuando el valor de la variable SHELL no cambió a pesar de que el mensaje cambió? No siempre puedes confiar en SHELL para que te diga qué intérprete estás ejecutando, pero el comando ps te permitirá saber exactamente qué es qué. Tenga en cuenta que ps pone un guión (-) delante de la primera instancia de bash para hacernos saber qué es. shell fuente.
  5. En la segunda instancia de bash podemos ver VAR1, VAR2 y VAR3.
  6. Finalmente, cuando volvemos al intérprete original, no existe ni una sola variable en él.

Anteriormente discutimos la posibilidad de utilizar comillas simples y dobles. Hay una diferencia significativa entre ellos. El intérprete realiza la sustitución de variables del shell entre comillas dobles ($), pero no realiza la sustitución si se utilizan comillas simples ('). En el ejemplo anterior, creamos una nueva instancia de intérprete a partir de otra y recibimos una nueva ID de proceso. Usando la opción -do puede pasar el comando a otro intérprete, que ejecutará el comando y regresará. Si pasa una cadena como comando a comillas simples, luego la segunda instancia del intérprete los eliminará y procesará la línea. Al usar comillas dobles se produce sustitución de variables antes de eso cómo se pasa la cadena, por lo que los resultados pueden diferir de lo esperado. El intérprete y el comando generarán un proceso que tendrá su propio PID. El Listado 9 ilustra estos conceptos. El PID del intérprete bash original tiene una fuente diferente.

Listado 9. Cotizaciones y variables de shell

$ echo "$SHELL" "$SHELL" "$$" "$$"
/bin/bash $SHELL 19244 $$
$ bash -c "echo Expandir en padre $$ $PPID"
Ampliar en padre 19244 19243
$ bash -c "echo Expandir en niño $$ $PPID"
Ampliar en niño 19297 19244

Hasta ahora, todas nuestras variables terminaban con un espacio, por lo que quedaba claro dónde terminaba el nombre de la variable. De hecho, el nombre de una variable sólo puede constar de letras, números o un guión bajo. El intérprete sabe que el nombre de una variable termina tan pronto como se encuentra otro carácter. A veces es necesario utilizar variables en expresiones donde su significado puede ser ambiguo. En tales casos, puede utilizar llaves para separar el nombre de la variable como se muestra en el Listado 10.

Listado 10. Uso de llaves con nombres de variables

$ echo "-$INICIO/abc-"
-/home/ian/abc-
$ eco "-$HOME_abc-"
--
$ echo "-$(INICIO)_abc-"
-/home/ian_abc-

comando ambiental

El comando env, sin opciones ni parámetros, muestra las variables de entorno actuales. También puede usarlo para ejecutar un comando en un entorno predefinido. La opción -i (o simplemente -) borra el entorno actual antes de ejecutar el comando, mientras que la opción -u borra las variables de entorno que no desea que se pasen.

El Listado 11 contiene una salida parcial del comando env sin ningún parámetro, seguido de tres ejemplos que ejecutan diferentes intérpretes sin un entorno principal. Revíselos detenidamente antes de discutirlos.

Listado 11. comando env

$entorno
NOMBRE DE HOST = equidna
TÉRMINO=xtérmino
SHELL=/bin/bash
TAMAÑOHIST=1000
SSH_CLIENT=9.27.89.137 4339 22
SSH_TTY=/dev/pts/2
USUARIO=ian
...
_=/bin/entorno
OLDPWD=/usr/src
$ env -i bash -c "echo $SHELL; env"
/bin/bash
PWD=/casa/ian
SHLVL=1
_=/bin/entorno
$ env -i ksh -c "echo $SHELL; env"
_=/bin/entorno
RUTA=/bin:/usr/bin
$ env -i tcsh -c "echo $SHELL; env"
SHELL: Variable indefinida.

Tenga en cuenta que bash configuró la variable SHELL pero no la exportó al entorno, aunque bash creó otras tres variables en el entorno. En el ejemplo de ksh, tenemos dos variables de entorno, pero nuestro intento de mostrar el valor de la variable SHELL da como resultado una línea vacía. Finalmente, tcsh no creó ninguna variable de entorno y arrojó un error cuando intentamos obtener el valor de la variable SHELL.

Configurar y restablecer variables

El Listado 11 mostró cómo se comportan los intérpretes al procesar variables y entornos. Aunque esta guía se centra en bash, debes tener en cuenta que no todos los intérpretes se comportan igual. Además, los intérpretes se comportan de manera diferente dependiendo de si son el shell original o no. Por ahora, diremos simplemente que el shell inicial es el shell que obtienes cuando inicias sesión; puedes ejecutar otros shells para que se comporten como el original si lo deseas. Los tres intérpretes del ejemplo anterior, iniciados con el comando env -i, no son los intérpretes originales. Intente pasar la opción -l para ver la diferencia al ejecutar el shell original.

Veamos nuestro intento de mostrar el valor de la variable SHELL en estos shells:

  • Cuando se inició bash, configuró la variable SHELL, pero no la exportó automáticamente al entorno.
  • Cuando se inició ksh, no configuró la variable SHELL. Sin embargo, una referencia a una variable de entorno no definida equivale a una referencia a un valor vacío.
  • Cuando se inició tcsh, no estableció el valor de la variable SHELL. En este caso, el comportamiento predeterminado es diferente al de ksh (y bash) y generó un error cuando intentamos acceder a la variable.

Puede utilizar el comando unset para borrar una variable y eliminarla de la lista de variables del shell. Si una variable se exportó al entorno, también se eliminará del entorno. Puede utilizar el comando set para controlar el comportamiento de bash (u otros intérpretes). Set es un comando integrado en el intérprete, por lo que las opciones dependen del intérprete en particular. En bash, la opción -u le dice a bash que no genere un error al hacer referencia a variables no definidas, sino que las trate como si fueran valores vacíos. puedes agregar varias opciones para configurar con – y desactivarlos con +. Puede mostrar la lista actual de opciones configuradas con echo $-.

Listado 12. Desarmado y armado

$eco$-
élBH
$ eco $VAR1
$set -u;echo$-
himuBH
$ eco $VAR1
bash: VAR1: variable independiente
$VAR1=v1
$VAR1=v1;eco $VAR1
v1
$desarmado VAR1;eco $VAR1
bash: VAR1: variable independiente
$ establecer +u;echo $VAR1;echo $-
élBH

Puede usar el comando set sin ninguna opción, que mostrará todas las variables de shell y sus valores (si los hay). También hay otro comando, declarar, con el que puedes crear, exportar y mostrar los valores de las variables del shell. Puede obtener información sobre otras opciones para configurar y declarar comandos en las páginas de manual. Veremos las páginas de manual más adelante en esta sección.

comando ejecutivo

El último comando que veremos en esta sección es exec. Puede utilizar el comando exec para ejecutar otro comando que reemplazará al intérprete actual. El Listado 13 genera una instancia de bash y luego usa exec para reemplazarla con el intérprete Korn. Después de salir del intérprete Korn, volverá al intérprete bash original (PID 22985 en este ejemplo).

Listado 13. Usando exec

$ eco $$
22985
$golpe
$ eco $$
25063
$ ejecutivo ksh
$ eco $$
25063
$ salir
$ eco $$
22985

Historia del equipo

Si ha estado escribiendo comandos mientras leía el manual, es posible que haya notado que se utilizan casi los mismos comandos con frecuencia. Albricias es que bash puede almacenar un historial de tus comandos. De forma predeterminada, el historial está habilitado. Puede deshabilitarlo con el comando set +o History y habilitarlo con el comando set -o History. La variable de entorno HISTSIZE le dice a bash cuántas filas almacenar. Un conjunto de otras propiedades determinan el comportamiento y funcionamiento de la historia. Consulte las páginas del manual de bash para obtener más detalles.

Si escribiste comandos mientras leías el manual, habrás notado que con frecuencia se usan casi los mismos comandos. La buena noticia es que bash puede almacenar un historial de tus comandos. De forma predeterminada, el historial está habilitado. Puede deshabilitarlo con el comando set +o History y habilitarlo con el comando set -o History. La variable de entorno HISTSIZE le dice a bash cuántas filas almacenar. Un conjunto de otras propiedades determinan el comportamiento y funcionamiento de la historia. Consulte las páginas del manual de bash para obtener más detalles.

A continuación se muestran algunos comandos que puede utilizar para trabajar con el historial:

historia
Muestra todo el historial
historiaN
Muestra las últimas N líneas de tu historial.
historia -dN
Elimina la línea N de tu historial; esto se puede utilizar si, por ejemplo, desea eliminar una línea que contiene una contraseña
!!
Su último comando ingresado
!NORTE
Enésimo equipo de historia
!-NORTE
Un comando que está a N pasos del actual en el historial (!-1 equivalente!!)
!#
Comando actual que estás escribiendo
!cadena
Comando más reciente que comienza con una cadena
!?¿cadena?
El comando más reciente que contiene una cadena

Puede utilizar dos puntos (:) seguidos de valor específico para acceder o cambiar un comando en el historial. El Listado 14 muestra algunas de las posibilidades históricas.

Listado 14. Gestión del historial

$ eco $$
22985
$ env -i bash -c "eco $$"
1542
$ !!
env -i bash -c "eco $$"
1555
$!ec
eco $$
22985
$ !es:s/$$/$PPID/
env -i bash -c "echo $PPID"
22985
$ historia 6
1097 eco $$
1098 env -i bash -c "eco $$"
1099 env -i bash -c "eco $$"
1100 eco $$
1101 env -i bash -c "echo $PPID"
1102 historia 6
$historia -d1100

Los comandos del Listado 14 hacen lo siguiente:

1. Genere el PID del intérprete actual.
2. Ejecute el comando echo en una nueva instancia del intérprete e imprima su PID.
3. Ejecute el último comando.
4. Vuelva a ejecutar el comando que comienza con 'ec'; El primer comando en este ejemplo se ejecutará.
5. Ejecute el último comando que comienza con 'en', pero reemplace '$PPID' con '$$', para que realmente se muestre el PID principal.
6. Muestra los últimos 6 comandos del historial.
7. Eliminar el comando número 1100, último eco del comando

Puede editar historias de forma interactiva. El intérprete de bash utiliza la biblioteca readline para manejar la edición de comandos y del historial. De forma predeterminada, las teclas y combinaciones de teclas que se utilizan para moverse por el historial o editar líneas corresponden a las utilizadas en Editor GNU Emacs. En Emacs, las combinaciones de teclas generalmente se escriben como C-x o M-x, donde x es una tecla normal y C y M son las teclas Control y Meta, respectivamente. En una PC típica, la tecla Ctrl corresponde a la tecla Control de Emacs y la tecla Alt corresponde a la tecla Meta. Funciones adicionales, así como la capacidad de configurar opciones usando un archivo de inicialización readline (generalmente inputrc en su directorio de inicio) se pueden encontrar en las páginas de manual.

Si prefiere controlar el historial en modo vi, use el comando set -o vi para cambiar al modo vi. Puede volver al modo emacs usando el comando set -o emacs. Cuando extraes un comando en modo vi, inicialmente estás en modo de inserción vi.

Caminos

Algunos comandos bash están integrados, mientras que otros son externos. Veamos ahora los comandos externos y cómo ejecutarlos, así como también cómo distinguir un comando interno.

¿Dónde busca el intérprete los comandos?

Los comandos externos representan archivos en el sistema de archivos. La sección Administración sencilla de archivos de esta guía y el tutorial del Tema 104 brindan más detalles. En los sistemas Linux y UNIX, todos los archivos forman parte de un enorme árbol cuya raíz es /. En los ejemplos anteriores, nuestro directorio actual era el directorio de inicio del usuario. Para los usuarios habituales, los directorios de inicio se encuentran en el directorio /home, es decir, /home/ian, en mi caso. El directorio de inicio de Root es /root. Después de escribir un comando, bash lo busca en la lista de directorios de búsqueda predeterminada, que es una lista de directorios separados por dos puntos almacenados en la variable de entorno PATH.

Si desea saber qué comando se ejecutará si escribe una línea determinada, utilice el comando which o escriba. El Listado 15 muestra mi ruta predeterminada así como la ubicación de varios comandos.

Listado 15. Encontrar ubicaciones de comando

$ eco $RUTA
/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin:/home/ian/bin
$ cual bash env zip xclock echo set ls
alias ls="ls --color=tty"
/bin/ls
/bin/bash
/bin/env
/usr/bin/zip
/usr/X11R6/bin/xclock
/bin/eco
/usr/bin/cuál: no establecido en (/usr/local/bin:/bin:/usr/bin:/usr/X11R6/b
en:/home/ian/bin)
$ tipo bash env zip xclock echo set ls
bash es /bin/bash
entorno es /bin/env
zip es /usr/bin/zip
xclock es /usr/X11R6/bin/xclock
echo es un shell incorporado
set es un shell incorporado
ls tiene el alias de `ls --color=tty"

Tenga en cuenta que todos los directorios de la ruta terminan en /bin. Esta es una convención común, pero no un requisito. El comando which nos dijo que el comando ls es un alias y que establecer comando no se puede encontrar. En este caso, se puede interpretar que el comando no existe o es incorporado. Escriba el comando nos dijo que el comando ls es en realidad un alias y también determinó que el comando set es un comando integrado del intérprete; También dijo que hay un comando echo incorporado, y también hay uno en /bin, que encontramos usando el comando which. Los dos comandos producen su salida de manera diferente.

Hemos visto que el comando ls utilizado para ver el contenido de los directorios es en realidad un alias. Los alias representan manera conveniente usando comandos con diferentes conjuntos de opciones o simplemente para nombrar de manera alternativa un comando. En nuestro ejemplo, la opción –color=tty hace que la lista de archivos del directorio se resalte según el tipo de archivos y directorios. Intente ejecutar dircolors –print-database para ver los códigos de color y qué colores se utilizan para un tipo de archivo en particular.

Cada uno de estos comandos tiene opciones adicionales. Dependiendo de tus necesidades podrás utilizar uno u otro comando. Prefiero usar which cuando estoy seguro de que encontraré el ejecutable y solo necesito su ruta completa. El comando type me brinda información más precisa, que a veces necesito en los scripts.

Ejecutando otros comandos

En el Listado 15, vimos que la ruta completa archivos ejecutables comienza desde el directorio raíz /. Por ejemplo, el programa xclock es en realidad /usr/X11R6/bin/xclock, un archivo ubicado en el directorio /usr/X11R6/bin. Si el programa no está en la variable PATH, puede ejecutarlo especificando la ruta completa al programa y al programa en sí. Hay dos tipos de rutas que puedes utilizar:

  • Rutas absolutas que comienzan con /, como las que vimos en el Listado 15 (/bin/bash, /bin/env, etc.).
  • Las rutas relativas son rutas relativas a su directorio de trabajo actual, cuyo nombre se puede obtener usando el comando pwd. Estos comandos no comienzan con /, pero contienen al menos un carácter /.

Puede utilizar rutas absolutas independientemente de su directorio de trabajo actual, pero es posible que desee utilizar rutas relativas cuando el comando esté cerca del directorio actual. Digamos que estás desarrollando nueva versión programa clasico"¡Hola Mundo!" en el subdirectorio mytestbin de su directorio de inicio. Es posible que desee utilizar una ruta relativa y ejecutar el comando como mytestbin/hello. Hay dos nombres especiales que puedes usar en una ruta; un solo punto (.) se refiere al directorio actual y un par de puntos (..) se refieren al directorio principal del directorio actual. Dado que su directorio de inicio no está en la variable de entorno PATH (y no debería estarlo), deberá proporcionar una ruta explícita al archivo que desea ejecutar desde su directorio de inicio. Por ejemplo, si tienes una copia hola programas en su directorio de inicio, simplemente puede usar el comando ./hello para ejecutarlo. Puedes usar ambos. y... como parte de una ruta absoluta, aunque única no es muy útil en este caso. Puede usar la tilde (~) para referirse a su directorio de inicio y ~nombre de usuario para referirse al directorio de inicio de su nombre de usuario. Consulte el Listado 16 para ver algunos ejemplos.

Listado 16. Caminos absolutos y relativos

$ /bin/echo Utilice el comando echo en lugar del integrado
Utilice el comando echo en lugar del integrado
$ /usr/../bin/echo Incluir el directorio principal en la ruta
Incluir directorio principal en la ruta
$ /bin/././echo Agregue un par de componentes de ruta inútiles
Agregue un par de componentes de ruta inútiles
$ pwd # Ver donde estamos
/home/ian
$ ../../bin/echo Utilice una ruta relativa para hacer eco
Utilice una ruta relativa para hacer eco
$ myprogs/hello # Usa una ruta relativa sin puntos
-bash: myprogs/hello: No existe tal archivo o directorio
$ mytestbin/hello # Usa una ruta relativa sin puntos
¡Hola Mundo!
$ ./hello # Ejecutar programa en el directorio actual
¡Hola Mundo!
$ ~/mytestbin/hello # ejecuta hola usando ~
¡Hola Mundo!
$ ../hello # Intenta ejecutar hola desde el padre
-bash: ../hello: No existe tal archivo o directorio

Cambiar el directorio de trabajo

Así como puedes ejecutar programas desde diferentes directorios, puedes cambiar tu directorio de trabajo actual usando el comando cd. El argumento de cd debe ser una ruta absoluta o relativa a un directorio. En un comando, también puede utilizar ., .., ~ y ~nombre de usuario al especificar rutas. Si escribe cd sin parámetros, irá a su directorio de inicio. Pasar un solo (-) como parámetro significa ir al directorio de trabajo anterior. El directorio de inicio se almacena en la variable de entorno HOME y el directorio anterior se almacena en la variable de entorno OLDPWD, por lo que cd es equivalente a cd $HOME y cd es equivalente a cd $OLDPWD. Generalmente hablamos brevemente sobre cambiar el directorio en lugar de cambiar completamente el directorio de trabajo actual.

En cuanto a los comandos, hay variable de entorno CDPATH, que contiene una lista de directorios separados por dos puntos en los que se debe buscar (además del directorio de trabajo actual) al resolver rutas relativas. Si la solución utiliza una ruta de CDPATH, entonces cd imprimirá la ruta completa del directorio encontrado como salida. Normalmente, un cambio de directorio exitoso va acompañado de la aparición de una nueva invitación o una invitación ligeramente modificada. Algunos ejemplos se muestran en el Listado 17.

Listado 17. Cambiar directorios

$cd/;contraseña
$ cd /usr/X11R6;contraseña
/usr/X11R6
$cd ;contraseña
/home/ian
$ cd-;contraseña
/usr/X11R6
/usr/X11R6
$ cd ~ian/..;contraseña
/hogar
$ cd ~;contraseña
/home/ian
$ exportar CDPATH=~
$cd/;contraseña
$ cd mitestbin
/home/ian/mytestbin

Usar comandos de forma recursiva

Muchos comandos de Linux se pueden aplicar de forma recursiva a todos los archivos de un árbol de directorios. Por ejemplo, el comando ls tiene una opción -R para enumerar directorios de forma recursiva, y los comandos cp, mv, rm y diff tienen una opción -r para aplicarlo de forma recursiva.

Sustitución de comando

Bash tiene una capacidad extremadamente poderosa para pasar la salida de un programa como entrada de otro; esto se llama sustitución de comandos. Puede hacer esto rodeando el comando cuyos resultados desea con apóstrofes (`). Cuando utilice varios comandos anidados, puede incluir el comando entre $(y).

En el manual anterior "LPI 101": Instalación de Linux y gestión de paquetes” vimos que el comando rpm puede decir qué paquete pertenece a qué comando; Era conveniente utilizar la sustitución de comandos aquí. Ahora sabes que realmente lo hicimos.

La sustitución de comandos es una herramienta invaluable al escribir scripts y cuando se usa en la línea de comandos. El Listado 18 muestra un ejemplo de cómo obtener camino absoluto directorio de uno relativo, cómo encontrar el paquete que proporciona el comando /bin/echo y cómo (como root) ver las etiquetas de tres particiones en el disco duro. Este último usa el comando seq para crear una secuencia de números enteros.

Listado 18. Sustitución de comandos

El directorio $ echo "../../usr/bin" es $(cd ../../usr/bin;pwd)
El directorio ../../usr/bin es /usr/bin
$cual eco
/bin/eco
$ rpm -qf `cual eco`
sh-utils-2.0.12-3
$su -
Contraseña:
# para n en $(seq 7 9); hacer echo p$n `e2label /dev/hda$n`;hecho
p7 RH73
p8 SUSE81
p9 IMÁGENES

páginas man

En la última sección de esta guía, veremos cómo obtener ayuda con los comandos de Linux mediante páginas de manual y otros tipos de documentación.

Páginas y secciones de manual

La fuente principal (y tradicional) de documentación son las páginas de manual, a las que se puede acceder mediante el comando man. La Figura 1 muestra la página de manual para el comando man. Utilice el comando man man para obtener esta información.

La Figura 1 muestra algunos elementos típicos de una página de manual:

* Encabezado con el nombre del comando seguido del número de sección entre paréntesis
* Nombre del comando y otros comandos similares que se analizan en esta página de manual
* Lista de opciones y parámetros aplicables al comando
* Breve descripción del equipo.
* Descripción detallada cada opción

También puede encontrar secciones sobre uso, cómo informar errores, información del autor y una lista de otros comandos. Por ejemplo, la página de manual de man indica que hay comandos adicionales (y sus manuales):

apropos(1), whatis(1), less(1), groff(1) y man.conf(5).

Normalmente, las páginas de manual tienen 8 secciones en común. La mayoría de las páginas generalmente se instalan cuando se instala un paquete, por lo que si un paquete no está instalado, es casi seguro que faltarán sus páginas de manual. Además, algunas secciones de las páginas pueden estar en blanco o casi en blanco. Mayoría secciones generales Las páginas man son:

1. Comandos de usuario (env, ls, echo, mkdir, tty)
2. Llamadas al sistema o funciones del kernel (link, sethostname, mkdir)
3. Funciones de biblioteca(acosh, asctime, btree, configuración regional, XML::Parser)
4. Información del equipo (isdn_audio, mouse, tty, zero)
5. Descripción del formato del archivo (mapas de teclas, motd, wvdial.conf)
6. Juegos (tenga en cuenta que muchos juegos ahora se ejecutan en modo gráfico, por lo que es posible que propio sistema ayuda, no páginas de manual)
7. Varios (arp, boot, regex, unix utf8)
8. administración del sistema(debugfs, fdisk, fsck, mount, renice, rpm)

Otras secciones pueden incluir 9 para documentación del kernel de Linux, n para documentación nueva, o para documentación antigua y l para documentación local.

Algunas entradas pueden aparecer en varias secciones. Nuestros ejemplos mostraron que mkdir está contenido en las secciones 1 y 2, y tty en las secciones 1 y 4. Puede definir una sección específica, como man 4 tty o man 2 mkdir, o puede usar la opción -a para enumerar todos los man secciones -páginas.

Notarás en la imagen que el hombre tiene muchas opciones que puedes ver por ti mismo. Por ahora, echemos un vistazo rápido a la sección "Ver también" de comandos relacionados con el hombre.

Ver también

Los dos mandamientos más importantes relacionados con el hombre son lo que es y lo que es apropiado. El comando whatis busca en las páginas man el nombre que especifique y muestra información sobre el nombre en las páginas man correspondientes. El comando apropos busca palabras clave en páginas man y devuelve aquellas que contienen su palabra. El Listado 19 muestra estos comandos.

Listado 19. Ejemplos de comandos whatis y apropos

$qué es hombre
man (1) - formatea y muestra las páginas del manual en línea
man (7) - macros para formatear páginas man
man (1) - formatea y muestra las páginas del manual en línea
man.conf (5) - datos de configuración para man
$qué es mkdir
mkdir (1) - crear directorios

$ con respecto a mkdir
mkdir (1) - crear directorios
mkdir(2) - crea un directorio
mkdirhier (1x) - crea una jerarquía de directorios

Por cierto, si no puede encontrar la página de manual de man.conf, intente ejecutar man man.config ig.

El comando man se muestra en la pantalla mediante un programa de paginación especial. En la mayoría de los sistemas Linux, este programa será menor. Otra opción podría ser el programa más antiguo. Si desea imprimir la página, especifique la opción -t para formatear la página e imprimir usando el programa groff o troff.

El programa de menos salida tiene varios comandos que facilitan la búsqueda de cadenas en el texto mostrado. Utilice man less para obtener más información sobre / (búsqueda hacia adelante), ? (búsqueda hacia atrás) y n (para la última búsqueda realizada), así como muchos otros comandos.

Otras fuentes de documentación

Además de las páginas de manual accesibles desde la línea de comandos, la Free Software Foundation ha creado una gran cantidad de archivos de información que son procesados ​​por el programa de información. Ella tiene grandes oportunidades navegación, incluida la posibilidad de pasar a otra sección. Escriba man info o info info para obtener más información. No todos los comandos están documentados en información, por lo que puede utilizar tanto páginas de manual como información.

Hay varios interfaces gráficas a páginas man como xman (del proyecto XFree86) y yelp (navegador de ayuda Gnome 2.0).

Si no puede encontrar ayuda para un comando, intente ejecutar el comando con la opción –help. De esta manera podrá descubrir lo que buscaba o obtener una pista sobre dónde más puede buscar.

La siguiente sección trata sobre el procesamiento de secuencias de texto mediante filtros.




Arriba