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.

Índice

¿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.

DOMINIODESCRIPCIÓN
unameMuestra la información del sistema Unix.
uname -aInformación detallada del sistema Unix
uname -rInformación de lanzamiento del kernel, como la versión del kernel
uptimeMuestra cuánto tiempo está funcionando el sistema y carga información.
whoMuestra quién ha iniciado sesión.
wMuestra qué usuarios están en línea y qué están haciendo.
usersListar los usuarios actuales.
whoamiMuestra con qué usuario has iniciado sesión.
suSuperusuario; use esto antes de un comando que requiera acceso de root, p.su shutdown
calMostrar calendario donde está resaltada la fecha actual.
dateMuestra la fecha y hora actuales de la máquina.
haltDetenga el sistema inmediatamente.
shutdownApague el sistema.
rebootReinicie el sistema.
last rebootMostrar historial de reinicio.
man COMMANDMuestra 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.

DOMINIODESCRIPCIÓN
echo TEXTMuestra una línea de TEXT o el contenido de una variable.
echo -e TEXTTambién interpreta caracteres de escape en TEXT, p.e. \n → nueva línea, \b → barra invertida, \t → tabulación.
echo -n TEXTOmite 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 > fileLa salida de cmd se redirige a file. Sobrescribe el contenido preexistente de file.
cmd > /dev/nullSuprime la salida de cmd.
cmd >> fileLa salida de cmd se adjunta a file.
cmd < fileLa entrada de cmd se lee desde file.
cmd << delimLa 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.

DOMINIODESCRIPCIÓ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.
lsEnumere los nombres de los archivos y subcarpetas en el directorio actual. Las opciones incluyen -l, -a, -t que se pueden combinar, p. -alt.
ls -lTambié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 -aTambién muestra archivos/carpetas ocultos. Puede combinarse con ls -l para formar ls -al.
ls -tOrdene 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 YCambiar directorio a Y. Instancias especiales de Y: .  — directorio actual .. — directorio principal
cdAl directorio $HOME
cd ..Subir un nivel hasta la carpeta adjunta/directorio principal
cd /etcAl directorio /etc
cmp A BCompare 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 BCompare dos archivos A y B para ver las diferencias. Genera la diferencia.
pwdMuestra la ruta del directorio de trabajo actual.
mkdir XCrea un nuevo directorio llamado X dentro del directorio actual.
mv A BMover 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 BCopiar 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 ZCopie 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 XEliminar (eliminar) X permanentemente.
rm -r YEliminar recursivamente un directorio Y y su contenido
rm -f XEliminar archivo a la fuerza X sin indicaciones ni confirmación
rm -rf YEliminar por la fuerza el directorio Y y su contenido de forma recursiva
rmdir YEliminar un directorio Y de forma permanente, siempre que Y esté vacío.
duMostrar tamaños de archivos/carpetas en el disco.
du -ahUso del disco en formato legible por humanos (KB, MB, etc.)
du -shUso total del disco del directorio actual
dfMostrar espacio libre en disco.
du -hEspacio libre y usado en sistemas de archivos montados
du -iInodos gratuitos y usados ​​en sistemas de archivos montados
open XAbrir X en su programa predeterminado.
open -e XSe abre X en el editor de texto predeterminado (macOS: TextEdit)
touch XCrea un archivo vacío X o actualiza los tiempos de acceso y modificación de X.
cat XVer contenido de X.
cat -b XTambién muestra los números de línea.
wc XMostrar recuento de palabras de X.
head XMuestra 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 XMuestra las primeras 4 líneas de X.
ls *.c | head -n 5Muestra los primeros 5 elementos de una lista de *.c archivos en el directorio actual.
tail XMuestra 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 XMuestra el contenido completo de los archivos X especificados, con el encabezado de los respectivos nombres de archivo
lessLeer 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 SCrear enlace simbólico de la ruta A al nombre del enlace S.

Buscar y filtrar

