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.
Para trabajar con shell de linux obviamente requerirás de una máquina virtual linux con una distro de Debian, Ubuntu u otra pero también se puede instalar en una maquina Windows.
Para hacerlo es tan sencillo como:
Ves a la Microsoft store y busca "ubuntu"
Inicia el servicio, aparecerá un error con
mwsl, ahora lo resolvemos.Inicia windows powershell en modo administrador.
Escribe y ejecuta la siguiente orden:
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-LinuxReinicia el equipo y vuelve a iniciar el servicio de ubuntu, ya debería funcionar!
Aqui tienes el manual de Linux:
man
Herramienta utilizada para documentar y aprender sobre comandos, archivos, llamadas de sistema, etc.
sudo
El programa sudo, en Linux, está estrechamente relacionado con el manejo de privilegios del usuario del sistema.
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.
ls
Sin opciones ni argumentos, ls muestra una lista en orden alfabético de los nombres de todos los archivos en el directorio de trabajo actual.
cd
Otros de los comandos más útiles en Linux es el comando cd o de cambio de directorio.
Cuando pones "cd" a secas, vuelves a la raiz.
cp
Copiar archivos y carpetas es uno de los elementos básicos de cualquier sistema operativo y la mayoría de los usuarios lo hacen a diario.
curl
Es una abreviatura de «Client URL». Los comandos de Curl están diseñados para funcionar como una forma de verificar la conectividad a las URL y como una gran herramienta para transferir datos.
-O guardará el archivo en el directorio de trabajo actual con el mismo nombre de archivo que el remoto.
-o permite especificar un nombre de archivo o ubicación diferente.
touch
Este comando se usa para crear cualquier tipo nuevo de archivo en sistemas Linux.
mkdir
Este comando permite a los usuarios crear directorios (carpetas). Posibilita la creación de varios directorios a la vez, así como establecer los permisos para los directorios.
mv
Utiliza este comando para mover archivos y/o directorios de un directorio a otro o para renombrar un archivo o directorio.
chown
Permite cambiar el propietario del archivo o directorio. También se puede usar para cambiar la propiedad del grupo para el archivo o directorio.
pwd
El comando pwd se usa para localizar la ruta del directorio de trabajo en el que te encuentras.
find
Este comando te ayuda a encontrar archivos en directorios
tar
Este comando se utiliza para crear y extraer archivos de almacenamiento. Los indicadores «-cf» y «-xf» se usan para crear y extraer archivos.
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.
BONUS: cowsay 🐄🐮
Hay un paquete de software llamado "cowsay" que se puede instalar con el mismo sudo apt install y genera un gracioso dibujo ASCII en el que te permite poner animales mandando mensajes, por ejemplo en el inicio de sesión:

Para modificar el inicio de sesión para que inicies un terminal con un mensaje sigue estos comandos:
Tienes más aplicaciones chorras en el siguiente enlace.
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
manComando 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:
Ahora para usarlo es tan sencillo como usar:
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.
Reinicia la sesión del shell para que funcionen los cambios y ya puedes probarlo:

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í:
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:
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:
Estos son algunos ejemplos de personalización de prompt, elige y configura el que te interese más, incluso por usuario.
Adicionalmente, en entornos como Ubuntu server, el prompt se muestra en blanco y negro, para cambiarlo entra al archivo .bashrc y descomenta la linea que indica #force_color_prompt=yes
Te dejo más información en un pdf de chuleta:
Última actualización