La terminal es una “interfaz de texto” que te permite hacer cualquier cosa que puedes hacer desde una interfaz grafica con la diferencia que con la terminal es mucho mas rápida y permite automatización de tareas.
<h1>Comandos</h1>Estructura de un comando
comando -flag1 -flag2 arg1 arg2
Ejemplo de comandos:
date# Muestra la fecha y hora (Tue Mar 17 22:22:22 -05 2020)
echo 'Hello World'# Imprime el mensaje (Hello World)
man date# Muestra el manual del comando
<h1>Utilidades del CLI</h1>
Autocompletado: TAB
Viajar entre comandos ejecutados: Flechas ↑↓
Búsqueda de comandos ejecutados: CTRL + Shift + R
Historial de comandos ejecutados:history
Ejecutar comando del historial:!54
Es un sistema que permite la organización de los datos de la información que están en el disco duro.
📄 Archivos y 📁Directorio los cuales forman el arbol de directorios.
📄 Los archivos tienen dos atributos: nombre y ubicación(path)
<h3>Comandos para moverse entre directorio</h3>ls # Listar archivos
ls -a # Listar los archivos incluyento los archivos .ocultos
ls -l # Listar metadata de los archivos dentro de los directorios (drwxrwxrwx = directorio - -rw-rw-rw- = Archivo) mostrando usuario, grupo, permiso, tamaño. fecha y hora de creaciónls -lh # Muestra lo mismo de -l pero añadiendo el tamañoen KB, MB
ls -t # Listar los archivos ordenados por fecha de modificaciónls -x # Listar los archivos ordenados por extencion
ls -R # Lista recursivamente los directorios
ls -S # Listar los archivos ordenados por tamaño de archivo
pwd # Identificar directorio (Print Working Directory)
cd home # Cambiar de directorio
cd ~ # Atajo al home
cd - # Atajo al ultimo directorio visitado
<h3>Comando para organizar archivos</h3>
mkdir my_directory # Crea un directorio
cpfile.py my_directory # Copia el archivo al direcotio mensionado como arg2
rm file.py # Elimina un archivo
mv ../test.py . # Mueve el archivo
rmdir my_directory # Elimina un directorio (Primero debes borrar el contenido del mismo)
<h1>🗃 Tipos de archivos</h1>
Existen dos diferentes tipos de archivos uno de ellos es el directorio o carpeta y el otro el archivo
<h1>👨💻 Utilidades interactivas</h1>Existen programas que nos permiten interactuar similar a programa de interfaz de usuario, lógicamente no es lo mismo nada es clickeable aunque puedes hacer la mayoría de cosas con tu teclado. Un ejemplo bastante claro son los editores de texto para la terminal tenemos vim y nano los cuales nos permiten modificar los archivos y con los plugins necesarios podemos hacer que tenga utilidades similares a Visual Studio Code o Atom
nano vs. vim: Terminal Text Editors Compared
<h1>Utilidades batch y batch avanzadas</h1>Procesamiento por lotes (batch)
touch file.txt # Crear un archivo
cat file.txt # Ver el contenido del archivo
head file.txt # Muestra las primeras lineas del archivo
head -n 5file.txt # Muestra las primeras 5 lineas del archivo
tail -n 5 fiele.txt # Muestra las ultimas 5 lineas del archivo
Grep
→ Búsqueda por expresiones regulares
grep Hanks file.txt # Retorna las concidencia
grep -i hanks file.txt # Retorna las coincidencian pero ignora las mayusculas y las minusculas
grep -i "Shan$"file.txt # Usa expresiones regulares
Sed
→ Tratamiento de flujos de caracteres
sed 's/Hanks/Smit/g' file.txt # Replaza la palabra Hanks por Smit (No modifica el archivo)
sed '$d' file.txt # Elimina la ultima linea del archivo
Awk
→ Tratamiento de texto delimitado
awk -F ';''{ print $1 }' file.txt
<h1>🗃➡📚Procesamiento de datos</h1>
El proceso mas común es Datos → Proceso → Información. Analógicamente lo podemos ver como un extractor de jugos
📋Entrada | 🚪 Salida | ❗Error
mysql -h 127.0.0.1 -u root -p1234 < mysql_file.sql # Usamos como datos un archivo en vez de la entrada por default(El teclado ⌨) conel simbolo <
ls > archivo.txt # En este caso redirigimos hacia la salida toda la lista del lsse guardara enel archivo.txt para luego poder consultarla
ls -al >> archivo.txt # Con este redireccionamiento hace practicamente lo mismo pero en un archivo pre-existente (Sobrescribe)
“The Pipes” o traducido al cristiano Tuberías sirven para realizar una especie de iteración de procesos es decir toma la salida de un proceso y se la pasa al siguiente como entrada
# Usando Pipes
ls -l | more # Con el comando dels -l listamos los archivos y directorio y al hacer la tuberia | la salida sela pasamos al comando more
# Sin usar pipes
ls -l > list.txt # Esto guardaria en un archivo el listado de archivos y directorios
morelist.txt # Esto mostraria "limitadamente" el archivo
Piping in Unix or Linux - GeeksforGeeks
<h1>👾Manipular los procesos (background y foreground)</h1>Con esto nos referimos a lo típico de segundo plano y primer plano es decir podemos colocar procesos en segundo plano
python3 infinity_loop.py & # Esto ejecuta un script de en segundo plano tambien se puede con CRL + Z
ps # Muestra los procesos activos puedes usar como argumento de ax para obtener informacion extra
kill -91000 # Elimina un proceso el argumento (pon el proceso en mi caso es el1000 [PID] pero consultalo conps ax) yel flag -9 es para que se elimine si o si
top # Realiza lo mismo que el comando ps pero enuna interfaz "interactiva"
jobs # Muestra los presos en segundo plano
fg %3 # Pasa un proceso enel background(Segundo plano) alforeground
kill %3 # Mata el proceso 3 puedes per los procesos con jobs
killall # Mata todos los procesos
<h1>🔐 Permisos</h1>
Los archivos de Unix tiene un dueño, un grupo y otros para que no cualquier usuario pueda modificarlo o leerlo
Permisos básicos en GNU/Linux con chmod
📖Lectura | ✍Escritura | 🏃♂️Ejecución
M A T R I Z D E P E R M I S O S
______________________
| | Lectura | Escritura | Ejecucción |
| _____________________|
| Dueño |_____|______|______ |
| Grupo |_____|______|______ |
| Otros |_____|______|______ |
N O T A C I O N T E X T U A L
r = read[Leer]
w = write[Escribir]
x = execute[Ejecutar]
N O T A C I O N B I N A R I A
_________
| r | w | x | |
- - - - - - - - - -- - - -
| 1 | 0 | 0 | 4 |
- - - - - - -- - - - - - -
| 1 | 1 | 0 | 6 |
- - - - - - - - - - - - -
| 1 | 1 | 1 | 7 |
- - - - - - - - - - - - -
chmod o-w file.txt # Pon este comando puede modificar los pemisos que tienen los usuarios sobre el archivo, Especificamnte este comando elimina el permiso de escritura(w) a los usuarios otros(o) es decir cualquier usuario que no sea el owner
chmod +x file.py # Añade el premiso de ejecución
chmod 760 file.py # Le da a el propietario todos los permisos a el grupo los permiso de r y w, finalmente ningun permiso a los otros
less /etc/passwd # Muestra los usuarios que tienes en el sistema
chown www-data file.py # Este comando pretende cambiar el dueño(owner) si es un usuario comun no podra ya que no tiene los permisos(root)
sudo chown www-data file.py # El comando sudo pide permiso de root es decir emula ser root para poder cambiar su dueño
sudo chgrp www-data file.py # Cambia el grupo al cual pertenece el archivo
Este usuario es el usuario mas poderoso en un sistema operativo Unix puede cambiar permisos y acciones en archivos “especiales”, usualmente cuando se pide permisos podemos ver el comando sudo
Algunas veces los programa por defecto se quedan cortos así que debemos recurrir a otros que se encuentran en internet usualmente, par ello necesitaremos un manejador de archivos en el caso de ubuntu-debian usaremos apt
# Estructura apt install <nombre del programa> algunas veces necesitaremos sudo (sudo apt install <nombre del programa>)
sudo apt install lynx # Con este comando instalaremos un navegador web puedes usrlo usando lynx www.platzi.com# Algunos lenguajes de programacion tiene un manejador de paquetespor ejemplo pip(Python) | composer(Php) | npm(Javascript)
pip install flask # Instala la libreria llamada flask
De seguro que alguna vez tu compu o smartphone se ha quedado sin almacenamiento pues la compresión de un archivo puede solucionar esto
gzip big_file.txt # Esto comprime el archivo
gzip -d big_file.txt # Esto descomprime el archivo
tar cf backup.tar backup/* # Este comando no comprime pero si agrupa los archivos para luego moverlos a otra ruta
tar tf backup.tar # Nos vermite listar los archivos que contiene agrupados
tar xf backup.tar # Permite desagrupar los archivos
tar czf backup.tgz # Comprime y agrupa un directorio o archivos
tar xzf backup.tgz # Descomprime el grupo de archivos
Algunas veces necesitamos buscar archivos ya sea porque no los encontramos o no recordamos donde esta con las siguiente heramientas te ayudaran a encontarlos
locate old_file.txt # Busca el archivo usando una base de datos debes actualixzar la base de datos para que funcione
sudo updatedb # Actualiza la base de datos de idexacion de archivos
whereis python3 # Muestra la ubicacion de un comando o interprete
find . -user roy -perm 644 # Busca los archivos en el direcorio actual que le pertenescan a el usuario roy y que tengan los permisos 644
find . -time f -mtime +7 # Busca los archivos que sean files(f) y quese hallan creado hace mas de 7 dias
Encuentra cualquier cosa en Linux con find
Cuando hablamos de http debemos recordar que es el protocolo por el cual viaja la información por internet así que los siguientes comandos nos sirve para consultar información
curl https://platzi.com # Muestra el HTML de la pagina
curl -v https://platzi.com # Enseña los request que envia la pagina yel HTML
wget https://www.php.net/php-7.3.10.tar.bz2 # Descarga el archivo en esa ubicacion de lared de internet
Cómo establecer una conexión SSH en Linux
Talvez te preguntes porque cuando ejecuto un comando como echo, cat, wget funciona pues es por las variables de entorno aunque cada comando tiene una ubicación en el sistema la cual puedes consultar con whereis <nombre del comando>
cuando ejecutamos el nombre no usamos /bin/echo "Hi Plazinautas!"
sino echo "Hi Platzinautas!"
Aprenda Variables de entorno de Linux Guía paso a paso - Like Geeks
AWESOME!
excelente aporte