Linux Professional Institute Learning Logo.
Pasar al contenido principal
  • Inicio
    • Todos los recursos
    • LPI Learning Materials
    • Conviértete en colaborador
    • Publishing Partners
    • Conviértase en un Publishing Partner
    • Acerca de nosotros
    • FAQ
    • Colaboradores
    • Roadmap
    • Contáctenos
  • LPI.org
103.1 Lección 2
Tema 101: Arquitectura del Sistema
101.1 Determinar y configurar los ajustes de hardware
  • 101.1 Lección 1
101.2 Arranque del sistema
  • 101.2 Lección 1
101.3 Cambiar los niveles de ejecución / objetivos de arranque y apagar o reiniciar el sistema
  • 101.3 Lección 1
Tema 102: Instalación de Linux y gestión de paquetes
102.1 Diseño del esquema de particionado del disco duro duro
  • 102.1 Lección 1
102.2 Instalar un gestor de arranque
  • 102.2 Lección 1
102.3 Gestión de librerías compartidas
  • 102.3 Lección 1
102.4 Gestión de paquetes Debian
  • 102.4 Lección 1
102.5 Gestión de paquetes RPM y YUM
  • 102.5 Lección 1
102.6 Linux como sistema virtualizado
  • 102.6 Lección 1
Tema 103: Comandos GNU y Unix
103.1 Trabajar desde la línea de comandos
  • 103.1 Lección 1
  • 103.1 Lección 2
103.2 Procesar secuencias de texto usando filtros
  • 103.2 Lección 1
103.3 Administración básica de archivos
  • 103.3 Lección 1
  • 103.3 Lección 2
103.4 Uso de secuencias de texto, tuberías y redireccionamientos
  • 103.4 Lección 1
  • 103.4 Lección 2
103.5 Crear, supervisar y matar procesos
  • 103.5 Lección 1
  • 103.5 Lección 2
103.6 Modificar la prioridad de ejecución de los procesos
  • 103.6 Lección 1
103.7 Realizar búsquedas en archivos de texto usando expresiones regulares
  • 103.7 Lección 1
  • 103.7 Lección 2
103.8 Edición básica de archivos
  • 103.8 Lección 1
Tema 104: Dispositivos, sistemas de archivos Linux y el estándar de jerarquía de archivos
104.1 Creación de particiones y sistemas de archivos
  • 104.1 Lección 1
104.2 Mantener la integridad de los sistemas de archivos
  • 104.2 Lección 1
104.3 Controlar el montaje y desmontaje de los sistemas de archivos
  • 104.3 Lección 1
104.5 Administración de los permisos y los propietarios de los archivos
  • 104.5 Lección 1
104.6 Crear y cambiar enlaces duros y simbólicos
  • 104.6 Lección 1
104.7 Encontrar archivos de sistema y ubicar archivos en el lugar correspondiente
  • 104.7 Lección 1
How to get certified
  1. Tema 103: Comandos GNU y Unix
  2. 103.1 Trabajar desde la línea de comandos
  3. 103.1 Lección 2

103.1 Lección 2

Certificación:

LPIC-1

Versión:

5.0

Tema:

103 Comandos GNU y Unix

Objectivo:

103.1 Trabajando en la línea de comandos

Lección:

2 de 2

Introducción

Un entorno de sistema operativo incluye las herramientas básicas, como shells de línea de comandos y, a veces, una GUI, que necesitará para hacer las cosas. Pero su entorno también vendrá con un catálogo de accesos directos y valores preestablecidos. Aquí es donde aprenderemos cómo listar, invocar y administrar esos valores.

Encontrar las variables de entorno

Entonces, ¿cómo identificamos los valores actuales para cada una de nuestras variables de entorno? Una forma es a través del comando env:

$ env
DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus
XDG_RUNTIME_DIR=/run/user/1000
XAUTHORITY=/run/user/1000/gdm/Xauthority
XDG_CONFIG_DIRS=/etc/xdg/xdg-ubuntu:/etc/xdg
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
GJS_DEBUG_TOPICS=JS ERROR;JS LOG
[...]

Obtendrá una gran cantidad de resultados, mucho más de lo que se incluye en el extracto anterior. Pero por ahora tenga en cuenta la entrada PATH, que contiene los directorios donde su shell (y otros programas) buscarán otros programas sin tener que especificar una ruta completa. Con ese conjunto, podría ejecutar un programa binario que reside, por ejemplo, en /usr/local/bin desde su directorio de inicio y se ejecutaría como si el archivo fuera local.

Cambiemos de tema por un momento. El comando echo imprimirá en la pantalla lo que usted le indique. Lo crea o no, habrá muchas veces que será muy útil que echo repita literalmente algo.

$ echo "Hi. How are you?"
Hi. How are you?

Pero hay algo más que puede hacer con echo. Cuando le da el nombre de una variable de entorno, y le dice que esta es una variable al prefijar el nombre de la variable con un $, entonces, en lugar de simplemente imprimir el nombre de la variable, el shell lo expandirá dándole el valor. ¿No está seguro de si su directorio favorito está actualmente en la ruta? Puede verificar rápidamente ejecutándolo a través de echo:

