Terminal shell y comandos de Linux
La shell es la herramienta básica del administrador de sistemas para el acceso y el manejo del sistema operativo, es un programa que sirve como interfaz para acceder a los recursos y servicios del SO y es la parte que envuelve el kernel.

Actualmente las shells mas comunes son bash y zsh en sistemas Unix.
Aqui tienes el manual de Linux:
man
Herramienta utilizada para documentar y aprender sobre comandos, archivos, llamadas de sistema, etc.
$ man [comando]
sudo
El programa sudo, en Linux, está estrechamente relacionado con el manejo de privilegios del usuario del sistema.
$ sudo [comando]
apt install
nano
Una de las tareas mas comunes en linux es editar un archivo y para hacer esto debes usar un editor de texto. En Linux existe el editor vi, pero para los principiantes es complicado y algo confuso, otra opción que está presente casi en cualquier distro es el editor nano linux.
$ nano archivo.txt
pwd
El comando pwd
se usa para localizar la ruta del directorio de trabajo en el que te encuentras.
$ pwd [OPTION]...
Si quieres practicar algunos de estos comandos puedes usar https://webvm.io/ , una pagina web que ejecuta una maquina virtual Linux en tu navegador. Si quieres saber más tienes su repositorio.
Hoja de referencia de comandos de Linux
Aquí tienes una tabla de referencia para acceder a muchos más comandos de los que te he mostrado de manera rápida y fácil:
man
Mostrar la información de ayuda para el comando especificado.
touch
Crear cualquier tipo nuevo de archivo en sistemas Linux.
cat
Concatenar archivos, combinarlos y escribir contenidos de archivos.
cd
Navegar por todos nuestros directorios en nuestro sistema.
ls
Enumerar el contenido del directorio, archivos y otros directorios anidados.
vim
Editor de texto de terminal gratuito y de código abierto.
sed
Buscar u reemplazar de forma masiva.
tar
Crear y extraer archivos de almacenamiento.
pwd
Localizar la ruta del directorio de trabajo en el que te encuentras.
mkdir
Crear directorios (carpetas).
find
Buscar archivos y directorios según sus permisos, tipo, fecha, propiedad, tamaño y más.
rm
Eliminar archivos y directorios.
diff
Comparar dos archivos línea por línea y mostrar la diferencia entre ellos.
chown
Cambiar el propietario del archivo o directorio.
uniq
Detectar las líneas duplicadas adyacentes y eliminar las líneas duplicadas.
wget
Descargar archivos de Internet.
top
Mostrar los procesos en ejecución las tareas administradas.
grep
Filtrar el contenido de un archivo para facilitar nuestra búsqueda
df
Mostrar la cantidad de espacio libre en disco disponible.
kill
Cerrar una proceso que no finaliza para terminarlo de manera manual.
ping
Solucionar problemas y diagnosticar problemas de conectividad de red
ldd
Conocer las dependencias de objetos compartidos de un archivo ejecutable.
lsof
Enumerar información sobre los archivos que están abiertos.
objdump
Desensamblar archivos de objetos o archivos ejecutables.
shutdown
Detener el sistema de forma segura.
Comandos de consulta en Shell

Existen programas que nos ayudan a hacernos la vida más fácil en cuanto a recordar comandos o ayudarnos a saber que hacen, el más común es el manual de man pero hay más, vemos algunos:
- Manual - man
man
Comando por antonomasia para mostrar la documentación de un comando.
Por ejemplo, man mkdir
para ver toda la información del comando mkdir.
También podemos poner man -k make
para ver todos aquellos comandos o ejemplos que coinciden con esa palabra "make".
Búsqueda hacia adelante dentro de una página man: /palabra
Búsqueda hacia atrás dentro de una página man: ?palabra
Búsqueda de información de un parámetro: man comando | grep "parámetro"
Búsqueda de información de un parámetro abriendo less: man comando | less +/parámetro
Ubicación de la página más de un comando: man -w comando
- Bropages
Herramienta que no viene por defecto que te permite ver ejemplos de uso de los diferentes comandos.
Esto es tanto un buscador de página web, aquí lo teneis como una herramienta que se integra en la shell.
Para instalarlo requeriremos las dependencias del lenguaje ruby pero es tan sencillo como:
sudo apt get install ruby ruby-unf ruby-dev
sudo gem install bropages
Ahora para usarlo es tan sencillo como usar:
bro find
Lo cual te cargara los diferentes ejemplos, para salir pulsa "q".
- Manly
La otra herramientas útil es la extensión manly para el terminal que es una versión de terminal de explainshell, una web que te explica lo que hacen los comandos.
Básicamente es una extensión del comando man
que te permite no solo ver lo que hace un comando sino también sus parámetros.
sudo apt-get install python-pip
pip install manly --user
Reinicia la sesión del shell para que funcionen los cambios y ya puedes probarlo:
manly dpkg -i -R #Que hace el siguiente comando?

Para más información sobre aplicaciones útiles de Linux puedes consultar mi página.
Modificación del prompt
Como sabes, en sistemas basados en Linux, el prompt (o shell prompt) es el texto que aparece en la terminal indicando que está lista para recibir comandos. Por ejemplo, cuando abres la terminal, deberías ver algo así:
usuario@equipo:~$
Esto es un texto que es modificable a nivel de sistema y se hace modificando la variable de entorno PS1
. Por ejemplo, el que viene por defecto se representa como:
PS1='\u@\h:\w\$ '
#Puedes verlo con echo $PS1
Lo que hay tras la barra vertical es un tipo de variable, algunos códigos útiles para PS1
son:
\$
→ muestra#
si eres root o$
si eres usuario normal\u
→ usuario\h
→ hostname\w
→ directorio actual\d
→ fecha\t
→ hora\n
→ salto de línea\[\e[COLORm\]...\[\e[0m\]
→ colorear texto
Si quieres que el cambio sea permanente, puedes editar el archivo ~/.bashrc
o ~/.zshrc
. Sabiendo esto puede ser interesante modificarlo para que muestre un texto personalizado, primero de todo, ten en cuenta de no cambiar nada original del archivo .bashrc
sino puede ser irrecuperable, teniendo esto en cuenta solo añadiremos cosas en el .bashrc
:
#Al final de todo:
#Esto mostraré el shell siempre con un mensaje de figlet pero solo funcionara un comando a la vez.
PROMPT_COMMAND='clear; figlet "$(whoami)"; echo'
PS1='\u@\h:\w\$ '
#Este mostrara un shell típico pero colorido, cambialos numeros 30 para modificar el color a gusto
PS1='\[\e[1;34m\]\u\[\e[0m\]@\[\e[1;32m\]\h\[\e[0m\]:\[\e[33m\]\w\[\e[0m\]\$ '
#Prompt con ip local
PS1='\u@\h [\[\e[32m\]$(hostname -I | awk "{print \$1}")\[\e[0m\]]:\w\$ '
#Prompt con fecha
PS1='[\[\e[36m\]\d \t\[\e[0m\]] \u@\h:\w\$ '
Estos son algunos ejemplos de personalización de prompt, elige y configura el que te interese más, incluso por usuario.
Te dejo más información en un pdf de chuleta:
Última actualización