DOMINIODESCRIPCIÓN
grep patt XBusca 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 XLas líneas de retorno no coinciden con las especificadas patt.
grep -l patt XSolo los nombres de los archivos que contienen patt se escriben en la salida estándar.
grep -i patt XRealizar coincidencias que no distingan entre mayúsculas y minúsculas. Ignore el caso de patt.
findEncuentra 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 +2MBusque todos los archivos en el directorio principal de más de 2 MB.
locate nameBuscar archivos y directorios por name.
sort XOrganizar líneas de texto en X alfabéticamente o numéricamente.

Archivo

DOMINIODESCRIPCIÓN
tarManipular archivos con extensión TAR.
tar -cf archive.tar YCree un archivo TAR llamado archive.tar que contenga Y.
tar -xf archive.tarExtraiga el archivo TAR llamado archive.tar.
tar -tf archive.tarEnumere el contenido del archivo TAR denominado archive.tar.
tar -czf archive.tar.gz YCree un archivo TAR comprimido con gzip llamado archive.tar.gz que contenga Y.
tar -xzf archive.tar.gzExtraiga el archivo TAR comprimido con gzip llamado archive.tar.gz.
tar -cjf archive.tar.bz2 YCree un archivo TAR comprimido con bzip2 llamado archive.tar.bz2 que contenga Y.
tar -xjf archive.tar.bz2Extraiga el archivo TAR comprimido con bzip2 llamado archive.tar.bz2.
zip -r Z.zip YComprimir Y al archivo ZIP Z.zip.
unzip Z.zipDescomprima Z.zip en el directorio actual.

Transferencia de archivos

Estos son para cargar y descargar archivos.

DOMINIODESCRIPCIÓN
ssh user@accessConéctese a access como user.
ssh accessConéctese a access como su nombre de usuario local.
ssh -p port user@accessConé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@]accessInicie 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 accessConéctese a access como su nombre de usuario local.
sftp -P port user@accessConé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

DOMINIODESCRIPCIÓN
chmod permission fileCambiar 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 fileCambiar el propietario de un archivo a user2.
chgrp group2 fileCambiar 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

OCTALPERMISO(S)EQUIVALE A LA APLICACIÓN DE
0no permisos-rwx
1Sólo permiso de ejecución=x
2Sólo permiso de escritura=w
3Permisos de escritura y ejecución únicamente: 2 + 1 = 3=wx
4Sólo permiso de lectura=r
5Permisos de lectura y ejecución únicamente: 4 + 1 = 5=rx
6Permisos de lectura y escritura únicamente: 4 + 2 = 6=rw
7Todos 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.

DOMINIODESCRIPCIÓN
&Agregue este carácter al final de un comando/proceso para ejecutarlo en segundo plano.
psMostrar 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 -ACualquiera de estos dos comandos imprime todos los procesos en ejecución en el sistema.
ps -efImprimir descripción detallada.
ps -U root -u rootMostrar todos los procesos que se ejecutan en la cuenta root.
ps -eo pid,user,commandMuestra solo las columnas PID, USUARIO y COMANDO en ps salida.
topMuestra información ordenada sobre los procesos.
kill PIDElimina un proceso especificado por su ID de proceso PID, que puedes obtener usando el comando ps.
lsofEnumere 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.

DOMINIODESCRIPCIÓN
ifconfigMostrar todas las interfaces de red con direcciones IP
netstatImprime 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 -aMuestra enchufes tanto de escucha como de no escucha.
netstat -lMuestra solo los sockets de escucha, que se omiten de forma predeterminada.
ping hostEnviar solicitud de eco ICMP a host, que puede ser un nombre simbólico, nombre de dominio o dirección IP.
whois domainMostrar información whois de domain.
dig domainMostrar información DNS para domain.
host domainMostrar dirección IP DNS para domain.
wget LINKDescargar desde ubicación LINK.
curl LINKMuestra 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:

