Esta Guía rápida de UNIX te servirá para aprovechar al máximo los sistemas operativos Unix, como Darwin de macOS y GNU de Linux, es necesario aprender a utilizar Unix desde la línea de comandos. Guardar comandos de Unix y su uso en la memoria puede ser una carga. También es difícil distinguir en la documentación oficial qué comandos son importantes y cuáles no tanto.
Esta hoja de referencia de comandos de Unix tiene como objetivo ayudarle a aprender y perfeccionar fácilmente las operaciones de línea de comandos de Unix de alta prioridad. Cubre comandos esenciales, el editor de texto vi incorporado y scripting de shell básico. Un script de shell es un programa informático diseñado para ejecutarse en terminales de línea de comandos Unix y es un componente clave de la programación en Unix.
¿Te gustaría enterarte de cuando lanzamos descuentos y nuevos cursos?
UNIX
El sistema operativo Unix fue implementado y concebido en 1969 en los laboratorios Bell de AT&T por Joe Ossanna, Douglas Mcllroy, Dennis Ritchie y Ken Thompson en los Estados Unidos. Publicado por primera vez en 1971, Unix estaba escrito íntegramente en lenguaje ensamblador, como era la práctica básica en ese momento. Fue actualizado en lenguaje C por Dennis Ritchie de una manera pionera clave en 1973.
La disponibilidad de una implementación de lenguaje de alto nivel de Unix hizo que su adaptación a distintas plataformas informáticas fuera conveniente. ‘Unix’ era sencillo y elegante, utilizaba lenguaje ‘C’ en lugar de lenguaje ensamblador y su código era reciclable. Como era reciclable, una parte de su código, ahora comúnmente llamado ‘kernel’, se utilizó para desarrollar el sistema operativo y otras funciones y podía utilizarse en diferentes sistemas. Además, su código fuente era de código abierto.
Inicialmente, Unix sólo se encontraba en grandes organizaciones como gobiernos, universidades o grandes corporaciones financieras con mainframes y minicomputadoras (PC es una microcomputadora).
UNIX es considerado el sistema operativo madre de los sistemas operativos, ya que sentó las bases de Linux. Unix está diseñado principalmente para mainframes y se utiliza en empresas y universidades. Mientras que Linux se está convirtiendo rápidamente en un nombre familiar para los usuarios de computadoras, desarrolladores y entornos de servidores. Es posible que deba pagar por un núcleo Unix, mientras que en Linux es gratuito.
Unix el precursos de Linux
Unix es considerado la madre de la mayoría de los sistemas operativos. El diseño de los sistemas Unix se basa en la “Filosofía Unix” que incluye las siguientes características:
- Uso de texto plano para el almacenamiento de datos.
- Sistema de archivos jerárquico.
- Manejo de dispositivos y algunos tipos específicos de comunicación entre procesos (IPC) como archivos.
- Utilizando una gran cantidad de herramientas de software.
- Múltiples programas pequeños, simples y modulares que se pueden conectar entre sí mediante un intérprete de línea de comandos utilizando tuberías, en contraste con el uso de un único programa monolítico que comprende todas las mismas funcionalidades.
Vale la pena mencionar aquí la siguiente cita sobre la filosofía Unix:
“Aunque esa filosofía no se puede resumir en una sola frase, ya que su núcleo es la idea de que el poder de un sistema proviene más de las relaciones entre los programas que de los programas en sí. Muchos programas UNIX hacen cosas bastante triviales de forma aislada, pero, combinados con otros programas, se convierten en herramientas generales y útiles”
Comenzó como un proyecto de una sola persona bajo la dirección de Ken Thompson de Bell Labs. Continuó hasta convertirse en el sistema operativo más utilizado. Unix es un sistema operativo propietario.
Ejemplos de sistemas operativos Unix son Solaris y HP-UX. Los mayores distribuidores de sistemas UNIX son IBM, HP y SUN.
El sistema operativo Unix funciona con CLI (interfaz de línea de comandos), pero recientemente se han producido desarrollos para la interfaz gráfica de usuario en sistemas Unix. Unix es un sistema operativo muy popular en empresas, universidades, grandes empresas, etc.
Componentes de Unix
El programa de control maestro de Unix es su núcleo. El núcleo tiene control total sobre todo el sistema. Tiene subsistemas que ofrecen servicios para el manejo del sistema de archivos, el manejo de recursos, la gestión de memoria, el inicio y la detención de programas y algunas otras tareas básicas de bajo nivel.
El núcleo es el corazón del sistema operativo y actúa como interfaz entre el usuario y el hardware. Cada subsistema del núcleo tiene ciertas características, como concurrencia, memoria virtual, paginación y un sistema de archivos virtual.
En las capas externas de la arquitectura, tenemos el shell, los comandos y los programas de aplicación. El shell es la interfaz entre el usuario y el núcleo. El shell y el usuario escriben los comandos, los interpretan y llaman a los programas informáticos en consecuencia.
El sistema Unix consta de varios componentes que en realidad estaban empaquetados juntos. Al añadir el entorno de desarrollo, los documentos, las bibliotecas y el código fuente modificado y portable para cada uno de estos componentes, junto con el núcleo de un sistema operativo, Unix se convirtió en un sistema de software autónomo.
Las ubicaciones de los sistemas de archivos y los nombres de los componentes de Unix han cambiado sustancialmente a lo largo de la historia del sistema. No obstante, muchos consideran que la implementación de la versión 7 tiene la estructura inicial de Canonical:
La versión 7 de Unix
- Kernel: Está compuesto de muchos subcomponentes y su código fuente reside en el directorio /usr/sys.
- Entorno de desarrollo: Las versiones recientes de Unix incluyen un entorno de desarrollo aceptable para rehacer todo el sistema desde el código fuente.
- Comandos: Unix hace una distinción entre programas o comandos de nivel de usuario para el mantenimiento y operación del sistema, comandos de utilidad generales y software de propósito más general como paquetes de composición tipográfica y formato de texto.
- Documentación: Unix fue uno de los primeros sistemas operativos en agregar toda su documentación en línea dentro del formato legible por máquinas.
Características destacadas de Unix
Hay varias características destacadas de Unix, algunas de las cuales se enumeran a continuación:
- Es un sistema multiusuario donde los mismos recursos pueden ser compartidos por diferentes usuarios.
- Proporciona multitarea, donde cada usuario puede ejecutar muchos procesos al mismo tiempo.
- Fue el primer sistema operativo escrito en un lenguaje de alto nivel (lenguaje C), lo que facilitó su portabilidad a otras máquinas con mínimas adaptaciones.
- Proporciona una estructura de archivos jerárquica que permite un acceso más fácil y un mantenimiento de los datos.
- Unix tiene funciones de red integradas para que diferentes usuarios puedan intercambiar información fácilmente.
- La funcionalidad de Unix se puede ampliar a través de programas de usuario creados en una interfaz de programación estándar.
Comandos esenciales
Con estos comandos, puede obtener información crítica sobre su máquina Unix y realizar operaciones clave.
Información del sistema
Estos proporcionan información sobre su máquina Unix.
DOMINIO | DESCRIPCIÓN |
uname | Muestra la información del sistema Unix. |
uname -a | Información detallada del sistema Unix |
uname -r | Información de lanzamiento del kernel, como la versión del kernel |
uptime | Muestra cuánto tiempo está funcionando el sistema y carga información. |
who | Muestra quién ha iniciado sesión. |
w | Muestra qué usuarios están en línea y qué están haciendo. |
users | Listar los usuarios actuales. |
whoami | Muestra con qué usuario has iniciado sesión. |
su | Superusuario; use esto antes de un comando que requiera acceso de root, p.su shutdown |
cal | Mostrar calendario donde está resaltada la fecha actual. |
date | Muestra la fecha y hora actuales de la máquina. |
halt | Detenga el sistema inmediatamente. |
shutdown | Apague el sistema. |
reboot | Reinicie el sistema. |
last reboot | Mostrar historial de reinicio. |
man COMMAND | Muestra el manual de un COMMAND determinado. Para salir del manual, presione “q”. |
Redirección de entrada/salida
Son útiles para registrar la salida del programa y los mensajes de error.
DOMINIO | DESCRIPCIÓN |
echo TEXT | Muestra una línea de TEXT o el contenido de una variable. |
echo -e TEXT | También interpreta caracteres de escape en TEXT, p.e. \n → nueva línea, \b → barra invertida, \t → tabulación. |
echo -n TEXT | Omite la nueva línea final de TEXT. |
cmd1 | cmd2 | | es el carácter de barra vertical; alimenta la salida del comando cmd1 y la envía al comando cmd2, p.e. ps aux | grep python3. |
cmd > file | La salida de cmd se redirige a file. Sobrescribe el contenido preexistente de file. |
cmd > /dev/null | Suprime la salida de cmd. |
cmd >> file | La salida de cmd se adjunta a file. |
cmd < file | La entrada de cmd se lee desde file. |
cmd << delim | La entrada de cmd se lee desde la entrada estándar con el carácter delimitador delim para indicarle al sistema dónde terminar la entrada. Ejemplo para contar el número de líneas de entrada ad-hoc:Por lo tanto, solo hay 4 líneas en la entrada estándar delimitadas por . wc -l << EOF > I like > apples > and > oranges. > EOF 4 EOF |
Gestión de archivos
En los siguientes comandos: X puede referirse a un solo archivo, una cadena que contiene un símbolo comodín que hace referencia a un conjunto de múltiples archivos, p. file*.txt, o la salida de flujo de un comando canalizado (en cuyo caso la sintaxis sería X | command en lugar de command X); Y es un directorio único; A y B son cadenas de ruta de archivos/directorios.
DOMINIO | DESCRIPCIÓN |
* | Símbolo comodín para longitud variable, p. *.txt se refiere a todos los archivos con la extensión TXT. |
? | Símbolo comodín que hace referencia a un solo carácter, p. Doc?.docx puede referirse a Doc1.docx, DocA.docx, etc. |
ls | Enumere los nombres de los archivos y subcarpetas en el directorio actual. Las opciones incluyen -l, -a, -t que se pueden combinar, p. -alt. |
ls -l | También muestre detalles de cada elemento mostrado, como los permisos de usuario y la hora/fecha en la que el elemento se modificó por última vez. |
ls -a | También muestra archivos/carpetas ocultos. Puede combinarse con ls -l para formar ls -al. |
ls -t | Ordene los archivos/carpetas según la hora/fecha de la última modificación, comenzando con el elemento modificado más recientemente. |
ls X | Listar los archivos |
cd Y | Cambiar directorio a Y. Instancias especiales de Y: . — directorio actual .. — directorio principal |
cd | Al directorio $HOME |
cd .. | Subir un nivel hasta la carpeta adjunta/directorio principal |
cd /etc | Al directorio /etc |
cmp A B | Compare dos archivos A y B para ver si son iguales. No hay salida si A y B son idénticos; en caso contrario, genera caracteres y números de línea. |
diff A B | Compare dos archivos A y B para ver las diferencias. Genera la diferencia. |
pwd | Muestra la ruta del directorio de trabajo actual. |
mkdir X | Crea un nuevo directorio llamado X dentro del directorio actual. |
mv A B | Mover un archivo de la ruta A a la ruta B. También se utiliza para cambiar el nombre de archivos. Ejemplos: Moverse entre directorios folder1 y folder2:< /span>.El nuevo nombre del archivo es Cambiar el nombre de un archivo: . mv ./folder1/file.txt ./folder2 El nombre del archivo permanecerá sin cambios y su nueva ruta será ./folder2/file.txt mv new_doc.txt expenses.txt expenses.txt |
cp A B | Copiar un archivo de la ruta A a la ruta B. Uso similar a mv tanto para mover a un nuevo directorio como para cambiar simultáneamente el nombre del archivo en su nueva ubicación. Ejemplo: cp ./f1/file.txt ./f2/expenses.txt simultáneamente copia el archivo file.txt a la nueva ubicación con un nuevo nombre expenses.txt. |
cp -r Y Z | Copie recursivamente un directorio Y y su contenido a Z. Si Z existe, copie la fuente Y en él; de lo contrario, cree Z y Y se convierte en su subdirectorio con el contenido de Y. |
rm X | Eliminar (eliminar) X permanentemente. |
rm -r Y | Eliminar recursivamente un directorio Y y su contenido |
rm -f X | Eliminar archivo a la fuerza X sin indicaciones ni confirmación |
rm -rf Y | Eliminar por la fuerza el directorio Y y su contenido de forma recursiva |
rmdir Y | Eliminar un directorio Y de forma permanente, siempre que Y esté vacío. |
du | Mostrar tamaños de archivos/carpetas en el disco. |
du -ah | Uso del disco en formato legible por humanos (KB, MB, etc.) |
du -sh | Uso total del disco del directorio actual |
df | Mostrar espacio libre en disco. |
du -h | Espacio libre y usado en sistemas de archivos montados |
du -i | Inodos gratuitos y usados en sistemas de archivos montados |
open X | Abrir X en su programa predeterminado. |
open -e X | Se abre X en el editor de texto predeterminado (macOS: TextEdit) |
touch X | Crea un archivo vacío X o actualiza los tiempos de acceso y modificación de X. |
cat X | Ver contenido de X. |
cat -b X | También muestra los números de línea. |
wc X | Mostrar recuento de palabras de X. |
head X | Muestra las primeras líneas de X. Si se especifica más de un archivo, cada archivo está precedido por un encabezado que consta de la cadena “” donde “” es el nombre del archivo.==> X <==X |
head -n 4 X | Muestra las primeras 4 líneas de X. |
ls *.c | head -n 5 | Muestra los primeros 5 elementos de una lista de *.c archivos en el directorio actual. |
tail X | Muestra la última parte de X. Si se especifica más de un archivo, cada archivo está precedido por un encabezado que consta de la cadena “” donde “” es el nombre del archivo.==> X <==X |
tail -n +1 X | Muestra el contenido completo de los archivos X especificados, con el encabezado de los respectivos nombres de archivo |
less | Leer un archivo con navegación hacia adelante y hacia atrás. A menudo se utiliza con tuberías, p.cat file.txt | less |
ln -s A S | Crear enlace simbólico de la ruta A al nombre del enlace S. |
Buscar y filtrar
DOMINIO | DESCRIPCIÓN |
grep patt X | Busca un patrón de texto patt en X. Comúnmente utilizado con tuberías, p. ps aux | grep python3 filtra los procesos que contienen python3 de todos los procesos en ejecución de todos los usuarios. |
grep -v patt X | Las líneas de retorno no coinciden con las especificadas patt. |
grep -l patt X | Solo los nombres de los archivos que contienen patt se escriben en la salida estándar. |
grep -i patt X | Realizar coincidencias que no distingan entre mayúsculas y minúsculas. Ignore el caso de patt. |
find | Encuentra archivos. |
find /path/to/src -name “*.sh” | Busca todos los archivos en /path/to/src que coincidan con el patrón “*.sh” en el nombre del archivo. |
find .. -size +2M | Busque todos los archivos en el directorio principal de más de 2 MB. |
locate name | Buscar archivos y directorios por name. |
sort X | Organizar líneas de texto en X alfabéticamente o numéricamente. |
Archivo
DOMINIO | DESCRIPCIÓN |
tar | Manipular archivos con extensión TAR. |
tar -cf archive.tar Y | Cree un archivo TAR llamado archive.tar que contenga Y. |
tar -xf archive.tar | Extraiga el archivo TAR llamado archive.tar. |
tar -tf archive.tar | Enumere el contenido del archivo TAR denominado archive.tar. |
tar -czf archive.tar.gz Y | Cree un archivo TAR comprimido con gzip llamado archive.tar.gz que contenga Y. |
tar -xzf archive.tar.gz | Extraiga el archivo TAR comprimido con gzip llamado archive.tar.gz. |
tar -cjf archive.tar.bz2 Y | Cree un archivo TAR comprimido con bzip2 llamado archive.tar.bz2 que contenga Y. |
tar -xjf archive.tar.bz2 | Extraiga el archivo TAR comprimido con bzip2 llamado archive.tar.bz2. |
zip -r Z.zip Y | Comprimir Y al archivo ZIP Z.zip. |
unzip Z.zip | Descomprima Z.zip en el directorio actual. |
Transferencia de archivos
Estos son para cargar y descargar archivos.
DOMINIO | DESCRIPCIÓN |
ssh user@access | Conéctese a access como user. |
ssh access | Conéctese a access como su nombre de usuario local. |
ssh -p port user@access | Conéctate a access como user usando port. |
scp [user1@]host1:[path1] [user2@]host2:[path2] | Inicie sesión en hostN como userN mediante el protocolo de copia segura para N=1,2. path1 y path2 pueden ser locales o remotos. Si no se especifican user1 y user2, se utilizará su nombre de usuario local. |
scp -P port [user1@]host1:[path1] [user2@]host2:[path2] | Conéctese a hostN como userN usando el puerto para N=1,2. |
scp -r [user1@]host1:[path1] [user2@]host2:[path2] | Copia recursivamente todos los archivos y directorios de path1 a path2. |
sftp [user@]access | Inicie sesión en access como user mediante un protocolo seguro de transferencia de archivos. Si no se especifica user, se utilizará su nombre de usuario local. |
sftp access | Conéctese a access como su nombre de usuario local. |
sftp -P port user@access | Conéctate a access como user usando port. |
Permisos de archivos
No todos los archivos son igualmente accesibles. Para evitar manipulaciones no deseadas, es posible que algunos archivos de su dispositivo sean de solo lectura.
Permisos de archivos en Unix
DOMINIO | DESCRIPCIÓN |
chmod permission file | Cambiar permisos de un archivo o directorio. Los permisos pueden tener el formato [u/g/o/a][+/-/=][r/w/x] (consulte los ejemplos a continuación) o un número octal de tres dígitos. |
chown user2 file | Cambiar el propietario de un archivo a user2. |
chgrp group2 file | Cambiar el grupo de un archivo a group2. |
Ejemplos de uso:
- chmod +x testfile→ permitir que todos los usuarios ejecuten el archivo
- chmod u-w testfile→ prohibir al usuario actual escribir o cambiar el archivo
- chmod u+wx,g-x,o=rx testfile→ agregue simultáneamente escritura y amp; ejecute permisos para el usuario, elimine el permiso de ejecución del grupo y establezca los permisos de otros usuarios para que solo lean y escriban.
Representación numérica
OCTAL | PERMISO(S) | EQUIVALE A LA APLICACIÓN DE |
0 | no permisos | -rwx |
1 | Sólo permiso de ejecución | =x |
2 | Sólo permiso de escritura | =w |
3 | Permisos de escritura y ejecución únicamente: 2 + 1 = 3 | =wx |
4 | Sólo permiso de lectura | =r |
5 | Permisos de lectura y ejecución únicamente: 4 + 1 = 5 | =rx |
6 | Permisos de lectura y escritura únicamente: 4 + 2 = 6 | =rw |
7 | Todos los permisos: 4 + 2 + 1 = 7 | =rwx |
Ejemplos
- chmod 777 testfile→ permitir que todos los usuarios ejecuten el archivo
- chmod 177 testfile → restringir el usuario actual (u) a solo ejecución, mientras que el grupo (g) y otros usuarios (o) tener permisos de lectura, escritura y ejecución
- chmod 365 testfile → usuario (u) solo puede escribir y ejecutar; grupo (g), solo lectura y escritura; otros (o), solo lectura y ejecución.
Gestión de proceso
Lo siguiente recuerda a las funciones del Administrador de tareas de Windows, pero en la línea de comando.
DOMINIO | DESCRIPCIÓN |
& | Agregue este carácter al final de un comando/proceso para ejecutarlo en segundo plano. |
ps | Mostrar estado del proceso. A menudo se utiliza con grep p. ps aux | grep python3 muestra información sobre los procesos que involucran a python3. Significado de aux:< a i=6> = mostrar procesos para todos los usuarios = mostrar la columna de usuario o propietario en la salida = mostrar procesos no conectados a una terminal a u x |
ps -e ps -A | Cualquiera de estos dos comandos imprime todos los procesos en ejecución en el sistema. |
ps -ef | Imprimir descripción detallada. |
ps -U root -u root | Mostrar todos los procesos que se ejecutan en la cuenta root. |
ps -eo pid,user,command | Muestra solo las columnas PID, USUARIO y COMANDO en ps salida. |
top | Muestra información ordenada sobre los procesos. |
kill PID | Elimina un proceso especificado por su ID de proceso PID, que puedes obtener usando el comando ps. |
lsof | Enumere todos los archivos abiertos en el sistema. (Este comando le ayuda a identificar qué archivos y procesos le impiden expulsar con éxito una unidad externa). |
Redes
Estos comandos regulan cómo su máquina Unix se comunica con otras computadoras, como el enrutador de la red de área local (LAN) o sitios web externos.
DOMINIO | DESCRIPCIÓN |
ifconfig | Mostrar todas las interfaces de red con direcciones IP |
netstat | Imprime sockets abiertos de conexiones de red, tablas de enrutamiento, estadísticas de interfaz, conexiones enmascaradas y membresías de multidifusión. Este comando a menudo se canaliza con less comando: p.ej. netstat -a | less |
netstat -a | Muestra enchufes tanto de escucha como de no escucha. |
netstat -l | Muestra solo los sockets de escucha, que se omiten de forma predeterminada. |
ping host | Enviar solicitud de eco ICMP a host, que puede ser un nombre simbólico, nombre de dominio o dirección IP. |
whois domain | Mostrar información whois de domain. |
dig domain | Mostrar información DNS para domain. |
host domain | Mostrar dirección IP DNS para domain. |
wget LINK | Descargar desde ubicación LINK. |
curl LINK | Muestra la fuente HTML de LINK. |
Editor Vi: comandos básicos
Integrado en los sistemas Unix, vi (o vim) es un editor visual de línea de comandos. Para una manipulación sencilla de archivos de texto, los siguientes comandos serán suficientes.
En la terminal Unix:
DOMINIO | DESCRIPCIÓN |
vi X | Cree un nuevo archivo X en el editor vi o ábralo X si X ya existe. |
vi -R X view X | Abrir un archivo existente X en modo de solo lectura. |
Mientras usa el editor vi (modo comando):
DOMINIO | DESCRIPCIÓN |
:q | Salga del editor vi. |
:q! | Salga del editor vi sin guardar los cambios. |
:w | Guardar cambios. |
:w filename | Guarde el archivo como nombre de archivo. |
:wq | Guarde los cambios y salga del editor vi. |
i | Ingrese al modo de inserción y modifique el archivo abierto. Para volver al modo de comando y usar los otros comandos en esta tabla, presione la tecla ESC. |
o | Ingrese al modo de inserción y agregue una nueva línea debajo del cursor. |
x | Elimina el carácter debajo de la ubicación del cursor. |
dd | Elimina la línea donde se encuentra el cursor. |
r | Reemplace el carácter debajo de la ubicación del cursor con la tecla que el usuario presiona a continuación. |
yy | Copie la línea actual. |
p | Pegue la línea que se copió debajo del cursor. |
0 | Ir al principio de la línea. |
$ | Ve al final de la línea. |
h,j,k,l | Mueva el cursor hacia la izquierda, abajo, arriba y derecha respectivamente. |
G | Salta al primer carácter de la última línea del archivo. |
gg | Salta al primer carácter de la primera línea del archivo. |
/foo | Busque instancias de “foo” en el archivo abierto. |
:%s/foo/bar | Reemplace cada instancia de “foo” con “bar” en el archivo abierto. |
Programación de Shell: comandos básicos
La extensión de archivo para los scripts de shell es .sh.
DOMINIO | DESCRIPCIÓN |
echo $VAR | Mostrar el contenido de una variable. |
read VAR | Obtenga la entrada estándar y guárdela en la variable VAR. |
# | Designa todo el texto después de # en la misma línea como comentarios (no ejecutados). |
#!/bin/sh | Alertar al sistema que se está ejecutando un script de shell. Se utiliza como primera línea del script de shell. |
variables
Los nombres de variables de Shell válidos contienen caracteres alfanuméricos [A-Z, a-z, 0-9] y/o guión bajo (_). La variable debe comenzar con un carácter alfabético y suele estar en mayúsculas.
DOMINIO | DESCRIPCIÓN |
VAR_NAME=VALUE | Defina una variable VAR_NAME y asígnele un VALUE. El valor puede ser un número o una cadena encerrada entre comillas dobles (“). Ejemplos: PRICE=100 PERSON=”John Smith” |
readonly VAR_NAME | Haga que la variable VAR_NAME sea de solo lectura. |
unset VAR_NAME | Eliminar la variable VAR_NAME. |
$VAR1$VAR2 | Concatenar los valores de las variables $VAR1 y $VAR2. |
Variables reservadas
Al utilizar cualquiera de los siguientes en sus scripts de shell, puede llamar valores de variables especiales en Unix.
VARIABLE | DESCRIPCIÓN |
$0 | Nombre de archivo del script de shell actual. |
$1, $2, $3, …, ${10}, ${11}, … | Referencias a los argumentos proporcionados al script: $1 es el primer argumento, $2 es el segundo argumento, y así sucesivamente. |
$# | El número de argumentos proporcionados a un script. |
$* | Haga referencia a argumentos separados por espacios. Aquí, “a b c” d e se consideran 5 argumentos separados. |
“$@” | Consulte los argumentos agrupados por las comillas dobles que los encierran. Aquí, “a b c” d e se consideran 3 argumentos. |
$? | El estado de salida del último comando ejecutado: 0 para éxito y 1 u otros números para varios errores. |
$$ | ID de proceso del script de shell. |
$! | Número de proceso del último comando en segundo plano. |
Matrices
En shell ksh:set -A ARRAY_NAME value1 value2 … valueN
En bash shell:ARRAY_NAME=(value1 … valueN)
Acceder a los valores de la matriz (indexados a cero, es decir, el primer elemento está en [0], no en [1]):
VARIABLE DE MATRIZ | DESCRIPCIÓN |
${ARRAY_NAME[index]} | Muestra el valor en [index] de ARRAY_NAME. |
${ARRAY_NAME[*]} | Mostrar todos los valores de la matriz ARRAY_NAME. |
${ARRAY_NAME[@]} | Igual que ${ARRAY_NAME[*]}. |
Operadores Básicos
Se utilizan en los expressions en toma de decisiones y control de bucle.
Para operadores aritméticos y relacionales, los argumentos se aplican a ambos lados de cada operador, separados por espacios, p.e. 2 + 2 (no 2+2).
OPERADOR ARITMÉTICO | DESCRIPCIÓN |
+ | Suma |
– | Sustracción |
* | Multiplicación |
/ | División |
% | Módulo |
= | Asignación |
== | Igualdad |
!= | Desigualdad |
OPERADOR RELACIONAL | DESCRIPCIÓN |
-eq | Igual a |
-ne | No igual a |
-gt | Mas grande que |
-lt | Menos que |
-ge | Mayor qué o igual a |
-le | Menos que o igual a |
OPERADOR BOOLEANO | DESCRIPCIÓN |
! | Negación lógica/no: invierte la condición verdadero/falso |
-o | O lógico (inclusive): devuelve verdadero si alguno de los operandos es verdadero |
-a | AND lógico: devuelve verdadero si todos los operandos son verdaderos |
OPERADOR DE CADENA | DESCRIPCIÓN |
= | Devuelve verdadero si los dos operandos en ambos lados de = son iguales. |
!= | Devuelve verdadero si los dos operandos en ambos lados de != no son iguales. |
-z $STRING_VAR | Devuelve verdadero si $STRING_VAR tiene una longitud cero. |
-n $STRING_VAR | Devuelve verdadero si $STRING_VAR no tiene una longitud cero. |
[ $STRING_VAR ] | Devuelve verdadero si $STRING_VAR no es la cadena vacía. |
A continuación, FILE es una variable que contiene una cadena a una ruta de archivo/directorio.
OPERADOR DE ARCHIVO | DESCRIPCIÓN |
-d $FILE | Devuelve verdadero si FILE es un directorio. |
-f $FILE | Devuelve verdadero si FILE es un archivo normal en lugar de un directorio o archivo especial. |
-r $FILE | Devuelve verdadero si FILE es legible. |
-w $FILE | Devuelve verdadero si FILE se puede escribir. |
-x $FILE | Devuelve verdadero si FILE es ejecutable. |
-e $FILE | Devuelve verdadero si FILE existe, incluso si FILE es un directorio. |
-s $FILE | Devuelve verdadero si FILE el tamaño es mayor que cero. |
Toma de decisiones
TIPOS | SINTAXIS |
if…fi | if [ expression ] then Declaraciones que se ejecutarán si expression es verdadera fi |
if…else…fi | if [ expression ] then Declaraciones que se ejecutarán si expression es verdadera else Declaraciones que se ejecutarán si expression es falso fi |
if…elif…else…fi | if [ expression1 ] then Declaraciones que se ejecutarán si expression1 es verdaderaDeclaraciones que se ejecutarán si es verdaderoDeclaraciones que se ejecutarán si es verdaderaDeclaraciones que se ejecutarán si ninguna de las dado s es verdadero elif [ expression2 ] then expression2 elif [ expression3 ] then expression3 else expression fi |
case…esac | case word in pattern1) Declaraciones que se ejecutarán si pattern1 coincide Declaraciones que se ejecutarán si coincide Declaraciones que se ejecutarán si coincide con Condición predeterminada que se ejecutaráword ;; pattern2) pattern2word ;; pattern3) pattern3word ;; *) ;; esac |
Control de bucle
TIPO DE BUCLE | SINTAXIS |
for | for VAR in word1 word2 … wordN do Declaraciones que se ejecutarán para cada word done Nota: word1 word2 … wordN puede ser una lista de números (por ejemplo, 1 2 3 4 5) o un conjunto de rutas (por ejemplo, /home/folder*/app/). |
while | while command do Declaraciones que se ejecutarán si el comando es verdadero done Bucle infinito: utilice : como comando, es decir, while :. |
until | until command do Declaraciones que se ejecutarán hasta que command sea verdadera done |
select | Disponible en ksh y bash pero no en sh. Se comporta como un for-bucle con los números reemplazados por los word.Declaraciones que se ejecutarán para cada < /span> select VAR in word1 word2 … wordN do word done |
CONTROL DE FLUJO | SINTAXIS |
break | Salir de un bucle. |
continue | Salga de la iteración actual del bucle y continúe con la siguiente iteración. |
Ctrl+C | Combinación de teclas para cancelar un proceso en ejecución |
Ctrl+L | Combinación de teclas para eliminar el comando anterior y su salida (macOS: comando+L) |
Conclusión
Este artículo cubre todos los comandos básicos que necesita saber cuando aprende a operar Unix desde la línea de comandos. Esperamos que esta hoja de trucos de comandos de Unix sea una excelente adición a su conjunto de herramientas de programación y ciberseguridad.
Preguntas frecuentes
¿Por qué utilizar comandos Unix?
Operar procesos individuales y por lotes en Unix utilizando la interfaz de línea de comandos, como tareas administrativas y de resolución de problemas.
¿Cuántos comandos tiene Unix?
Varía según el sistema operativo, pero este comando revelará la cantidad de comandos Unix aplicables a su máquina: ls -1 /bin /usr/bin/ /usr/sbin / /sbin/ | baño -l
¿Cómo se escribe un comando en Unix?
Escriba el texto del comando en la aplicación Terminal (disponible en macOS, Linux). Cuando haya terminado de escribir, presione ENTRAR para ejecutar el comando.
¿Cuáles son los cinco comandos de Linux?
Aquí hay cinco comandos de Linux que generalmente no funcionan en Unix: ip a en Linux (igual que Unix < a i=3>ifconfig); ufw (firewall netfilter en Ubuntu Linux); instaladores de paquetes apt, yum, etc.; atop, una herramienta de monitoreo del sistema para ver los procesos en ejecución.
¿Qué es UNIX?
Es un sistema operativo portátil que está diseñado tanto para realizar múltiples tareas de manera eficiente como para funciones multiusuario. Su portabilidad le permite ejecutarse en diferentes plataformas de hardware. Fue escrito en C y permite a los usuarios realizar el procesamiento y el control bajo un shell.
¿Qué son los filtros?
El término filtro se utiliza a menudo para referirse a cualquier programa que pueda tomar una entrada de la entrada estándar, realizar alguna operación en esa entrada y escribir los resultados en la salida estándar. Un filtro también es cualquier programa que se pueda utilizar entre otros dos programas en una secuencia de comandos.
¿Cuál es la sintaxis típica que se sigue al emitir comandos en el shell?
La sintaxis de comando típica bajo el shell de UNIX sigue el formato:
Comando [-argumento] [-argumento] [–argumento] [archivo]
¿Hay alguna manera de borrar todos los archivos del directorio actual, incluidos todos sus subdirectorios, usando un solo comando?
Sí, es posible. Para ello, utilice “rm –r *”. El comando rm sirve para eliminar archivos. La opción –r borrará directorios y subdirectorios, incluidos los archivos que contengan. El asterisco representa todas las entradas.
¿Cuál es la principal diferencia entre las opciones –v y –x para configurar?
La opción –v repite cada comando antes de que se hayan sustituido los argumentos y las variables; la opción –x repite los comandos después de que se haya realizado la sustitución.
¿Qué es Kernel?
El núcleo es el programa maestro del sistema operativo UNIX que controla los recursos del ordenador, asignándolos a distintos usuarios y realizando distintas tareas. Sin embargo, el núcleo no trata directamente con el usuario, sino que inicia un programa interactivo independiente, llamado shell, para cada usuario cuando inicia sesión.
¿Qué es Shell?
Un shell actúa como interfaz entre el usuario y el sistema. Como intérprete de comandos, el shell toma los comandos y los prepara para su ejecución.
¿Cuáles son las características principales de Korn Shell?
- Mecanismo de historial con un editor incorporado que simula emacs o vi
- aritmética de números enteros incorporada
- Capacidades de manipulación de cadenas
- alias de comando
- matrices
- control de trabajo
¿Cuáles son algunas conchas comunes y cuáles son sus indicadores?
- sh – caparazón de Bourne
- csh – C-Shell
- bash – Bourne otra vez Shell
- tcsh – C Shell mejorado
- zsh – Concha Z
- ksh – cáscara de maíz
Diferenciar multiusuario de multitarea.
Multiusuario significa que más de una persona puede utilizar la computadora al mismo tiempo. Multitarea significa que incluso un solo usuario puede hacer que la computadora trabaje en más de una tarea o programa al mismo tiempo.
¿Qué es la sustitución de mando?
La sustitución de comandos es uno de los pasos que se realizan cada vez que el shell procesa comandos. El shell ejecuta solo aquellos comandos que están entre comillas invertidas. Esto reemplazará la salida estándar del comando y se mostrará en la línea de comandos.
¿Qué es un directorio?
Cada archivo se asigna a un directorio. Un directorio es una forma especializada de archivo que contiene una lista de todos los archivos que contiene.
¿Qué es un inodo?
Un inodo es una entrada creada en una sección del disco reservada para un sistema de archivos. El inodo contiene casi toda la información sobre un archivo. Incluye la ubicación en el disco donde comienza el archivo, el tamaño del archivo, cuándo se utilizó por última vez, cuándo se modificó por última vez, cuáles son los distintos permisos de lectura, escritura y ejecución, quién es el propietario del archivo y otra información.
Tienes un archivo llamado tonky en el directorio honky. Luego agregas material nuevo a tonky. ¿Qué cambios se producen en el directorio, el inodo y el archivo?
La entrada del directorio no se modifica, ya que el nombre y el número de inodo permanecen inalterados. En el archivo de inodo, se actualizan el tamaño del archivo, la hora del último acceso y la hora de la última modificación. En el archivo mismo, se agrega el nuevo material.
Describe los sistemas de archivos en UNIX
Para comprender los sistemas de archivos en UNIX es necesario saber cómo se almacenan los archivos y los inodos en un sistema. Lo que sucede es que se reserva un disco o una parte de un disco para almacenar los archivos y las entradas de inodo. La unidad funcional completa se denomina sistema de archivos.
Preguntas de entrevistas sobre Unix para personas con experiencia
Diferenciar una ruta relativa de una ruta absoluta.
La ruta relativa se refiere a la ruta relativa a la ruta actual. Por otro lado, una ruta absoluta se refiere a la ruta exacta a la que se hace referencia desde el directorio raíz.
Explique la importancia de los directorios en un sistema UNIX
Los archivos de un directorio pueden ser un directorio en sí mismo; se lo llamaría un subdirectorio del directorio original. Esta capacidad permite desarrollar una estructura de directorios y archivos en forma de árbol, lo cual es crucial para mantener un esquema organizativo.
Describa brevemente las responsabilidades de Shell
- ejecución del programa
- sustitución de variables y nombres de archivos
- Redirección de E/S
- Conexión de tubería
- control del medio ambiente
- lenguaje de programación interpretado
¿Qué son las variables de shell?
Las variables de shell son una combinación de un nombre (identificador) y un valor asignado que existe dentro del shell. Estas variables pueden tener valores predeterminados o pueden configurarse manualmente mediante el comando de asignación adecuado. Algunos ejemplos de variables de shell son PATH, TERM y HOME.
¿Cuáles son las diferencias entre una llamada al sistema, una función de biblioteca y un comando UNIX?
Una llamada al sistema es parte de la programación del núcleo. Una función de biblioteca es un programa que no forma parte del núcleo pero que está disponible para los usuarios del sistema. Sin embargo, los comandos de UNIX son programas independientes; pueden incorporar tanto llamadas al sistema como funciones de biblioteca en su programación.
¿Qué es Bash Shell?
Es un shell gratuito diseñado para funcionar en el sistema UNIX. Al ser el shell predeterminado para la mayoría de los sistemas basados en UNIX, combina características que están disponibles tanto en C como en Korn Shell.
Enumere algunos de los comandos de red más utilizados en UNIX
- Telnet: se utiliza para inicio de sesión remoto
- ping: una solicitud de eco para probar la conectividad
- su – comando de cambio de usuario
- ftp – protocolo de transferencia de archivos utilizado para copiar archivos
- dedo – comando de recopilación de información
Diferenciar el comando cmp del comando diff.
El comando cmp se utiliza principalmente para comparar dos archivos byte a byte, y luego se muestra la primera discordancia encontrada. Por otro lado, el comando diff se utiliza para indicar los cambios que se deben realizar para que los dos archivos sean idénticos entre sí.
¿Cuál es la utilidad de -l al listar un directorio?
-l, que normalmente se utiliza en comandos de listado como ls, se utiliza para mostrar archivos en formato largo, un archivo por línea. El formato largo hace referencia a información adicional asociada con el archivo, como la propiedad, los permisos, los datos y el tamaño del archivo.
¿Qué es la tubería?
La canalización, representada por el carácter de canalización “|”, se utiliza para combinar dos o más comandos. La salida del primer comando sirve como entrada para el siguiente comando, y así sucesivamente.
¿Qué es un superusuario?
Un superusuario es un tipo especial de usuario que tiene acceso abierto a todos los archivos y comandos de un sistema. Tenga en cuenta que el nombre de usuario del superusuario suele ser root y está protegido por una contraseña de root.
¿Cómo se determina y establece la ruta en UNIX?
Cada vez que ingresas un comando, una variable llamada PATH o path definirá en qué directorio buscará el shell ese comando. En los casos en los que se devolvió un mensaje de error, la razón puede ser que el comando no estaba en tu ruta o que el comando en sí no existe. También puedes configurar manualmente la ruta usando el comando “set path = [directory path]”.
¿Es posible ver información sobre un proceso mientras se está ejecutando?
Cada proceso se identifica de forma única mediante un identificador de proceso. Es posible ver los detalles y el estado de un proceso mediante el comando ps.
¿Cuál es la convención estándar que se sigue al nombrar archivos en UNIX?
Una regla importante a la hora de nombrar archivos es que no se permiten caracteres que tengan un significado especial, como * / & y %. Un directorio, al ser un tipo especial de archivo, sigue la misma convención de nombres que los archivos. Se utilizan letras y números, junto con caracteres como guiones bajos y puntos.
¿Por qué no es aconsejable utilizar root como inicio de sesión predeterminado?
La cuenta raíz es muy importante y, si se utiliza de forma abusiva, puede provocar fácilmente daños en el sistema. Esto se debe a que las medidas de seguridad que normalmente se aplican a las cuentas de usuario no se aplican a la cuenta raíz.
Preguntas y respuestas de entrevistas sobre Unix para personas con más de 5 años de experiencia
¿Para qué sirve el comando tee?
El comando tee hace dos cosas: una es obtener datos de la entrada estándar y enviarlos a la salida estándar; la segunda es redirigir una copia de esos datos de entrada a un archivo que se especificó.
Diferenciar el comando gato del comando más.
Al utilizar el comando cat para visualizar el contenido de un archivo, los datos de gran tamaño que no caben en la pantalla se desplazan sin pausa, lo que dificulta su visualización. Por otro lado, utilizar el comando more es más adecuado en estos casos porque mostrará el contenido del archivo página por página.
¿Qué es el análisis?
El análisis es el proceso de dividir una línea de comandos en palabras. Esto es posible gracias al uso de delimitadores y espacios. En el caso de que el comando contenga tabulaciones o varios espacios, estos se reemplazan por un solo espacio.
¿Qué es PID?
Pid es la abreviatura de Process ID (identificador de proceso). Se utiliza principalmente para identificar todos los procesos que se ejecutan en el sistema UNIX, ya sea que se ejecuten en primer plano o en segundo plano. Cada PID se considera único.
¿Cómo sabe el sistema dónde termina un comando y comienza otro?
Normalmente, el carácter de nueva línea, que se genera con la tecla ENTER o RETURN, actúa como indicador. Sin embargo, el punto y coma y el ampersand también pueden servir como terminadores de comandos.
¿Qué son los terminales virtuales?
Las terminales virtuales son similares a las terminales que has estado usando hasta ahora. Se utilizan para ejecutar comandos y ofrecer entradas. La única diferencia es que no puedes usar el ratón con las terminales virtuales. Por lo tanto, necesitas conocer los atajos del teclado.
Las terminales virtuales permiten que varios usuarios trabajen en distintos programas al mismo tiempo en el mismo equipo. Por eso son una de las características más destacadas de Linux.
¿Qué es la interpretación comodín?
Cuando una línea de comandos contiene caracteres comodín como ‘*’ o ‘?’, el shell los reemplaza con una lista ordenada de archivos cuyo patrón coincide con el comando de entrada. Los caracteres comodín se utilizan para configurar una lista de archivos para su procesamiento, en lugar de especificarlos uno por uno.
¿Cuál es el resultado de este comando? $who | sort –logfile > newfile
En este comando, la salida del comando “who” se convierte en la entrada del comando “sort”. Al mismo tiempo, “sort” abre el archivo de registro, lo organiza junto con la salida del comando “who” y coloca la salida ordenada final en el archivo newfile.
¿Cómo puedo pasar de cualquier tipo de usuario a un tipo de superusuario?
Para cambiar de cualquier tipo de usuario a superusuario, utilice el comando su. Sin embargo, se le solicitará que ingrese la contraseña de superusuario correcta antes de que se le otorguen privilegios de acceso completo.
¿Cuál sería el efecto de cambiar el valor de PATH a: .:/usr/della/bin: /bin: /usr/bin
Esto haría que el shell busque en el directorio /usr/della/bin después de buscar en el directorio actual y antes de buscar en el directorio /bin cuando busque un archivo de comando.
Escriba un comando que muestre los archivos en el directorio actual, en un formato largo y coloreado.
Respuesta: ls -l –color
Escriba un comando que encuentre todos los archivos de texto en un directorio que no contengan la palabra “amazing” en ninguna forma (es decir, debe incluir las palabras Amazing, AMAZING o aMAZINg)
Respuesta:
grep –vi asombroso *.txt
Escriba un comando que muestre el contenido ordenado de un archivo llamado IN.TXT y coloque la salida en otro archivo llamado OUT.TXT, mientras que al mismo tiempo excluye las entradas duplicadas.
Respuesta:
ordenar IN.TXT | uniq > OUT.TXT
Escriba un comando que permita que un sistema UNIX se apague en 15 minutos, después de lo cual realizará un reinicio.
Respuesta:
/sbin/shutdown –r +15
¿Qué comando cambiará su indicador a MYPROMPT?
Para cambiar un mensaje, usamos el comando PS1, como este:
PS1 = ‘MIPROMPT:’
¿Qué hace este comando? comida para gatos 1 > gatito
Respuesta: redirecciona la salida de comida para gatos al archivo kitty; el comando es el mismo que: comida para gatos > kitty
¿Qué problema hay con este script de shell interactivo?
echo ¿Qué mes es éste?read $monthecho $month es un mes tan bueno como cualquier otro.
Respuesta: Inicialmente, el signo de interrogación debe estar separado por un carácter de escape (\?) para que no se interprete como un metacarácter de shell. En segundo lugar, debe leerse mes, no $mes.
Escriba un script de shell que solicite la edad del usuario y luego la repita, junto con algún comentario adecuado.
Respuesta:
echo Hola! ¿Cuál es tu edad?
edad de lectura
echo $age! ¡A esa edad ya estaré obsoleto!
Escriba un script que imprima la información de fecha en este orden: hora, día de la semana, número de día, mes, año (ejemplo de salida: 17:34:51 PDT Sun 17 Feb 2024)
Respuesta:
Establecer ‘fecha’
eco $4 $5 $1 $3 $2 $6
No te detengas, sigue avanzando
Aquí tienes un propósito que debes considerar seriamente: si has querido mejorar tus habilidades en hacking, Ciberseguridad y programación ahora es definitivamente el momento de dar el siguiente paso. ¡Desarrolla tus habilidades aprovechando nuestros cursos a un precio increíble y avanza en tu carrera! El mundo necesita más hackers…
- Cómo conseguir trabajo de hacker en 2024
- Trabaja remoto e internacionalmente como Hacker en 2024
- Se necesitan más Hackers – Hechos y estadísticas de 2024
- Se Necesitan más Hackers – La escasez de habilidades en ciberseguridad está empeorando
- El salario de un hacker – Cuanto se gana como Pentesters/ Infosec
- Las empresas te estan buscando para hacerle frente a los ciberataques
- Cómo convertirse en analista de ciberseguridad
- Inicia en hacking y ciberseguridad como analista SOC
- DevOps vs DevSecOps para Hackers
- DevOps vs DevSecOps para Empresas
¿Te gustaría enterarte de cuando lanzamos descuentos y nuevos cursos?
Sobre los autores
Álvaro Chirou
Yo soy Álvaro Chirou, tengo más de 20 Años de experiencia trabajando en Tecnología, eh dado disertaciones en eventos internacionales como OWASP, tengo más de 1.800.000 estudiantes en Udemy y 100 formaciones profesionales impartidas en la misma. Puedes seguirme en mis redes:
Laprovittera Carlos
Soy Laprovittera Carlos. Con más de 20 años de experiencia en IT brindo Educación y Consultoría en Seguridad de la Información para profesionales, bancos y empresas. Puedes saber más de mi y de mis servicios en mi sitio web: laprovittera.com y seguirme en mis redes:
Hacker de 0 a 100 desde las bases hasta conseguir empleo
¿Quieres iniciarte en hacking y ciberseguridad pero no sabes por dónde empezar? Inicia leyendo nuestra guia gratuita: https://achirou.com/hacker-de-0-a-100-desde-las-bases-hasta-conseguir-empleo/ que te lleva de 0 a 100. Desde los fundamentos más básicos, pasando por cursos, recursos y certificaciones hasta cómo obtener tu primer empleo.
Hemos creado una ruta de 0 a 100. Un plan de desarrollo que va desde las bases: cómo aprender hacking, qué aprender, en qué orden; pasando por las areas técnicas necesarias como Linux, Redes, Programación y los conocimientos necesarios en ciber seguridad, hacking, pentesting hasta la práctica y el inicio laboral: Crear tu propio laboratorio, certificaciones, adquirir experiencia e iniciarse laboralmente.
Este es un mega post. Una guía con más de 250 artículos que te llevaran por el camino del hacker. Esta guía es gratuita y esta creada gracias al esfuerzo y al trabajo combinado de Alvaro Chirou y mío (Laprovittera Carlos).
Creamos esta guía (futuro curso) para que puedas iniciarte en este mundo. Puedes arrancar ahora, GRATIS, solo necesitas un PC, conexión a internet y paciencia (Ser hacker NO ES un camino de la noche a la mañana).
El Hacking y la ciberseguridad es una carrera divertida, emocionante y gratificante que te recompensará y desafiará por igual. Sin embargo, para quienes buscan adentrarse en este campo en auge y en constante evolución, puede resultar difícil saber por dónde empezar. ¡Ahí es donde entra en juego nuestra guía en ciberseguridad!
Esta es la hoja de ruta hacia el trabajo de ciberseguridad de tus sueños. Te ayudará a entender qué conocimientos, habilidades y certificados son necesarios para alcanzar tus metas profesionales y tener una carrera próspera. Si quieres ser consultor de ciberseguridad, analista de malware, evaluador de penetración, analista de SOC o cualquier otro puesto de ciberseguridad, esta guía es lo que necesitas.
SIGUE APRENDIENDO GRATIS CON NUESTRAS GUIAS
- Cómo Iniciarse en Hacking y Ciberseguridad en 2024
- Hacker de 0 a 100 desde las bases hasta conseguir empleo
- Curso de Redes para Hackers
- Curso Gratis de Programación
- Curso Gratis Linux – Capitulo 1 – Introducción a Linux
- Curso Gratis de Redes – Capitulo 1 – Tipos de redes y servicios
- Guía de Hacking y Pentesting capitulo 1: Introducción al Pentesting
- Como iniciarse en TRY HACK ME – Complete Beginner #1
- OSINT #1 Más de 200 Search Tools
- Curso Gratis de Java para Hackers
- Hardware para Hackers – Los mejores 40 Dispositivos de Hacking
- Guía de Flipper Zero – Qué es y para qué sirve
- SIGUE APRENDIENDO GRATIS EN NUESTRO BLOG
Aprende con nuestros más de 100 cursos que tenemos disponibles para vos
Compartimos estos recursos para ayudar a la comunidad de hacking y ciberseguridad. COMPARTE y Siéntete libre de agregar más sugerencias en los comentarios a continuación, respondemos todos y cada uno de los comentarios.
Saludos amigos y happy hacking!!!