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…
ÍNDICE:
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:
- Programas ejecutables y guiones del intérprete de órdenes.
- Llamadas del sistema (funciones servidas por el núcleo)
- Llamadas de la biblioteca (funciones contenidas en las bibliotecas
del sistema) - Ficheros especiales (se encuentran generalmente en /dev)
- Formato de ficheros y convenios
- Juegos
- Paquetes de macros y convenios,
- Órdenes de admistración del sistema (generalmente solo son para
root) - 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…