LPIC-1 103.1: introducción al trabajo con la línea de comandos

Damos otro salto más en la serie de artículos sobre las certificaciones LPI, con el Tema 103.1, primer punto del nuevo bloque 103 que irá destinado a comandos GNU y UNIX. Concretamente, a algunos comandos esenciales para trabajar en la línea de comandos si se supone que se está usando Bash como shell del sistema.

Esta parte de las certificaciones buscan comprobar los conocimientos de los candidatos para ser administrador del sistema en cuanto al manejo básico en la línea de comandos (Bash principalmente), saber comprobar y modificar las variables de entorno del shell, usar el historial de comandos, y algunos comandos esenciales para comenzar…

Comandos básicos del entorno

echo

El comando echo imprime texto en pantalla. Puede parecer simple, pero en combinación con otros comandos puede tener gran cantidad de utilidades, especialmente en scripts para Bash. Ejemplos de uso de echo son:

#Uso básico de echo para que devuelva el texto
echo hola

#Saber el shell por defecto que estás usando la siguiente orden
echo $SHELL

#Puedes usarlo para cualquier variable que esté configurada
echo $NOMBRE_VARIABLE

#Es decir, se usa también para que devuelva el valor de una variable de entorno

#Insertar una línea de texto en un fichero
echo "Texto que quieres poner en una línea al final del archivo" >> nombre_archivo.txt

Aprovecho para introducir también el tema de quoting y secuencias de escape en Bash con estos ejemplos:

#Para insertar un salto de línea usa la secuencia de escape \n, aunque puedes usar otras como \b, \t, etc. 
echo -e "Hola\nmundo"
echo -e "Hola\t\tmundo"
echo -e "Hola\b\bmundo"

#Si usas echo sin la opción -e interpretará la secuencia de escape como parte del propio texto, por defecto hace lo mismo que si tuviese la opción -E
echo "Hola\nmundo"
echo -E "Hola\nmundo"

#Para usar espacios en la consola puedes usar \, suponiendo que tienes un directorio llamado "hola mundo", separado por un espacio, si usas la primera forma fallará, pero las dos siguientes serían correctas
cd hola mundo
cd "hola mundo"
cd hola\ mundo

#Por tanto, con "" y '' se pueden usar para que se interprete la cadena de su interior como tal. Más información en 
man echo

env, setenv, unset, export

Para trabajar con las variables de entorno puedes usar estos comandos. Quizás ahora no le veas la utilidad a esto de las variables de entorno, pero verás como en próximos artículos sí que se la verás. Ahora mismo solo me interesa que sepas usar los comandos, que es lo que se pide en las certificaciones. Por ejemplo:

#Para asignar un valor a una variable de entorno puedes usar alguno de estos ejemplos, sustituyendo variable por el nombre de la variable que quieras modificar y valor
setenvi variable valor
export variable=valor
variable=valor

#Ejemplos de lo anterior
setenvi PRINTER hp_laserjet_200
export PRINTER=hp_laserjet_200
NUM=1

#Y luego consultar su valor con y finalmente eliminarlos
echo $PRINTER
echo $NUM
unset NUM
unset PRINTER

#Con set también se puede consultar su estado, agregar un nuevo valor, o modificarlo
set
set DISPLAY=localhost:0.0
set NUM=$3

#También puedes ver todas las variables y su estado con
set -o 
export

#Con env se puede listar, modificar, eliminar o limpiarlas todas para comenzar de cero. Por ejemplo, para comenzar de cero y luego declarar una de ellas 
env -i /bin/bash
env DISPLAY=malmo:1.0

pwd

Este comando te devuelve el directorio donde te encuentras actualmente, algo práctico para saber dónde te encuentras situado en la jerarquía de directorios de tu sistema. Ejemplo:

#Muestra el directorio actual
pwd

#Para imprimir la ruta simbólica y la actual puedes usar respectivamente
pwd -L
pwd -P

#Ver el directorio de trabajo por defecto
echo $PWD

type

Puedes saber el tipo de un comando usando type. Así sabrás si se trata de órdenes internas de Bash (built-in) o son comandos externos. Por ejemplo:

type type
type pwd
type systemctl
type -a cd

which

Con which puedes buscar dónde reside el binario de un comando. Por ejemplo:

which type
which bash
which cd
which which

man

Ya lo conocerás porque lo he venido mostrando en varios artículos, es el comando que muestra el manual donde obtener información sobre programas, ficheros, etc. Ejemplos:

man man
man which
man systemctl

Una de las cosas más interesantes del manual es conocer las páginas. Ya sabes que puedes ver una pagina concreta con:

#Ver la página inicial
man reboot

#Ver la página 2 
man 2 reboot

Aunque pueda parecer una tontería, ambos resultados no tienen nada que ver. El primero devuelve el manual sobre el comando reboot, mientras que el segundo devuelve información sobre la syscall o llamada al sistema reboot(). ¿Por qué? Por que las páginas se corresponden a:

  1. Programas ejecutables y guiones del intérprete de órdenes.
  2. Llamadas del sistema (funciones servidas por el núcleo)
  3. Llamadas de la biblioteca (funciones contenidas en las bibliotecas
    del sistema)
  4. Ficheros especiales (se encuentran generalmente en /dev)
  5. Formato de ficheros y convenios
  6. Juegos
  7. Paquetes de macros y convenios,
  8. Órdenes de admistración del sistema (generalmente solo son para
    root)
  9. Rutinas del núcleo

uname

Es otra utilidad esencial para conocer información sobre el sistema. Ejemplos:

#Muestra info básica
uname

#Información completa
uname -a

#Nombre de host
uname -n

#Máquina o arquitectura
uname -m
uname -p

#Sobre el kernel
uname -r

#Ir al directorio donde se encuentran las fuentes del kernel actual en uso
cd /usr/src/linux-headers-$(uname -r)

history / .bash_history

Finalmente el historial de comandos usados puede ser muy cómodo para recuperar comandos ya utilizados que quieras volver a usar. Sabes que puedes usar las flechas arriba y abajo de tu teclado para ir navegando por él. Puedes ver el historial completo con:

history

Aparecen numerados, puedes invocar el comando usando estos números. Por ejemplo, imagina que deseas volver a ejecutar el comando almacenado en la posicón 4 del historial:

!4

O si quieres borrar ese comando de la posición 4, usa:

history -d 4

Si por motivos de seguridad deseas borrar el historial, puedes usar alguna de las siguientes opciones:

history -c
echo "" > ~/.bash_history
cat /dev/null > ~/.bash_history

Próximamente hablaremos de las pipes, redireciones, flujos y entradas y salidas estándar, etc. Y también mostraremos cómo trabajar y hacer cosas prácticas con las variables de entorno…

Isaac

Apasionado de la computación y la tecnología en general. Siempre intentando desaprender para apreHender.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

A %d blogueros les gusta esto:

Si continuas utilizando este sitio aceptas el uso de cookies. más información

Los ajustes de cookies de esta web están configurados para "permitir cookies" y así ofrecerte la mejor experiencia de navegación posible. Si sigues utilizando esta web sin cambiar tus ajustes de cookies o haces clic en "Aceptar" estarás dando tu consentimiento a esto.

Cerrar