26 March 2022
Que es Linux
El estudiante Linux Torval de la universidad de Helsinki, de 21 años en abril de 1991, empezó a escribir el primer kernel de Linux, intentando hacer un Minix (un Unix pequeño) desde cero, escribe su intención en un foro y pronto se suman muchos entusiastas. En criollo: Hacer las pirámides de Giza, solo.
El 14 de marzo de 1994, salió Linux 1.0.0, que constaba de 176.250 líneas de código, hoy tiene 25.5 M de líneas de código en el linux 5.12
Hoy es esponsoreado por las grandes corporaciones
El Kernel es la pieza de código que controla periféricos, los recursos, arriba de él de esto se montan los otros programas, con una declaración de principios. Cada programa hace una sola cosa, pero la hace bien y de documenta todo.
Otro de los Principios es KISS1, por sus siglas en inglés.
El escritor de Ciencia Ficción Neal Stephenson escribió este ensayo interesante, En Principio fue la línea de Comandos
Utiliza una metáfora para explicar las diferencias entre sistemas operativos. En una avenida hay una tienda de Deportivos italianos (Apple), frente a ella, una tienda de bicicletas con motor (Microsoft). A las afueras de la ciudad se reune la comunidad de hippies (Linux, BSD, Solaris) que compiten por ver quien arma tanques de asalto soviéticos de última generación, que tienen la estética de los deportivos italianos (de hecho ultimamente los deportivos copian a Linux), gastan menos que la bicicleta y son gratis.
Lo que comienza como una religión de hippies fundamentalistas termina el 9 de julio del 2019 cuando IBM anuncia la compra de RedHat en 34 mil millones de dólares. IBM compró RedHat
| Dentro de Bash tenemos cientos de programas instalados por defecto en todas las distribuciones [Li | U]nix, dejamos un listado de apenas algunas. |
1
3%
, mobile, servers, supercomputadoras. Nota wikipediaCuando listamos, podemos agregar parámetros al comando archivos vemos algo parecido a esto, 1
ls
agrega la posibilidad de ver ficheros ocultos.1
-a
1
2
3
4
5
6
7
[marco@marcocenturion Linux]$ ls -lsa
total 356
4 drwxr-xr-x 8 marco marco 4096 mar 25 23:42 .git
4 drwxr-xr-x 2 marco marco 4096 mar 25 20:20 images
296 -rw-r--r-- 1 marco marco 302548 mar 25 23:23 index.html
36 -rw-r--r-- 1 marco marco 35149 mar 25 19:42 LICENSE
8 -rw-r--r-- 1 marco marco 8179 mar 26 08:49 README.md
1
2
3
4
d = directorio
rwx = Permisos de lectura (r) escritura (w) y ejecución (x) del usuario marco
rwx = Permisos de lectura (r) escritura (w) y ejecución (x) del grupo marco
rwx = Permisos del resto de los usuarios
va a permitir que otros puedan leer y “ejecutar” README.md si fuera ejecutable1
chmod o+wx README.md
Permite leer y escribir a este grupo1
chmod g+rx
Quita permisos de lectura a este grupo1
chmod g-r
Agrega permiso de lectura al grupo y elimina todos al resto de los usuarios.1
chmod g+r,o-rwx
va a permitir que usuarios del grupo llamado juan puedan leer1
chgrp juan README.md
Cuando listamos con podemos indicar que solo sean 1
find
o tipos puntuales de archivos como ejecutables. 1
-file
indica el nombre. La lógica es la siguiente:1
-name
find
SI en lugar de -name ponemos -iname para omitir case sensitive.1
find . -name archivo.txt
(d=directorio f=archivo i=enlace)1
find . -type d
(un día desde la última lectura o escritura -mtime desde la última modificación)1
find . -atime 1
Encontrar un archvio que fue modificado hace menos de 10 minutos.1
find . -f -mmin -10
exactamente 10 megabites 1
find . -size 10M
mas de un gigabite1
+1G
todos los archivos de mas de 1G (para eliminar)1
find ~ -type f -size +1G
buscar ejecutables1
finde ~ -executable
La salida del comando find se la pasamos en este caso a cat como argumento y le pedimos que numere los renglones.
1
find . -name READ*| xargs cat | grep archivos -n
En el árbol de directorios de linux, existen directorios a los que puede acceder un usuario sin privilegios y otros a los que solo puede acceder el super usuario root
Usuarios sin permisos /home/usuario /var/logs /var/html /opt
Solo accede el superusuario o dándole permisos de superusuario a un usuario /etc /boot /root
Directorio Raiz /
Directorio de arranque, donde se almacenan los ejecutables para que arranque el sistema, la imagen del kernel /boot
Directorio donde se archivan los ejecutables de sistema /bin (ejecutables de todos los usuarios) /sbin (ejecutables solo por root)
Directorio de los dispositivos, ya que todos los dispositivos de linux, son tratados como un archivo, dependiendo de la distribución, estos archivos están dentro de /dev
Directorio de configuración del sistema /etc
Directorio del usuario, por lo general, al crearse un usuario, Linux crea un entorno para ese usuario dentro del cual crea un directorio en /home/usuario
Directorio de las librerías (por ejemplo java) /lib
Directorio de programas que no vienen por defecto en linux /opt
Directorio de los procesos que están corriendo /proc
Directorio de los logs /var/logs
Directorio de temporales /tmp
Directorio de los programas, los ejecutables, librerías, fuentes, man pages /usr
Directorio recuperado /lost+found
|Comando|Utilidad|
|—|—|
|fsc |Completa predictivamente el comando fsck y muestra un listado de posibles comandos|
|ls > 1
Tab
|Envía la salida del comando ‘ls’ a ‘archivos.txt’|
|ls » 1
archivos.txt
|Agrega a archivos.txt el resultado de ls|
|cat 1
archivos.txt
| grep linux|La salida de ‘cat’ es la entrada de ‘grep’|
|apt update 1
archivos.txt
apt upgrade |Hace un update del sistema y luego upgrade|
|rm * || ls |Borra todos los archivos y si falla lista los archivos|
|Ctrl + 1|Cambia a la TTS 1 de las 7 que tiene|
|Ctrl + c|Termina comando que se está ejecutando|
|Ctrl + z|Suspende un proceso|
|Ctrl + d|Muestra el final de un archivo|
|Ctrl + Alt + t|Abre una nueva terminal|
|&|Al final del comando lo hace correr en segundo plano|1
&&
|Comando|Utilidad|
|—|—|
|date|Despliega día y hora|
|uname |Toda la info del sistema|
|screenfetch|descripción del sistema 2.0|
|ls 1
-a
|Listado de archivos y directorios|
|cd|Cambia de directorio, 1
-argumentos
es el home|
|pwd|Muestra el directorio actual|
|man 1
~
|Manual del comando|
|cd 1
cd
|Ayuda rápida del comando cd|
|mkdir|Crea un directorio|
|mv 1
--help
|Mueve archivos y directorios o renombra|
|cp 1
-argumentos
|Copia archivos y directorios|
|rm|Borra|
|cal|Calendario|
|file 1
-argumentos
|Muestra que tipo de archivo|
|history|Historial de comandos en Bash 1
archivo.txt
agrega el número de línea|
|alias|Genera un enlace a un comando con un nombre distinto, puede agregar parámetros|
|set|Información del entorno de usuario|
|halt|Detiene el sistema|
|reboot|Reinicia el sistema|
|exit|Salida de la sesión de usuario|
|free|Muestra la memoria libre de sistema|
|env|Muestra las variables de entorno del usuario|
|bc|Calculadora en línea de comando|
|mc|Midnight Commander clone de Norton Commander|
|tree|Muestra el Arbol de directorio desde donde está parado el usuario|
|clear|Limpia la pantalla|
|echo ‘Hola mundo’|Saca por pantalla hola mundo|1
-n
|Comando|Utilidad| |—|—| |lscpu|Muestra info del Hard y Soft| |lsblk|Muestra los dispositivos y el punto de montaje| |lspci|Muestra periféricos conectados a la máquina| |lsusb|Muestra puertos usb|
|Comando|Utilidad| |—|—| |yum rpm|Sistema de paquetes de Red hat, Suse, Centos| |apt deb|Sistema de paquetes Debian, Ubuntu y derivados| |slapt txz|Sistema de paquetes Slackware| |pacman|Sistema de paquetes de ArchLinux| |tar|Empaquedador de archivos sin comprimir| |gzip|Empaquetador y compresor de archivos| |7z|Compresor de archivos universal|
|Comando|Utilidad|
|—|—|
|chmod o+x |Da permisos de ejecución a otros a este archivo|
|chmod g-r 1
archivo
|Elminia permisos de lectura al grupo para este archivo|
|chown 1
archivo
|Cambia el usuario de un archivo|
|chgrp|Cambia el grupo 1
usuario archivo
|
|sha256sum|Algoritmo sha-2 de hash seguro de 256 bits|1
marco
|Comando|Utilidad|
|—|—|
|netstat|Muestra el estado de la red|
|ifconfig|Muestra la configuración de la placa de ethernet|
|iwconfig|Muestra la configuración de la placa de wifi|
|nmap|Muestra los puertos|
|netconf|Muestra la configuración de red|
|ping |Envía una señal a google y espera el regreso|
|ip addr show|Muestra todas las interfaces direcciones IP|
|ip address add xxx.xxx.xxx.xxx dev etc0|Asinga una ip a una tarjeta de red|
|wget file|Baja un archivo|
|dig domino|Obtiene el DNS del dominio|1
host
|Comando|Utilidad| |—|—| |whoami|Que usuario estoy usando| |adduser o useradd|Agrega un nuevo usuario| |userdel|Borra usuario| |su|Cambia de usuario| |passwd|Cambia la contraseña| |who|Muestra los usuarios en el sistema| |id|Datos de identificación del usuario| |groupadd -|Agrega un grupo de usuario| |addgroup|Agrega un grupo|
|Comando|Utilidad|
|—|—|
||Todos los archivos|
|.txt|Todos los archivos con extension txt|
|cat |Muestra todo el contenido de archivo.txt|
|more 1
archivo.txt
|Muestra el contenido de archivo.txt por página|
|head 1
archivo.txt
|Muestra los 10 primeros renglones de archivo.txt|
|tail 1
archivo.txt
|Muestra los 10 últimos renglones de archivo.txt|
|wc|Cuenta el contenido de un fichero 1
archivo.txt
líneas 1
-l
caracteres 1
-c
palabras|
|locale 1
-w
|Localizar un archivo en el sistema|
|find 1
file
|Encontrar un archivo según los parámetros|
|grep |Encontrar un patrón dentro de un archivo|
|grep -E ‘rojo|negro’ | Expresiones regulares|
|tr 1
parámetros
1
'.' '\t'
|Cambiar todos los puntos del archivo.txt por tabulados|
|cut 1
archivo.txt
|Cortar el archivo segun las comas y mostrar el campo 4|
|which 1
-d, -f4
|Muestra la versión de Python|
|column|Encolumna los resultados|
|sed ‘s/esto/aquello/g’|Cambia una cadena por otra|
|sort 1
python
|Ordena una lista de archivos sergún parámetros|
|uniq|En un listado ordenado elimina las cadenas repetidas|
|diff 1
Parámetros
1
archivo.txt
|Muestra las diferencias entre dos archivos|
|xargs|Ejecuta un comando tomando como entrada la salida de un comando anterior|
|wget|Bajar el contenido de un sitio|
|curl|Traer el codigo html de un sitio|1
archivo1.txt
|Comando|Utilidad| |—|—| |cron|Se ejecuta un comando periodicamente un comando| |at|A determinado momento se ejecuta una sola vez este comando|
|Comando|Utilidad|
|—|—|
|ssh |Entra a otra pc por SSH, como Putty en windows|
|ftp|Entra a una pc por protocolo ftp|
|rdesktop|Acceso a otra computadora por Remote Desktop de Windows|
|vnc|Acceso por VNC|1
usuario@host -p
|Comando|Utilidad| |—|—| |htop|Listado ‘Friendly’ de procesos| |top|Listado de procesos por default en todas las distribuciones| |time|Mide el tiempo que tarda un proceso en ejecutarse| |kill|Mata un proceso| |killall|Mata al proceso por su nombre| |ps|procesos del usuario|
|Comando|Utilidad|
|—|—|
|lsblk|Listado de dispositivos montados|
|fdisk|Formatea particiones|
|df |Espacio en Disco ‘-h human readable’|
|dd 1
-h
|Copia todo el disco completo como imagen|
|mount|Monta un sistema de archivos|
|fsck 1
if of
|Estado y corrección del sistema de archivos|1
.fat .ext3
|Comando|Utilidad|
|—|—|
|touch|Crea un archivo|
|vi |Abre archivo.txt con vi, sale con 1
archivo.txt
+wq|1
esc
Awk es todo un lenguaje que se ejecuta línea por línea
|Comando|Utilidad| |—|—|
Keep It Simple, Stupid. Mantenelo simple, estúpido. ↩