DOMINIODESCRIPCIÓN
vi XCree un nuevo archivo X en el editor vi o ábralo X si X ya existe.
vi -R X view XAbrir un archivo existente X en modo de solo lectura.

Mientras usa el editor vi (modo comando):

DOMINIODESCRIPCIÓN
:qSalga del editor vi.
:q!Salga del editor vi sin guardar los cambios.
:wGuardar cambios.
:w filenameGuarde el archivo como nombre de archivo.
:wqGuarde los cambios y salga del editor vi.
iIngrese 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.
oIngrese al modo de inserción y agregue una nueva línea debajo del cursor.
xElimina el carácter debajo de la ubicación del cursor.
ddElimina la línea donde se encuentra el cursor.
rReemplace el carácter debajo de la ubicación del cursor con la tecla que el usuario presiona a continuación.
yyCopie la línea actual.
pPegue la línea que se copió debajo del cursor.
0Ir al principio de la línea.
$Ve al final de la línea.
h,j,k,lMueva el cursor hacia la izquierda, abajo, arriba y derecha respectivamente.
GSalta al primer carácter de la última línea del archivo.
ggSalta al primer carácter de la primera línea del archivo.
/fooBusque instancias de “foo” en el archivo abierto.
:%s/foo/barReemplace 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.

DOMINIODESCRIPCIÓN
echo $VARMostrar el contenido de una variable.
read VARObtenga 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/shAlertar 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.

DOMINIODESCRIPCIÓN
VAR_NAME=VALUEDefina 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_NAMEHaga que la variable VAR_NAME sea de solo lectura.
unset VAR_NAMEEliminar la variable VAR_NAME.
$VAR1$VAR2Concatenar 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.

VARIABLEDESCRIPCIÓN
$0Nombre 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 MATRIZDESCRIPCIÓ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ÉTICODESCRIPCIÓN
+Suma
Sustracción
*Multiplicación
/División
%Módulo
=Asignación
==Igualdad
!=Desigualdad
OPERADOR RELACIONALDESCRIPCIÓN
-eqIgual a
-neNo igual a
-gtMas grande que
-ltMenos que
-geMayor qué o igual a
-leMenos que o igual a
OPERADOR BOOLEANODESCRIPCIÓN
!Negación lógica/no: invierte la condición verdadero/falso
-oO lógico (inclusive): devuelve verdadero si alguno de los operandos es verdadero
-aAND lógico: devuelve verdadero si todos los operandos son verdaderos
OPERADOR DE CADENADESCRIPCIÓ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_VARDevuelve verdadero si $STRING_VAR tiene una longitud cero.
-n $STRING_VARDevuelve 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 ARCHIVODESCRIPCIÓN
-d $FILEDevuelve verdadero si FILE es un directorio.
-f $FILEDevuelve verdadero si FILE es un archivo normal en lugar de un directorio o archivo especial.
-r $FILEDevuelve verdadero si FILE es legible.
-w $FILEDevuelve verdadero si FILE se puede escribir.
-x $FILEDevuelve verdadero si FILE es ejecutable.
-e $FILEDevuelve verdadero si FILE existe, incluso si FILE es un directorio.
-s $FILEDevuelve verdadero si FILE el tamaño es mayor que cero.

Toma de decisiones

TIPOSSINTAXIS
if…fiif [ expression ] then    Declaraciones que se ejecutarán si expression es verdadera fi
if…else…fiif [ 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…fiif [ 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…esaccase 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 BUCLESINTAXIS
forfor 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/).
whilewhile command do    Declaraciones que se ejecutarán si el comando es verdadero done   Bucle infinito: utilice : como comando, es decir, while :.
untiluntil command do    Declaraciones que se ejecutarán hasta que command sea verdadera done
selectDisponible 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 FLUJOSINTAXIS
breakSalir de un bucle.
continueSalga de la iteración actual del bucle y continúe con la siguiente iteración.
Ctrl+CCombinación de teclas para cancelar un proceso en ejecución
Ctrl+LCombinació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 aptyum, 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…

¿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

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!!!