4

👨‍💻Comandos para dominar la terminal de Linux 🐧

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

<h1>Sistema de archivos</h1>

Es un sistema que permite la organización de los datos de la información que están en el disco duro.

Elementos dentro de un sistema de archivos

📄 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

Utilidades batch avanzadas

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

Flujos estándar

📋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)

🤿Pipes

“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

Acciones sobre archivos

📖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

🦸‍♂️ Super Usuario Root

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

📦 Manejo de paquetes

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

<h3>¿Como instalar un programa/paquete?</h3>
# 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

📚 Compresión y agrupamiento

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

🔍 Búsqueda 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

🖥 Interacción con HTTP

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

📤 Conectarse con un servidor remoto

Cómo establecer una conexión SSH en Linux

🌐Variables de entorno

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

Escribe tu comentario
+ 2
1
4458Puntos

AWESOME!