$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin

Crear nuevas variables de entorno

Puede agregar sus propias variables personalizadas a su entorno. La forma más simple es usar el caracter =. La cadena a la izquierda será el nombre de su nueva variable, y la cadena a la derecha será su valor. Ahora puede verificar el nombre de la variable con echo para confirmar que funcionó:

$ myvar=hello
$ echo $myvar
hello
Note
Observe que no hay espacio a ambos lados del signo igual durante la asignación de variables.

¿Pero realmente funcionó? Escriba bash en la terminal para abrir un nuevo shell. Este nuevo shell se ve exactamente como el que acababa de encontrar, pero en realidad es un hijo (child) del original (al que llamamos parent). Ahora, dentro de esta nueva consola hija, intente obtener el valor con echo. Nada. ¿Qué está pasando?

$ bash
$ echo $myvar

$

Una variable creada de la manera que acabamos de hacerlo solo estará disponible localmente, dentro de la sesión de shell inmediata. Si inicia un nuevo shell, o cierra la sesión con exit, la variable no lo acompañará. Si escribe exit aquí, volverá a su shell principal original que, en este momento, es donde queremos estar. Puede ejecutar echo $myvar una vez más si lo desea solo para confirmar que la variable sigue siendo válida. Ahora escriba export myvar para pasar la variable a los shells secundarios que pueda abrir posteriormente. Pruébelo: teclee bash para un nuevo shell y luego echo:

$ exit
$ export myvar
$ bash
$ echo $myvar
hello

Todo esto puede parecer un poco útil cuando estamos creando shells sin ningún propósito real. Pero comprender cómo se propagan las variables de shell a través de su sistema será muy importante una vez que comience a escribir scripts.

Eliminar variables de entorno

¿Quiere saber cómo limpiar todas esas variables que ha creado? Una forma es simplemente cerrar su shell principal o reiniciar su computadora. Pero hay formas más simples. Como, por ejemplo, unset. Al escribir unset (sin el $) se eliminará la variable. Con echo podemos verificarlo.

$ unset myvar
$ echo $myvar

$

Si existe un comando unset, entonces existe un comando set. Ejecutar set por sí solo mostrará una gran cantidad de resultados, pero en realidad no es tan diferente de lo que env muestra. Mire la primera línea de salida que obtendrá cuando filtre por PATH:

$ set | grep PATH
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
[...]

¿Cuál es la diferencia entre set y env? Para nuestros propósitos, lo principal es que set generará todas las variables y funciones. Vamos a ilustrar eso. Crearemos una nueva variable llamada mynewvar y luego confirmaremos que está allí:

$ mynewvar=goodbye
$ echo $mynewvar
goodbye

Ahora, ejecutar env mientras se usa grep para filtrar la cadena mynewvar no mostrará ningún resultado. Pero ejecutar set de la misma manera nos mostrará nuestra variable local.

$ env | grep mynewvar

$ set | grep mynewvar
mynewvar=goodbye

Mantener el Valor de Caracteres Especiales

Ahora es un buen momento para presentar el problema de los caracteres especiales. Bash normalmente leerá literalmente los caracteres alfanuméricos (a-z y 0-9). Si intenta crear un nuevo archivo llamado myfile, simplemente escriba touch seguido de myfile y Bash sabrá qué hacer con él. Pero si desea incluir un carácter especial en su nombre de archivo, deberá hacerlo de una forma diferente.

Para ilustrar esto, escribiremos touch y lo definimos el nombre: my big file. El problema es que hay dos espacios entre las palabras que Bash interpretará. Si bien, técnicamente, no llamarías a un espacio un “caracter”, uno esperaría que Bash lo entendiera de esa forma. Si lista el contenido de su directorio actual, en lugar de un archivo llamado my big file, verá tres archivos denominados, respectivamente, my, big y file. Esto se debe a que Bash interpretó que deseaba crear varios archivos cuyos nombres estaba pasando en una lista:

$ touch my big file
$ ls
my big file

Los espacios se interpretarán de la misma manera si elimina (rm) los tres archivos, todo en un comando:

$ rm my big file

Ahora probémoslo de la manera correcta. Escriba touch y las tres partes de su nombre de archivo, pero esta vez incluya el nombre entre comillas dobles. Esta vez funcionó. Listar el contenido del directorio le mostrará un solo archivo con el nombre apropiado.

$ touch "my big file"
$ ls
'my big file'

Hay otras formas de obtener el mismo efecto. Las comillas simples, por ejemplo, funcionan tan bien como las comillas dobles. (Tenga en cuenta que las comillas simples conservarán el valor literal de todos los caracteres, mientras que las comillas dobles conservarán todos los caracteres excepto para $, `, \ y, en ciertos casos, !.)

$ rm 'my big file'

Anteponer cada carácter especial con la barra invertida “escape” hará que Bash lo lea literalmente.

$ touch my\ big\ file

Ejercicios Guiados

  1. Use el comando export para agregar un nuevo directorio a su ruta (este no debe sobrevivir a un reinicio).

  2. Use el comando unset para eliminar la variable PATH. Intente ejecutar un comando (como sudo cat /etc/shadow) usando sudo. ¿Que pasó? ¿Por qué? (Al salir de su shell, volverá a su estado original).

Ejercicios Exploratorios

  1. Busque en Internet para encontrar y explorar la lista completa de caracteres especiales.

  2. Intente ejecutar comandos usando cadenas formadas por caracteres especiales y usando varios métodos para escaparlos. ¿Hay diferencias entre la forma en que se comportan esos métodos?

Resumen

En esta lección aprendimos:

  • ¿Cómo identificar las variables de entorno de su sistema?

  • ¿Cómo crear sus propias variables de entorno y exportarlas a otros shells?

  • ¿Cómo eliminar variables de entorno y cómo usar los comandos env y set?

  • ¿Cómo escapar caracteres especiales para que Bash los lea literalmente?

Los siguientes comandos se discutieron en esta lección:

echo

Imprime cadenas de entrada y variables.

env

Entiende y modifica sus variables de entorno.

export

Pasa una variable de entorno a los shells secundarios.

unset

Borra valores y atributos de variables y funciones de shell.

Respuestas a los ejercicios guiados

  1. Use el comando export para agregar un nuevo directorio a su ruta (esto no debe sobrevivir a un reinicio).

    Puede agregar temporalmente un nuevo directorio (quizás uno llamado myfiles que se encuentra en su directorio de inicio) a su ruta usando export PATH="/home/yourname/myfiles:$PATH". Cree un script simple en el directorio myfiles/, hágalo ejecutable e intente ejecutarlo desde un directorio diferente. Estos comandos suponen que está en su directorio de inicio que contiene un directorio llamado myfiles.

    $ touch myfiles/myscript.sh
    $ echo '#!/bin/bash' >> myfiles/myscript.sh
    $ echo 'echo Hello' >> myfiles/myscript.sh
    $ chmod +x myfiles/myscript.sh
    $ myscript.sh
    Hello
  2. Use el comando unset para eliminar la variable PATH. Intente ejecutar un comando (como sudo cat /etc/shadow) usando sudo. ¿Que pasó? ¿Por qué? (Al salir de su shell, volverá a su estado original).

    Al escribir unset PATH se borrará la configuración de ruta actual. Intentar invocar un binario sin su dirección absoluta fallará. Por esa razón, intentar ejecutar un comando usando sudo (que en sí mismo es un programa binario ubicado en /usr/bin/sudo) fallará, a menos que especifique la ruta absoluta, como en: /usr/bin/sudo/bin/cat/etc/shadow. Puede restablecer su PATH usando export o simplemente salga del shell.

Respuestas a ejercicios exploratorios

  1. Busque en Internet para encontrar y explorar la lista completa de caracteres especiales.

    Lista de ejemplo: & ; | * ? " ' [ ] ( ) $ < > { } # / \ ! ~.

  2. Intente ejecutar comandos usando cadenas formadas por caracteres especiales y usando varios métodos para escaparlos. ¿Hay diferencias entre la forma en que se comportan esos métodos?

    Escapar usando caracteres " conservará los valores especiales del signo de dólar, una barra invertida y la barra invertida. Escapar usando un carácter ' hará que todos los caracteres sean literales.

    $ echo "$mynewvar"
    goodbye
    $ echo '$mynewvar'
    $mynewvar

Linux Professional Insitute Inc. Todos los derechos reservados. Visite el sitio web de Learning Materials: https://learning.lpi.org
Este trabajo está registrado bajo la Licencia Internacional Creative Commons Attribution-NonCommercial-NoDerivatives 4.0

Siguiente lección

103.2 Procesar secuencias de texto usando filtros (103.2 Lección 1)

Leer la próxima lección

Linux Professional Insitute Inc. Todos los derechos reservados. Visite el sitio web de Learning Materials: https://learning.lpi.org
Este trabajo está registrado bajo la Licencia Internacional Creative Commons Attribution-NonCommercial-NoDerivatives 4.0

LPI es una organización sin fines de lucro.

© 2023 Linux Professional Institute (LPI) es la organización global de certificación y apoyo académico para profesionales de código abierto. Con más de 200,000 titulares de certificación, es el primer y más grande organismo de certificación no comercial del mundo para Linux y Open Source. LPI cuenta con profesionales certificados en más de 180 países, realiza exámenes en varios idiomas y tiene cientos de socios de capacitación.

Nuestro propósito es hacer que las oportunidades económicas y creativas estén disponibles para todos, haciendo que el conocimiento de código abierto y la certificación sea universalmente accesible.

  • LinkedIn
  • flogo-RGB-HEX-Blk-58 Facebook
  • Twitter
  • Contáctenos
  • Política de privacidad y cookies

¿Detecta un error o desea ayudar a mejorar esta página? Por favor háznoslo saber.

© 1999–2023 The Linux Professional Institute Inc. Todos los derechos reservados.