Bienvenidos a esta Guía Rápida de Linux para Hackers #9 Navegación desde la Shell. Comparte este articulo y síguenos para recibir más capítulos y cursos gratis.

Esta guía es parte de un curso mucho más grande en donde te enseñamos a convertirte en hacker de 0 a 100. Desde los conocimientos más básicos hasta conseguir empleo.

En esta guía veremos desde cero un tema tan amplio como es Linux y lo haremos desde el punto de vista del hacking y la ciberseguridad.

Para saber más comente a continuación, respondemos todos y cada uno de los comentarios.

Índice

¿Te gustaría enterarte de cuando lanzamos descuentos y nuevos cursos?

Lista de aprendizajes del artículo

  1. Definición de comandos:
    • Entender qué es un comando y cómo interactúa con la computadora a través de una terminal.
  2. Tipos de comandos:
    • Diferenciar entre comandos integrados del shell y comandos externos.
  3. Comandos básicos de directorio en Linux:
    • Aprender a usar pwd, ls, cd, mkdir y rmdir.
  4. Conceptos de rutas:
    • Diferenciar entre rutas absolutas y relativas y cómo navegar en el sistema de archivos.
  5. Permisos y metadatos de archivos:
    • Comprender la información mostrada por ls -l, incluyendo permisos, propietario, y tamaño de archivo.
  6. Uso de globs y comodines:
    • Aplicar patrones para trabajar con múltiples archivos o directorios.
  7. Alias en bash:
    • Crear y utilizar alias personalizados para simplificar comandos.
  8. Comando tree:
    • Visualizar estructuras de directorios de forma jerárquica.

¿Qué son los comandos?

Un comando es una instrucción que le damos a nuestra computadora para que haga lo que queramos. En Mac OS y Linux se denomina terminal, mientras que en Windows se denomina símbolo del sistema. Los comandos siempre distinguen entre mayúsculas y minúsculas.

Los comandos se ejecutan escribiendo en la línea de comando y luego presionando la tecla Enter. Este comando pasa luego al shell, que lo lee y lo ejecuta. El shell es un método que permite al usuario interactuar con el sistema. El shell predeterminado en Linux se llama bash (Bourne-Again Shell). Hay dos tipos de comandos de shell:

  • Comandos de shell integrados: forman parte de un shell. Cada shell tiene algunos comandos integrados.
  • Comandos externos/Linux: cada comando externo es un programa ejecutable independiente escrito en C u otros lenguajes de programación.

Comandos de directorio de Linux

Comando de directorioDescripción
pwdEl comando pwd significa (imprimir directorio de trabajo). Muestra la ubicación o directorio de trabajo actual del usuario. Muestra la ruta de trabajo completa comenzando con /. Es un comando integrado.
lsEl comando ls se utiliza para mostrar la lista de una carpeta. Enumerará todos los archivos de la carpeta indicada.
cdEl comando cd significa (cambiar directorio). Se utiliza para cambiar al directorio en el que se desea trabajar desde el directorio actual.
mkdirCon el comando mkdir puedes crear tu propio directorio.
rmdirEl comando rmdir se utiliza para eliminar un directorio de su sistema.

Directorio Actual y Cambio de Directorios

Tu directorio actual es el directorio donde estás trabajando actualmente en una terminal. Cuando primero abres una terminal, el directorio actual debe ser tu directorio home, pero esto puede cambiar mientras vas explorando el sistema de archivos y cambias a otros directorios. Puedes determinar el directorio actual mediante el comando pwd. Adicionalmente, la mayoría de los sistemas tiene el prompt que visualiza el directorio actual del usuario por defecto:

El carácter ~ indica el directorio actual.  Normalmente el sistema sólo muestra el nombre del directorio actual, no la ruta completa del directorio raíz hacia abajo. En otras palabras, si estuvieras en el directorio /usr/share/doc , tu prompt probablemente te proporcionará solamente el nombre doc el directorio actual. Si quieres la ruta completa, utiliza el comando pwd.

Si quieres cambiar a un directorio diferente, utiliza el comando cd (cambiar directorio). Por ejemplo, el siguiente comando cambiará el directorio actual a un directorio llamado /etc. Ten en cuenta que no vas a obtener salida si el comando cd tiene éxito. Este caso es uno de los de “ninguna noticia es buena noticia”. Si tratas de cambiar a un directorio que no existe, recibirás un mensaje de error.

Si quieres volver a tu directorio home, puedes introducir el comando cd sin argumentos o usar el comando cd con el carácter ~ como argumento.

Comando pwd de Linux

PWD significa Imprimir directorio de trabajo. Escribe el nombre de ruta completo del directorio de trabajo en la salida estándar en sistemas operativos tipo UNIX y otros. El comando pwd imprime el directorio de trabajo (print working directory), su ubicación actual dentro del sistema de archivos.

Imprimir el directorio de trabajo

En los inicios de la computación, el resultado de un comando se enviaba directamente a impresoras físicas. Este método ha sido reemplazado por pantallas de vídeo que muestran información más rápidamente. Aún así, actualmente seguimos utilizando la palabra imprimir (print) aunque el resultado se esté mostrando en una pantalla.

El resultado del comando anterior indica que el usuario está actualmente en su carpeta de inicio, tal y como muestra el sistema de archivos siguiente.

En mi caso la carpeta no se llama sysadmin sino carlos, en el tuyo será el nombre que le hayas puesto a tu usuario. Observe que se emplea un indicador para mostrar el directorio de trabajo actual. En el primer mensaje, el carácter ~ es equivalente a /home/carlos, y representa el directorio de inicio del usuario. Después de cambiar de directorio, la nueva ubicación también se puede confirmar en el nuevo indicador.

Introducción al directorio de Woking (actual)

El directorio de trabajo actual es el directorio en el que el usuario está trabajando actualmente. Cada vez que interactuamos con nuestro símbolo del sistema, trabajamos dentro de un directorio. Cuando iniciamos sesión en nuestro sistema Linux, nuestro directorio de trabajo actual es nuestro directorio de inicio de forma predeterminada. Podemos usar el comando cd para cambiar nuestro directorio de trabajo.

Por ejemplo, necesitamos ingresar el siguiente comando en la ventana del terminal para cambiar el directorio de trabajo a /tmp:

cd /tmp  

Sintaxis PWD

En Kali Linux, el comando ‘Pwd’ se utiliza para imprimir el directorio de trabajo. Nos brinda información sobre el directorio en el que nos encontramos. Esto es especialmente útil si necesitamos acceder al directorio mientras estamos en medio de un proceso.

pwd toma la siguiente sintaxis:

pwd [-opciones]  

Las opciones se explican en la siguiente sección.

Estado de salida

pwd contiene los siguientes estados de salida:

  • Non-zero: fracaso
  • zero: éxito

Opciones de PWD y su explicación

OpcionesExplicación
pwdEste comando se utiliza para mostrar el directorio de trabajo actual. Por ejemplo, /home/foobar
pwd -LEste comando se utiliza para mostrar la ruta lógica del directorio de trabajo actual con el nombre del enlace simbólico, si lo hay. Por ejemplo, si existe en un directorio /home/symlinked, es un enlace simbólico a /home/realdir; se mostraría /home/symlinked.
pwd -REste comando se utiliza para mostrar la ruta física del directorio de trabajo actual sin el nombre del enlace simbólico, si lo hay. Por ejemplo, si existe en un directorio /home/symlinked, es un enlace simbólico a /home/realdir; se mostraría /home/realdir.
–helpMuestra el mensaje de ayuda.
–versionProporciona la versión del programa.

Ejemplos del comando PWD

Podemos usar el siguiente comando en la ventana de terminal para imprimir nuestro directorio de trabajo actual:

/bin/pwd 

Para crear un enlace simbólico de una carpeta, muévase al directorio creado e imprima el directorio de trabajo actual sin enlaces simbólicos y con enlaces simbólicos.

Imprima el directorio de trabajo actual a través del entorno, incluso si incluye enlaces simbólicos:

/bin/pwd -L  

Imprima el directorio de trabajo físico original obligando a todos los enlaces simbólicos:

/bin/pwd -P

Comprobar si el resultado de los comandos “pwd -P” y “pwd” son equivalentes o no, es decir, si no se proporcionan opciones en el tiempo de ejecución, ¿pwd toma en cuenta automáticamente la opción -P o no?

Podemos usar el siguiente comando para imprimir la versión de nuestro comando pwd:

Importante: Es posible que hayamos visto que estamos ejecutando el comando como /bin/pwd, no pwd, que se menciona anteriormente.

Entonces, ¿cuál es la diferencia?

pwd solo describe la contraseña incorporada del shell. Nuestro shell puede contener diferentes versiones de pwd. Recomendamos consultar el manual. Estamos llamando a una versión binaria del comando si estamos usando /bin/pwd. Tanto la versión binaria como la versión del shell del comando imprimirán el directorio de trabajo actual, por lo que la versión binaria contiene más opciones.

Podemos usar el siguiente comando para imprimir cada ubicación que tenga el ejecutable pwd:

type -a pwd

Almacene el valor del comando pwd en cualquier variable e imprima el valor de esta variable (esencial desde la perspectiva de los scripts de shell). En el ejemplo anterior, podemos utilizar printf como alternativa.

Cambia el directorio de trabajo a otro directorio y muéstralo en la ventana de terminal. También podemos ejecutar el comando ls para verificar que todo esté correcto.

Comando cd en Linux/Unix | Cambiar directorio en Linux

El comando cd de Linux se utiliza para cambiar el directorio de trabajo actual (es decir, en el que está trabajando el usuario actual). “cd” significa “cambiar directorio “. Es uno de los comandos más utilizados en la terminal de Linux.

cd <nombredirectorio>  

Es uno de los comandos más importantes y comunes en el sistema Linux y se utilizará repetidamente. Con la ayuda de este comando, podemos movernos por todos los directorios de nuestro sistema. Podemos ir a nuestro directorio anterior o al directorio siguiente, o a cualquier lugar.

Los archivos se utilizan para almacenar datos como texto, gráficos y programas. Los directorios son un tipo de archivo utilizado para almacenar otros archivos: proporcionan una estructura organizativa jerárquica. La siguiente imagen muestra una versión abreviada de la estructura del sistema de archivos.

Al iniciar una sesión como usuario (en este caso sysadmin)inicia desde su directorio principal, resaltado en azul a continuación:

Utilice el comando cd (change directory) para cambiar de directorio y navegar por la estructura del sistema de archivos.

cd [opciones] [ruta]

Si examina el gráfico anterior, notará que el directorio Documents se encuentra dentro del directorio de inicio home, donde usted se encuentra actualmente. Para desplazarse al directorio Documents, utilícelo como argumento para el comando cd:

Los directorios son equivalentes a las carpetas en Windows y Mac. Al igual que estos sistemas operativos más populares, una estructura de directorios Linux también tiene un nivel superior. No se llama “Mi PC”, sino directorio raíz (root) y está representado por el carácter /. Para desplazarse al directorio root, utilice el carácter / como argumento del comando cd.

El argumento para el comando cd es más que el nombre de un directorio, en realidad es una ruta (path). Una ruta es una lista de directorios separados por el carácter /. Por ejemplo, /home/sysadmin es la ruta a su directorio de inicio:

Imagine que el sistema de archivos es un mapa, las rutas son las instrucciones que indican paso a paso la ubicación de cualquier archivo dentro del sistema de archivos. Hay dos tipos de rutas: absolutas y relativas. Las rutas absolutas comienzan en la raíz del sistema de archivos, las rutas relativas comienzan en su ubicación actual.  Todo esto lo veremos en mayor profundidad y de forma práctica a continuación.

Opciones del comando cd

Similar a Unix, Linux

  • cd ~ o cd por sí solo siempre llevará al usuario al directorio de inicio.
  • cd . permitirá al usuario permanecer en el directorio similar en el que se encuentra actualmente.
  • cd ~username permitirá que el usuario permanezca en el directorio de inicio del nombre de usuario.
  • cd dir (no con /) permitirá al usuario permanecer en un subdirectorio.
  • cd .. llevará al usuario a un directorio superior.
  • cd – cambiará el usuario al directorio antiguo.
  • cd / Mover al directorio raíz

Rutas absolutas y relativas de Linux

La ruta de un archivo es una combinación de una barra (/) y caracteres alfanuméricos. Determina la ubicación única de un archivo o directorio en el sistema de archivos de un sistema operativo.

Cuando se trabaja con comandos es habitual tener que pasar como parámetros archivos o directorios. Para indicar un archivo o directorio se utiliza una ruta o path, que puede ser absoluta o relativa. Antes de nada vamos a recalcar una cosa. Aunque todo el mundo habla de particiones cuando quiere hacer referencia al lugar donde guarda los datos, realmente los datos se guardan en el sistema de archivos que está creado dentro de la partición.

Las particiones son una división del espacio de un dispositivo de almacenamiento como un disco duro o un pendrive y por si solas no pueden almacenar nada, por eso es necesario crea un sistema de archivos dentro de ellas. Este proceso de creación es lo que se llama dar formato o formatear la partición. En Windows los sistemas de archivos utilizados son FAT o NTFS. En Linux existen muchísimos sistemas, pero los más comunes son los EXT en sus versiones 3 y 4 (ext3 / ext4).

A diferencia de Windows, Linux no tiene unidades, así que se pueden olvidar de A:\, C:\, D:\ y todas las letras del alfabeto. En Linux las diferentes particiones se montan dentro de la jerarquía del file system o sistema de archivos y se referencian dentro del mismo. Vamos con el tema de las rutas o paths. Supongamos que dentro de la partición de datos tenemos un archivo llamado pelicula.mpg. Para indicar la ruta a este archivo se puede hacer de varias formas.

El directorio superior de cualquier sistema de archivos es el directorio raíz, que se indica con la barra (/). Puede describir la ubicación de cualquier archivo o directorio en el sistema de archivos con la ruta absoluta. Esto significa que realizará cada paso a partir del directorio raíz o del comienzo absoluto del sistema de archivos.

Una ruta absoluta es inequívoca y puede resultar incómoda de usar, especialmente si trabaja con directorios muy anidados. Para simplificar las cosas, puede utilizar la ruta relativa. De esta manera, si trabaja con archivos en el directorio de trabajo actual o cerca de él, esto puede ahorrarle mucho trabajo de escritura.

Cada vez que se ha hecho referencia a un archivo simplemente por su nombre, se ha utilizado una ruta relativa. Este es el tipo de ruta relativa más sencillo. El shell busca el nombre de archivo especificado dentro del directorio actual.

Ejemplos

Por ejemplo, la ruta absoluta a ese archivo es la siguiente:

/home/carlos/media/datos/shell.php

Las rutas absolutas se caracterizan por empezar SIEMPRE desde la raíz o root, es decir la /, y contener todos los directorios que hay desde la raíz hasta el archivo o directorio que queremos indicar, sólo es posible escribir de una forma una ruta absoluta. Todas las rutas siguientes son rutas absolutas por que empiezan desde la raíz.

/etc/

/home/carlos/

Cuando tienen la / al final significa que la ruta es de un directorio, aunque no es necesaria la /. Cuando la ruta es de un archivo NUNCA se pone la / al final. En cambio las rutas relativas NUNCA empiezan por la / y puede haber varias rutas relativas para el mismo archivo o directorio que queremos indicar. Esto es así porque la ruta relativa depende del directorio en el que se esté trabajando (donde estoy parado).

Por ejemplo si estamos en el mismo directorio que el archivo shell.php, la ruta relativa es simplemente el nombre del archivo:

shell.php

En cambio, si estamos dentro del directorio media, pero fuera del directorio datos, la ruta relativa se escribiría:

datos/shell.php

Si estamos en la raíz del sistema de archivos: media/datos/shell.php Y ¿Qué pasaría si estuviésemos dentro del directorio a la altura de media? Aquí es necesario indicar que para llegar al archivo antes tenemos que ir al directorio

../ y después entrar en media y luego en datos. Para indicar el directorio padre se usan dos puntos y la /:

../media/datos/shell.php

Si tenemos que salir de más de un directorio se pueden poner más veces los dos puntos y la /. Por ejemplo:

../../otroarchivo.pdf

También existe el punto y la / para indicar el directorio actual de trabajo. Por eso, si estamos en un directorio donde existe un archivo llamado documento.pdf, podemos indicar la ruta relativa con sólo el nombre del archivo:

documento.pdf

O con el punto y la /:

./documento.pdf

Luego también pueden apareces cosas curiosas como por ejemplo:

././././././././././././././././././documento.pdf

Que es lo mismo que las dos anteriores, pero evidentemente, nadie en su sano juicio hace esto.

Rutas absolutas

Una ruta absoluta es una ruta completa que especifica la ubicación de un archivo o directorio desde el directorio raíz o el inicio del sistema de archivos real.

Una ruta absoluta le permite especificar la ubicación exacta de un directorio. Siempre comienza en el directorio root, por lo tanto siempre comienza con el carácter /. La ruta al directorio de inicio (home) /home/carlos es una ruta absoluta. La ruta comienza en el directorio root /, se mueve al directorio de inicio home y, a continuación, al directorio carlos.

Utilice esta ruta como argumento para el comando cd para volver al directorio principal del usuario carlos.

  • La ruta absoluta de cualquier directorio siempre comienza con una barra (/) que representa la raíz del directorio. Además, todas las barras en la ruta del directorio separan los directorios.
  • Todos los nombres de directorios en la ruta absoluta se escriben en orden jerárquico. El nombre del directorio principal se escribe en el lado izquierdo.
  • El apellido en una ruta absoluta puede pertenecer a un archivo o directorio. Además del apellido, todos los nombres pertenecen a los directorios.
  • La ruta absoluta del directorio actual se puede determinar utilizando el comando pwd.

Que no aparezca un resultado en la línea de comandos significa que el comando se ha ejecutado correctamente. Continúe y confirme que es así usando el comando pwd:

Una descripción de la ubicación de un archivo o un directorio en el sistema de archivos. También se puede entender como las direcciones que indican al sistema donde se encuentra un archivo o un directorio. Ahora veamos esto de forma práctica. Por ejemplo, el comando cd /etc/perl/Net significa “cambiar al directorio Net, que encontrarás bajo el directorio perl, que encontrarás bajo el directorio etc , que encontrarás bajo el directorio /“.

Cuando des un nombre de ruta que comienza en el directorio raíz, se llamará ruta absoluta.  Si estás en tu directorio home y quieres ir al directorio /etc/perl/Net, entonces proporcionar una ruta de acceso absoluta al comando cd tiene sentido:

Rutas relativas

La ruta relativa de un archivo es su ubicación en relación con el directorio de trabajo actual. Nunca comienza con una barra (/). Comienza con el directorio de trabajo actual.

Ejemplo: Desktop/cursos

  • Un solo punto (.) se resuelve en el directorio actual.
  • El doble punto (..) se resuelve en el directorio principal del directorio de trabajo actual.
  • La tilde (~) representa el directorio de inicio del usuario que inició sesión.

Pero si estás en el directorio /etc/perl y quieres ir al directorio /etc/perl/Net sería tedioso introducir la ruta completa para llegar a un directorio que es sólo un nivel más abajo de tu ubicación actual. En una situación como ésta, vas a utilizar una ruta relativa:

Una ruta de acceso relativa proporciona direcciones usando tu ubicación actual como un punto de referencia. Recuerda que esto es diferente de las rutas absolutas, que siempre requieren que utilices el directorio raíz como punto de referencia.

Existe una técnica útil de ruta de acceso relativa que se puede utilizar para subir un nivel en la estructura de directorios: el directorio.. . Sin importar en qué directorio estás, el parametro .. siempre representa un directorio arriba que el directorio actual (con la excepción de cuando estás en el directorio /):

A veces usar las rutas de acceso relativas es una mejor opción, sin embargo, esto no siempre es el caso. ¿Qué pasa si estás en el directorio /etc/perl/Net y quieres ir al directorio /usr/share/doc? Utilizando una ruta absoluta, se ejecutaría el comando cd /usr/share/doc. Utilizando una ruta relativa, se ejecutaría el comando cd ../../../usr/share/doc:

Las rutas relativas y absolutas no sólo sirven para comando cd. Siempre cuando especificas un archivo o un directorio, puedes utilizar las rutas de acceso relativas o absolutas.

Mientras que el doble punto (..) se utiliza para referirse al directorio arriba del directorio actual, el punto solo (.) se usa para referirse al directorio actual. No tendría sentido para un administrador moverse al directorio actual introduciendo cd . (aunque en realidad funciona). Es más útil referirse a un elemento en el directorio actual usando la notación ./. Por ejemplo:

Nota: Este uso del punto solo (.), como punto de referencia, no se debe confundir con su uso al principio de un nombre de archivo. 

Entonces, en resumen: Una ruta relativa ubica un archivo en relación con la ubicación actual del usuario en el sistema de archivos. Las rutas relativas no comienzan con el carácter /, comienzan con el nombre de un directorio. Eche otro vistazo al primer ejemplo de comando cd. En este caso, el argumento es un ejemplo de la ruta relativa más simple: el nombre de un directorio en su ubicación actual.

La siguiente imagen muestra un mapa de los archivos contenidos en el directorio sysadmin. Actualmente se encuentra en el directorio Documents y desea desplazarse al directorio Art:

Una ruta relativa comienza con el directorio actual, sin embargo, éste no se incluye en la ruta. El primer paso sería pasar al directorio School y, a continuación, pasar al directorio Art. Utilice el carácter / para separar los nombres de directorio. El resultado School/Art es una ruta relativa desde el directorio Documents hasta el directorio Art:

Utilice la ruta relativa como argumento para el comando cd para desplazarse al directorio Art.

cd School/Art

A tener en cuenta

El resultado del comando pwd es la ruta absoluta al directorio Art.

En el ejemplo anterior, el comando cd siguió la ruta School/Art:

cd School/Art

Una ruta también se puede dividir en varios comandos cd. El siguiente conjunto de comandos lograría los mismos resultados:

cd School
cd Art

Todo en Linux es un archivo

Como mencionamos anteriormente todo en un Linux es un archivo, tanto el Software como el Hardware, bueno el hardware es hardware, pero también es un archivo o por lo menos se puede acceder desde uno. Desde el mouse, pasando por la impresora, el reproductor de DVD, el monitor, un directorio, un subdirectorio y un archivo de texto. De ahí vienen los conceptos de montar y desmontar por ejemplo un CDROM.

El CDROM se monta como un subdirectorio en el sistema de archivos. En ese subdirectorio se ubicará el contenido del disco compacto cuando esté montado y, nada cuando esté desmontado. Para ver que tenemos montado en nuestra distribución GNU/Linux, podemos ejecutar el comando “mount”.

Algo interesante para hacer es ver información de nuestros dispositivos mediante los archivos que podemos encontrar en /proc , para ello utilizaremos el utilitario llamado “cat”.

Es muy importante mencionar que Linux es un sistema operativo “Case Sensitive”. Esto quiere decir que al contrario de Windows, en Linux las letras mayúsculas y minúsculas son interpretadas de forma diferente. Esto implica que un directorio o un archivo llamado “Carlos” es diferente a uno llamado “carlos”, “CarloS”, “CaRLoS”, etc…

Es muy importante saber la diferencia entre ruta absoluta y relativa, ya que la ruta correcta solo te llevará al directorio de destino. Cuando se define una ruta que comienza con una barra diagonal (‘/’), se asume que es la raíz del archivo. Si no se coloca una ‘/’, se asume que el directorio actual es el punto de partida.

En el siguiente ejemplo, estamos en el Escritorio. Para ir al directorio de inicio, escribimos cd /home en lugar de cd home.

A continuación puedes ver que recibimos un error al escribir cd /laprovittera en lugar de cd laprovittera , porque laprovittera es un subdirectorio de home y, por lo tanto, no se puede acceder a él con una raíz (‘/’).

Si actualmente se encuentra en el directorio raíz, puede ejecutar el comando home o /home . Ambos comandos lo llevarán al directorio de inicio porque ya se encuentra en el directorio raíz.

Completar ruta de Linux

La función de completar rutas es una función muy útil en cualquier sistema operativo. Está diseñada para acelerar la velocidad de escritura. Solo tiene que presionar la tecla “Tab” y el comando, la opción o el nombre del archivo que son argumentos se completarán automáticamente o le brindarán las opciones.

Por ejemplo, si desea escribir “cd laprovittera”, puede escribir “cd LA” y presionar la tecla Tab. Su comando se completará automáticamente. Pero para que funcione la tecla Tab, debes escribir la primera letra correctamente. Por ejemplo, si escribes “cd la” seguido de la tecla Tab, no obtendrás ningún resultado, ya que no habrá archivos que comiencen con “LA” .

La función de completar ruta es extremadamente útil para escribir nombres de archivos largos cuando no recuerda el nombre completo. Algunos archivos contienen símbolos o espacios que son difíciles de recordar, por lo que puede utilizarla.

Observa el ejemplo anterior. Es muy difícil aprender “laprovittera doc 17 Feb 2024” . Por lo tanto, en lugar de escribir la ruta completa, simplemente escribe “lap” y presiona la tecla Tab. La ruta se completará automáticamente.

Accesos Directos o Atajos

Dos puntos ..

Independientemente del directorio en el que se encuentre, el carácter .. siempre representa un directorio superior en relación al directorio actual, a veces denominado directorio padre. Por ejemplo, para pasar del directorio Art al directorio School:

Un punto .

Independientemente del directorio en el que se encuentre, el carácter . siempre representa su directorio actual. Para el comando cd, este atajo no es muy útil, pero será útil para los comandos que estudiaremos en las secciones siguientes.

El símbolo ~

El directorio principal del usuario actual está representado por el carácter ~ . Como se indicó anteriormente, siempre comienza su sesión como usuario sysadmin, cuyo directorio de inicio se encuentra en /home/sysadmin. Para volver a su directorio de inicio en cualquier momento, puede ejecutar el siguiente comando:

El comando cd tiene más opciones que puedes explorar.

Sintaxis de comandos básicos

Este módulo se ocupa exclusivamente de la CLI o interfaz de línea de comandos, en lugar de la GUI o interfaz gráfica de usuario con la que quizás esté más familiarizado. El terminal CLI es una poderosa herramienta y a menudo es el método principal utilizado para administrar dispositivos pequeños de bajo consumo, servidores de computación de gran capacidad en la nube, y mucho más. Una comprensión básica del terminal es esencial para diagnosticar y reparar la mayoría de los sistemas basados en Linux. Puesto que Linux se ha vuelto tan omnipresente, incluso aquellos que planean trabajar con sistemas que no utilizan el núcleo Linux pueden beneficiarse de tener una comprensión básica del terminal.

La sintaxis de comandos en Linux es una herramienta esencial para cualquier usuario avanzado, administrador de sistemas o hacker. Dominar la línea de comandos permite interactuar de manera directa y eficiente con el sistema operativo, ya que Linux se diseñó originalmente para ser controlado a través de ella. Para los hackers, comprender y dominar la sintaxis de comandos es una habilidad fundamental, pues les otorga un control preciso sobre el sistema y la capacidad de ejecutar tareas complejas de forma rápida. Este artículo analiza a fondo la sintaxis de comandos en Linux, su estructura, y por qué es crucial para quienes buscan explotar vulnerabilidades en sistemas de manera eficiente.

Comando ls de Linux

El comando ls es el comando de lista en Linux. Mostrará la lista completa o el contenido de su directorio. Simplemente escriba ls y presione la tecla Enter. Se mostrará todo el contenido.

ls es un comando que se utiliza para listar directorios y archivos de ordenador en sistemas operativos Unix y similares a Unix.

Comportamiento

Los sistemas operativos Unix y similares gestionan la idea de un directorio de trabajo. ls enumera varios archivos dentro del directorio de trabajo cuando se utiliza sin argumentos. En ese directorio, se enumeran los archivos si se menciona un directorio. Los argumentos pueden incluir directorios y archivos.

Los nombres que comienzan con el símbolo “.” están ocultos. El directorio “.” se conoce como el directorio de trabajo y el símbolo “..” se conoce como el directorio principal. De forma predeterminada, se muestran. Todos los archivos se muestran utilizando -a. Los nombres de archivo especificados explícitamente siempre se muestran.

ls solo muestra nombres sin opciones. Se pueden combinar varias opciones. Las opciones básicas son:

  • -h: muestra los tamaños de los resultados en un formato legible para humanos (por ejemplo, 2G 234M, 1K, etc.).
  • -l: Significa formato largo. Muestra los tipos de archivos Unix, la cantidad de enlaces físicos, los permisos, el grupo, el propietario, el nombre y la fecha y hora de la última modificación, y el tamaño. Si la fecha de modificación es anterior a seis meses, la hora se sustituye por el año. Algunas implementaciones agregan indicadores adicionales a los permisos.

Es posible mostrar distintos elementos con distintos tipos de colores. Es un área en la que las implementaciones difieren:

  • FreeBSD ls aplica la opción -G. Inspecciona únicamente el tipo y los permisos de los archivos Unix y utiliza la base de datos termcap.
  • GNU ls aplica la opción –color. Inspecciona la extensión, el permiso y el tipo de archivo de Unix y utiliza su base de datos para administrar los colores controlados mediante dircolors.

Ejemplo:

 ls

A continuación, puede ver que, después de ingresar el comando ls, obtuvimos la lista completa de contenido del directorio home/laprovittera/Escritorio

Para ejecutar un comando, el primer paso es escribir el nombre del comando. En la terminal escriba ls y pulse Enter. Obtendrá un resultado parecido al del siguiente ejemplo:

Generalmente, el nombre del comando se basa en la tarea que hace o en lo que el programador que creó el comando cree que mejor describe la función del comando. Por ejemplo, el comando ls muestra una lista de información sobre archivos. Asociar el nombre del comando con algo mnemotécnico sobre lo que hace puede ayudarle a recordar los comandos más fácilmente.

Generalmente, los comandos distinguen entre mayúsculas y minúsculas. Por ejemplo LS es incorrecto y generará un mensaje de error, pero ls es correcto y se ejecutará normalmente.

La mayoría de los comandos siguen un patrón de sintaxis simple:

comando [opciones…] [argumentos…]

En otras palabras, escriba un comando, seguido de las opciones y/o argumentos antes de presionar la tecla Enter. Generalmente, las opciones (options) alteran el comportamiento del comando y los argumentos (arguments) son elementos o valores sobre los que debe actuar el comando. Aunque hay algunos comandos en Linux que no son completamente consistentes con estas normas de sintaxis, la mayoría de los comandos usan esta sintaxis o alguna similar.

En el ejemplo anterior, el comando ls se ejecutó sin opciones ni argumentos. Cuando este es el caso, su comportamiento predeterminado es el de devolver una lista de los archivos contenidos en el directorio actual.

¿Qué es la Sintaxis de Comandos en Linux?

La sintaxis de comandos en Linux se refiere al formato y las reglas que definen cómo los comandos deben ser escritos e interpretados por el sistema. En su forma más simple, un comando en Linux sigue la estructura básica:

comando [opciones…] [argumentos…]

  • Comando: El programa o acción que quieres ejecutar.
  • Opciones: Modifican el comportamiento del comando. Suelen empezar con un guion (-) o doble guion (–).
  • Argumentos: Los archivos, directorios o datos sobre los cuales opera el comando.

Por ejemplo, el comando básico ls se utiliza para listar el contenido de un directorio. Al agregar opciones y argumentos, se puede modificar su comportamiento:

Argumentos

Un argumento (argument) se puede usar para especificar algo sobre lo que el comando debe actuar. Si al comando ls se le da el nombre de un directorio como argumento, obtendremos como resultado una lista del contenido de ese directorio. En el siguiente ejemplo, el directorio Desktop se utilizará como argumento:

En este caso:

  • ls es el comando para listar archivos.
  • -la son las opciones, donde l indica el formato largo (con más detalles) y a incluye archivos ocultos.
  • /home/carlos es el argumento que especifica el directorio a listar.

Opciones

comando [opciones…] [argumentos…]

Las opciones (options) se pueden utilizar para modificar el comportamiento de un comando. En el ejemplo anterior, el comando ls se utilizó para enumerar el contenido de un directorio. En el ejemplo siguiente, la opción -l se agrega al comando ls para obtener un resultado de “pantalla larga”, y proporcionar más información sobre cada uno de los archivos enumerados:

Tenga en cuenta que, en el comando anterior, -l es la letra “L” minúscula.

A menudo, el carácter elegido para el comando es mnemotécnico de su propósito en inglés. Por ejemplo, la letra l para indicar largo (long) o r para invertir (reverse en inglés). De forma predeterminada, el comando ls imprime los resultados en orden alfabético, al agregar la opción -r se imprimirán los resultados en orden alfabético inverso.

Se pueden usar varias opciones a la vez, ya sea como opciones separadas como en -l -r o combinadas como -lr . El resultado de los siguientes ejemplos sería el mismo:

ls -l -r
ls -rl
ls -lr

Como se ha explicado anteriormente, -l proporciona un formato de listado largo y -r invierte el listado. El resultado de usar ambas opciones será un listado largo en orden alfabético inverso:

Los comandos pueden utilizar muchas combinaciones de opciones y argumentos. Las posibilidades para cada comando serán únicas.

Lista de Colores

Hay muchos tipos de archivos en Linux.  Este es un breve resumen de algunos de los tipos de archivo más comunes:

TipoDescripción
plain file (archivo simple)Un archivo que no es un tipo de archivo especial; también se llama un archivo normal
directory (directorio)Un directorio de archivos (contiene otros archivos)
executable (ejecutable)Un archivo que se puede ejecutar como un programa
symbolic linkUn archivo que apunta a otro archivo (enlace simbólico)

En muchas distribuciones de Linux, las cuentas de usuario regulares son modificadas de tal manera que el comando ls muestre los nombres de archivo, codificados por colores según el tipo de archivo. Por ejemplo, los directorios pueden aparecer en azul, archivos ejecutables pueden verse en verde, y enlaces simbólicos pueden ser visualizados en cian (azul claro).

Esto no es un comportamiento normal para el comando ls, sino algo que sucede cuando se utiliza la opción –color para el comando ls. La razón por la que el comando ls parece realizar automáticamente estos colores, es que hay un alias para el comando ls para que se ejecute con la opción –color:

Cuando se ejecuta el comando ls, en realidad se ejecuta el comando ls –color=auto. En algunos casos, puede que no quieras ver todos los colores. Para evitar el uso de los alias, coloca un carácter de barra invertida \ antes de tu comando:

Bash alias

Si deseamos crear alias de bash para nuestro usuario, debemos hacerlo en el archivo ~/.bashrc (la virgulilla significa ‘nuestro home’). El archivo comienza por un punto ‘.’ lo que le hace oculto. Para mostrar los archivos ocultos con ls debemos añadir la opción -a. Si deseamos crear alias de bash para todos los usuarios, debemos hacerlo como root en el archivo /etc/bash.bashrc

La mayoría de los comandos que utilizamos al utilizar la interfaz de línea de comandos son habituales y la gente puede ejecutarlos de la misma forma todos los días. Sin embargo, tenemos una opción en Bash para crear nuestros propios atajos con la ayuda de alias, lo que eliminará la escritura innecesaria mediante el uso de nombres abreviados.

Bash Alias ​​se utiliza para establecer un comando de acceso directo para un comando más largo. El comando alias nos permite ejecutar cualquier comando o establecer comandos utilizando una sola palabra. Por ejemplo, podemos establecer el comando ‘cc’ como un acceso directo para el comando ‘clear’. Usar ‘cc + enter’ es comparativamente mucho más rápido que escribir el comando ‘clear’.

El alias generalmente se declara dentro del archivo ~/.bash_profile o ~/.bashrc .

” Los archivos .bash_profile y .bashrc se denominan archivos de configuración para el shell bash. Todas las configuraciones de bash, como todas las sesiones de terminal, la configuración que comprende las variables de entorno, el directorio predeterminado, el color, el tema bash, etc., se almacenan en el archivo de configuración. El nombre del archivo de configuración suele ser “.bashrc” para las sesiones de terminal y ” .bash_profile ” para los shells de inicio de sesión”.

Estructura de alias de Bash

Un alias bash contiene la siguiente estructura:

alias [alias_nombre]=”[comando_a_alias]”  

Un nuevo alias se define en una nueva línea con la palabra clave ‘ alias ‘. Necesitamos definir el comando de acceso directo que queremos usar con el nombre del alias, seguido de un signo igual. Luego, escribimos el comando completo que queremos ejecutar dentro de las comillas. No debe haber espacio entre los elementos vecinos y el signo igual. Es importante recordar esto; de lo contrario, el comando no funcionará.

Crear un alias de Bash

Crear alias en bash es muy sencillo. Podemos declarar los alias en la línea de comandos siguiendo la estructura que se muestra arriba.

Comencemos ahora con un alias bash simple. Uno de los comandos más utilizados que muchas personas usan para obtener la lista de todos los archivos y directorios, incluidos los archivos ocultos, es ” ls -la “. Podemos crear un acceso directo ” ll ” para realizar una acción de ” ls -la ” escribiendo el siguiente comando en una terminal:

alias  ll = “ls -la”  

Ahora, si escribimos el alias ” ll ” en una terminal, recibiremos el listado de todos los archivos y directorios en un formato largo similar al comando ” ls -la “.

Nota: Cabe señalar que si configuramos los alias a través de una terminal de esta manera, los alias solo estarán disponibles para la sesión de shell actual. Cuando abramos una nueva ventana de terminal, los alias no estarán disponibles.

Si queremos que los alias definidos sean persistentes, tenemos que añadirlos a uno de los archivos que se leen cuando se inicia una sesión de shell. Las opciones más comunes son ~/.bash_profile o ~/.bashrc , como hemos mencionado anteriormente. Debemos abrir cualquiera de estos archivos y añadir los alias allí.

Es una buena práctica asignar nombres a los alias que sean fáciles de recordar. También se recomienda agregar un comentario que declare una función completa relacionada con los alias de bash para referencia futura.

Si queremos que nuestro archivo .bashrc sea más modular, podemos colocar los alias en un archivo aparte, es decir, ~/.bash_aliases . Debemos asegurarnos de que el código aparezca en el archivo ~/.bashrc :

if [ -e $HOME/.bash_aliases ]; then  
source $HOME/.bash_aliases 
fi

Eliminar/Borrar un alias de Bash

Para eliminar el alias, debemos utilizar la siguiente estructura:

unalias [alias_name]=”[comando_a_alias]”  

Para eliminar el alias “ll” que hemos creado anteriormente, podemos utilizar el comando unalias:

unalias ll  

Lista de alias de Bash

Podemos enumerar todos los alias configurados utilizando el comando ” alias ” en una terminal sin ningún argumento:

alias  

Se verá así:

NOTA:  NO HAGAS ESTO!
Si bien esto es solo un chiste es técnicamente posible. Trabajar con alias da muchas posibilidades.

Comando ls de Linux

El comando ls es el comando de lista en Linux. Mostrará la lista completa o el contenido de su directorio. Simplemente escriba ls y presione la tecla Enter. Se mostrará todo el contenido.

ls es un comando que se utiliza para listar directorios y archivos de ordenador en sistemas operativos Unix y similares a Unix.

Opciones del comando ls de Linux

Opción lsDescripción
ls-aEn Linux, los archivos ocultos comienzan con el símbolo . (punto) y no son visibles en el directorio normal. El comando (ls -a) mostrará la lista completa del directorio actual, incluidos los archivos ocultos.
ls-lMostrará la lista en un formato de lista larga.
ls-lhEste comando le mostrará los tamaños de archivo en formato legible para humanos. El tamaño del archivo es muy difícil de leer cuando se muestra en bytes. El comando (ls -lh) le proporcionará los datos en términos de Mb, Gb, Tb, etc.
ls-lhSSi desea mostrar sus archivos en orden descendente (el más alto en la parte superior) según su tamaño, puede usar el comando (ls -lhS).
ls -l – -block-size=[TAMAÑO]Se utiliza para mostrar los archivos en un formato de tamaño específico. Aquí, en [TAMAÑO] puede asignar el tamaño según sus necesidades.
ls-d*/Se utiliza para mostrar sólo subdirectorios.
ls -g o ls -lGCon esto puedes excluir la columna de información del grupo y del propietario.
ls-nSe utiliza para imprimir el ID del grupo y el ID del propietario en lugar de sus nombres.
ls –color=[VALOR]Este comando se utiliza para imprimir la lista coloreada o descolorida.
ls-liEste comando imprime el número de índice si el archivo está en la primera columna.
ls-pSe utiliza para identificar el directorio fácilmente marcando los directorios con un signo de línea de barra (/).
ls-rSe utiliza para imprimir la lista en orden inverso.
ls-RTambién mostrará el contenido de los subdirectorios.
ls-lXAgrupará los archivos con las mismas extensiones en la lista.
ls-ltOrdenará la lista mostrando los archivos modificados recientemente en la parte superior.
ls ~Proporciona el contenido del directorio de inicio.
ls ../Proporciona el contenido del directorio padre.
ls –versiónComprueba la versión del comando ls.

Comando ls -a de Linux – Lista de los Archivos Ocultos

Cuando utilizas el comando ls para mostrar el contenido de un directorio, no todos los archivos se muestran automáticamente. El comando ls no muestra los archivos ocultos de manera predeterminada. Un archivo oculto es cualquier archivo (o directorio) que comienza con un punto ..

Para mostrar todos los archivos, incluyendo los archivos ocultos, utiliza la opción -a para el comando ls. Le proporcionará la lista completa de un directorio, incluidos también los archivos ocultos. En Linux, los archivos ocultos comienzan con un punto (.) y no se pueden ver en el directorio normal.

Ejemplo:

 ls- a

En el ejemplo anterior, puede ver la lista completa de archivos, incluidos los archivos ocultos. La mayoría de los archivos ocultos son archivos de personalización, diseñados para personalizar la forma en la que Linux, el shell o los programas funcionan. Por ejemplo, el archivo .bashrc en tu directorio home personaliza las características del shell, tales como la creación o modificación de las variables y los alias.

Estos archivos de personalización no son con los que regularmente trabajas. Hay muchos de ellos y visualizarlos hará más difícil encontrar los archivos con los que regularmente trabajas. Así que, el hecho de que están ocultos es para tu beneficio.

Comando ls -l de Linux – Listado con Visualización Larga

Existe información sobre cada archivo llamada metadata.  Esto puede incluir datos de quién es el dueño de un archivo, el tamaño y la última vez que se modificó. El comando ls solo mostrará los archivos, pero si desea que los archivos se muestren en un formato de lista larga, puede usar el comando ls -l.

Ejemplo:

 ls -l

Nota:

  • Los directorios están marcados en color azul.
  • Los archivos están marcados en blanco.
  • Encontrará esquemas de colores similares en diferentes versiones de Linux.

Puede utilizar ‘ls -R’ para mostrar todos los archivos no solo en directorios sino también en subdirectorios

NOTA: Estos comandos básicos de Linux distinguen entre mayúsculas y minúsculas. Si ingresa “ ls – r ”, obtendrá un error.

‘ls -al’ proporciona información detallada de los archivos. El comando proporciona información en formato de columnas. Las columnas contienen la siguiente información:

Aquí puedes ver la lista en formato de lista larga.

En la salida anterior, cada línea describe metadatos sobre un solo archivo. A continuación se describe cada uno de los campos de datos que verás en la salida del comando ls -l. Veamos ahora en más detalle y con diferentes ejemplos cada uno  de estos campos.

Tipo de archivo.

El primer carácter de cada línea de salida indica el tipo de archivo. Tipos de archivo comunes incluyen: d= directorio, = archivo simple, l= enlace simbólico

rw-r–r– 1 root   root  18047 Dec 20  2017 alternatives.log      
           
drwxr-x— 2 root   adm    4096 Dec 20  2017 apache2 

El primer campo contiene en realidad diez caracteres. El primer carácter indica el tipo de archivo y los nueve siguientes especifican permisos. Los tipos de archivo son:

SímboloTipo de archivoDescripción
ddirectorioUn archivo usado para contener otros archivos.
archivo ordinarioIncluye archivos leíbles, imágenes, archivos binarios, y archivos comprimidos.
lenlaces simbólicosApunta a otro archivo.
ssocketPermite la comunicación entre procesos.
ptubería (pipe)Permite la comunicación entre procesos.
barchivo bloqueUsado para comunicaciones con el equipo (hardware).
carchivo carácterUsado para comunicaciones con el equipo (hardware).

El primer archivo alternatives.log es un archivo normal -, mientras que el segundo archivo apache2 es un directorio d.

Permisos

Los próximos nueve caracteres demostrarán los permisos del archivo. Los permisos se utilizan para determinar quién tiene acceso al archivo.

drwxr-xr-x 2 root   root   4096 Apr 11  2024 upstart

Los permisos indican cómo determinados usuarios pueden acceder a un archivo. Siga leyendo para obtener más información sobre los permisos.

Conteo de enlaces físicos

El conteo de enlaces físicos de un archivo se usa para demostrar cuantos enlaces físicos hacia este archivo existen. 

-rw-r—– 1 syslog adm    1346 Oct  2 22:17 auth.log

Este número indica cuántos enlaces directos apuntan a este archivo.

Usuario propietario

 Cada archivo es propiedad de una cuenta de usuario. Esto es importante porque el propietario tiene los derechos para establecer permisos en un archivo y el propietario tiene sus propios permisos en el archivo.

-rw-r—– 1 syslog adm     106 Oct  2 19:57 kern.log

El usuario syslog posee este archivo. Cada vez que se crea un archivo, la propiedad se asigna automáticamente al usuario que lo creó.

Grupo propietario

Cada archivo es propiedad de un grupo. Esto es importante porque cualquier miembro de este grupo tendrá acceso especial al archivo basado en los permisos de grupo del archivo.

-rw-rw-r– 1 root   utmp 292584 Oct  2 19:57 lastlog

Indica qué grupo posee este archivo.

Tamaño de archivo

Este campo describe el tamaño de un archivo en bytes. En el caso de los directorios, este valor no describe el tamaño total del directorio, más bien, cuántos bytes están reservados para mantenerse al corriente con los nombres de archivo en el directorio (en otras palabras, ignora este campo en los directorios).

-rw-r—– 1 syslog adm   19573 Oct  2 22:57 syslog

Los directorios y archivos más grandes pueden mostrarse en kilobytes ya que mostrar su tamaño en bytes resultaría en un número demasiado grande. Por lo tanto, en el caso de un directorio, este número podría ser un múltiplo del tamaño de bloque utilizado por el sistema de archivos. El tamaño de bloque es el tamaño de una serie de datos almacenados en el sistema de archivos.

Hora de modificación

Este campo indica la última hora en la que el contenido del archivo fue modificado. En el caso de los directorios, indica la última vez que se agregó o eliminó un archivo dentro del directorio.

drwxr-xr-x 2 root   root   4096 Dec  7  2017 fsck

Indica la fecha y hora en que el contenido del archivo se modificó por última vez.

Nombre

El último campo es el nombre del archivo o directorio.

-rw-r–r– 1 root   root  47816 Dec  7  2017 bootstrap.log

El campo final contiene el nombre del archivo o directorio.

A tener en cuenta 

En el caso de enlaces simbólicos, un archivo que apunta a otro archivo, el nombre del enlace se mostrará junto a una flecha y el nombre de la ruta del archivo original.

lrwxrwxrwx. 1 root root 22 Nov 6 2012 /etc/grub.conf -> ../boot/grub/grub.conf

Linux ls -l –block-size=[TAMAÑO]

Si desea mostrar el tamaño del archivo de su lista en un formato o tamaño particular, puede utilizar este comando. Simplemente coloque el tamaño en lugar de [SIZE] según sus necesidades.

Sintaxis:

ls -l  –block-size = [TAMAÑO]  

Ejemplo:

ls -l  –block-size=M  

Veamos el resultado a continuación.

Aquí, todos los tamaños de archivos se enumeran en Megabytes.

Puede reemplazar [TAMAÑO] con las siguientes medidas:

  • K = Kilobyte
  • M = Megabyte
  • G = Gigabyte
  • T = Terabyte
  • P = Petabyte
  • E = Exabyte
  • Z = Zettabyte
  • Y = Yottabyte

Cuando visualizas los tamaños de los archivos con la opción -l del comando ls obtienes los tamaños de los archivo en bytes. Para archivos de texto, un byte es 1 carácter. Para archivos más pequeños, los tamaños en byte están bien. Sin embargo, para los archivos más grandes es difícil comprender qué tan grande es el archivo. Por ejemplo, considera la salida del siguiente comando:

ls -l /usr/bin/omshell

Como puedes ver, es difícil de determinar el tamaño del archivo en bytes. ¿Un archivo 2807560 es grande o pequeño? Parece bastante grande, pero es difícil de determinar su tamaño utilizando los bytes. Piénsalo de esta manera: si alguien diera la distancia entre Gualeguaychú y Montevideo utilizando centímetros, ese valor esencialmente no tendría sentido porque una distancia como ésta la piensas en términos de kilómetros.

Sería mejor si el tamaño del archivo fuese presentado en un tamaño más fácilmente legible, tal como megabytes o gigabytes. Para lograr esto, añade la opción -h al comando ls. Importante: Debes utilizar la opción -h junto con la opción -l.

Lista de Directorios

Cuando se utiliza el comando ls -d, se refiere al directorio actual y no al contenido dentro de él. Sin otras opciones, es algo sin sentido, aunque es importante tener en cuenta que al directorio actual siempre se refiere con un solo punto (.):

ls -d                                           
                                                                 

Para utilizar el comando ls -d de una manera significativa tienes que añadir la opción -l. En este caso, ten en cuenta que el primer comando muestra los detalles de los contenidos en el directorio /home/carlos, mientras que el segundo lista el directorio /home/carlos.

ls -ld                                          

Observa el punto solo al final de la segunda lista larga. Esto indica que el directorio actual está en la lista y no el contenido.

Linux ls -d */

Si solo desea mostrar los subdirectorios excluyendo todos los demás archivos, puede usar este comando.

Ejemplo:

ls-d*/  

El resultado anterior solo muestra los subdirectorios excluyendo todos los demás archivos.

Linux ls -g

Si no desea mostrar la información del propietario en su lista, puede excluir esta columna con la ayuda de este comando.

Ejemplo:

 ls -g

Aquí se excluye la columna del propietario.

ls -lG

Si no desea mostrar la información del grupo en su lista, puede excluir esta columna con la ayuda de este comando.

Ejemplo:

 ls -lG

Listado Recursivo

Habrá momentos cuando quieras visualizar todos los archivos en un directorio, así como todos los archivos en todos los subdirectorios bajo un directorio. Esto se llama listado recursivo.

Para realizar un listado recursivo, utiliza la opción -R para el comando ls:

ls -R 

ls -R /etc/ppp  

Ten en cuenta que en el ejemplo anterior, los archivos en el directorio /etc/ppp se listaron primero. Después de eso, se listan los archivos en el directorio /etc/ppp/peers (no hubo ningún archivo en este caso, pero si hubiera encontrado cualquier archivo en este directorio, se habría visualizado).

Ten cuidado con esta opción; por ejemplo, ejecutando el comando ls -R / se listarían todos los archivos del sistema de archivos, incluyendo todos los archivos de cualquier dispositivo USB y DVD en el sistema. Limita el uso de la opción -R para estructuras de directorio más pequeñas.

Ordenar un Listado

De forma predeterminada, el comando ls ordena los archivos alfabéticamente por nombre de archivo. A veces, puede ser útil ordenar los archivos utilizando diferentes criterios. Para ordenar los archivos por tamaño, podemos utilizar la opción -S. Observa la diferencia en la salida de los dos siguientes comandos:

Aparecen los mismos archivos y directorios, pero en un orden diferente. Mientras que la opción -S trabaja por sí misma, realmente no puedes decir que la salida está ordenada por tamaño, por lo que es más útil cuando se utiliza con la opción -l. El siguiente comando listará los archivos del mayor al menor y mostrará el tamaño real del archivo.

También puede ser útil usar la opción -h para mostrar los tamaños de los archivos de una manera legible:

También es posible ordenar los archivos según el momento en que se modificaron. Puedes hacer esto mediante la opción -t. La opción -t listará los archivos modificados más recientemente en primer lugar. Esta opción puede utilizarse sola, pero otra vez, es generalmente más útil cuando se combina con la opción -l: 

Es importante recordar que la fecha de modificación de los directorios representa la última vez que un archivo se agrega o se elimina del directorio.

Si los archivos en un directorio se modificaron hace muchos días o meses, puede ser más difícil de decir exactamente cuándo fueron modificados, ya que para los archivos más antiguos sólamente se proporciona la fecha. Para una información más detallada de la hora de modificación puedes utilizar la opción –full time que visualiza la fecha y la hora completas (incluyendo horas, minutos, segundos…):

La opción –full-time asumirá automáticamente la opción -l.

Es posible realizar una ordenación inversa con las opciones -S o -t mediante la opción -r. El siguiente comando ordena los archivos por tamaño, de menor a mayor:

El siguiente comando listará los archivos por fecha de modificación, de la más antigua a la más reciente:

Listado con Globs (Comodines)

Puedes listar todos los archivos en el directorio /etc que comienzan con la letra l utilizando el siguiente comando:

En Linux, un glob es un mecanismo de coincidencia de patrones que se utiliza para la expansión de nombres de archivos en el shell. El término “glob” representa el concepto de coincidencia de patrones de forma global o expansiva en múltiples nombres de archivos o rutas. Permite a los usuarios especificar patrones comodín para hacer coincidir archivos o directorios según ciertos criterios. La función de globbing en Linux proporciona flexibilidad y eficiencia al trabajar con múltiples archivos.

Al utilizar comodines como un asterisco (*) o un signo de interrogación (?) , los usuarios pueden hacer coincidir nombres de archivos o rutas que cumplan con patrones específicos, lo que simplifica tareas como enumerar, copiar, mover o eliminar archivos. El uso de comodines es una parte integral del shell de Linux, lo que facilita la realización de operaciones en grupos de archivos al expandir el patrón especificado en una lista de nombres de archivos coincidentes.

Ahora que sabes que el comando ls se utiliza normalmente para listar los archivos en un directorio, el uso del comando echo puede parecer una elección extraña. Sin embargo, hay algo sobre el comando ls que pudo haber causado confusión mientras hablamos sobre los globs. Esta «función» también puede causar problemas cuando intentas listar los archivos utilizando los patrones glob.

Ten en cuenta que es el shell, no los comandos echo o ls, el que expande el patrón glob a los nombres de archivo correspondientes. En otras palabras, cuando introduces el comando echo /etc/e*, lo que el shell hizo antes de ejecutar el comando echo fue reemplazar el e* por todos los archivos y directorios dentro del directorio /etc que coinciden con el patrón.

Coincidencia de comodines

Glob Linux admite varios caracteres comodín para la búsqueda de patrones. El asterisco (*) busca cualquier cantidad de caracteres (incluso ninguno) dentro de un nombre de archivo o segmento de ruta. Por ejemplo, *.txt busca todos los archivos con extensión .txt en el directorio actual.

El signo de interrogación (?) coincide con cualquier carácter individual dentro de un nombre de archivo o segmento de ruta. Por ejemplo, file?.txt coincide con archivos como file1.txt o fileA.txt , pero no file10.txt .

Los corchetes ([ ]) permiten especificar un rango o conjunto de caracteres que se deben buscar. Por ejemplo, file[123].txt busca file1.txt , file2.txt o file3.txt.

Veremos esto con mas detalle en un post dedicado.

Por lo tanto, si ejecutaras el comando ls /etc/e*, lo que el shell realmente haría, sería lo siguiente:

ls /etc/encript.cfg /etc/environment /etc/ethers /etc/event.d /etc/exports

Cuando el comando ls ve varios argumentos, realiza una operación de listado en cada elemento por separado. En otras palabras, el comando ls /etc/encript.cfg /etc/environment es esencialmente igual a ls /etc/encript.cfg; ls /etc/environment.

Ahora considera lo que sucede cuando se ejecuta el comando ls en un archivo:

Como puedes ver, ejecutando el comando ls en un solo archivo se imprime el nombre del archivo. Generalmente esto es útil si quieres ver los detalles acerca de un archivo mediante la opción -l del comando ls:

Sin embargo, ¿Qué ocurre si el comando ls recibe un nombre de directorio como un argumento? En este caso, la salida del comando es diferente a que si el argumento es un nombre de archivo:

Si proporcionas un nombre de directorio como argumento del comando ls, el comando mostrará el contenido del directorio (los nombres de los archivos en el directorio), y no sólo proporcionará el nombre del directorio. Los nombres de los archivos, que se ven en el ejemplo anterior, son los nombres de los archivos en el directorio.

¿Por qué ésto es un problema al utilizar los globs? Considera el siguiente resultado:

Como puedes ver, cuando el comando ls ve un nombre de archivo como argumento, sólo muestra el nombre del archivo. Sin embargo, para cualquier directorio, mostrará el contenido del directorio, y no sólo el nombre del directorio.

Esto se vuelve aún más confuso en una situación como la siguiente:

En el ejemplo anterior, parece que el comando ls es simplemente incorrecto. Pero lo que realmente sucedió es que lo único que coincide con el glob etc/en * es el directorio /etc/environment. Por lo tanto, el comando ls muestra sólo los archivos en ese directorio.

Hay una solución simple a este problema: al utilizar los argumentos glob con el comando ls, utiliza siempre la opción -d. Cuando utilizas la opción -d, el comando ls no muestra el contenido de un directorio, sino más bien el nombre del directorio:

Cómo utilizar el comando Tree en Kali Linux

A continuación repasaremos algunos ejemplos de comandos tree para que no solo aprendamos a utilizarlos sino también a dominarlos.

Salida de tree básico

El comando tree se puede utilizar de varias maneras, la más fundamental de las cuales es:

 tree

La salida muestra una estructura de árbol de nuestro directorio actual, mostrando todas las carpetas, subcarpetas y archivos.

Mostrar el contenido de un directorio específico

Si deseamos listar los archivos y subcarpetas de un directorio determinado en lugar del directorio actual, podemos utilizar la siguiente sintaxis para determinar la ruta o el nombre del directorio:

tree a [NombreDirectorio/Ruta]  

Ejemplo:

El siguiente comando listará todos los archivos y subcarpetas en el directorio Imágenes si existen:

 tree -a hacker  

Mostrar solo listado de directorios a través del árbol

Si simplemente queremos ver el listado de directorios en lugar de los archivos subyacentes, podemos usar el indicador “d” con el comando tree:

 tree -d  

Mostrar el prefijo de ruta completo de archivos y carpetas mediante un árbol

Usando la bandera “f” , podemos personalizar la bandera del árbol para mostrar la ruta completa como prefijo para todos los archivos y carpetas enumerados.

tree -f  

Visualizar el tamaño de archivos y carpetas mediante un árbol

Usando la bandera “s”, podemos hacer que el comando tree imprima el tamaño de todos los archivos y carpetas en nuestro directorio en bytes.

 tree -s  

Esto nos ayuda a determinar qué elementos ocupan mucho espacio en nuestro sistema y eliminar los que no son necesarios.

Mostrar permisos de lectura y escritura de archivos y carpetas mediante el comando de árbol

Podemos ver los permisos de lectura, escritura y eliminación de los archivos y carpetas enumerados usando el indicador “p” en nuestro comando de árbol:

 tree -p 

Entonces, antes de que necesitemos realizar una operación en un archivo o carpeta, primero debemos comprender y tal vez modificar los permisos que tenemos en ese elemento.

Listar el contenido de la carpeta hasta un nivel de contenido/profundidad a través del árbol

Podemos utilizar el comando tree para mostrar el árbol en un nivel o profundidad específicos en lugar de enumerar todos los elementos de nuestro directorio. Por ejemplo, el nivel 1 del comando tree solo mostrará la lista de la carpeta indicada en lugar de cualquiera de sus subcarpetas. El siguiente es un ejemplo de cómo utilizar la sintaxis:

 tree -L[n]  

Ejemplo

Con el parámetro “-d” , el siguiente comando solo mostrará los subdirectorios del directorio actual en lugar del árbol completo.

 tree -d -L 1  

Lista de puntos clave con resúmenes

  1. Definición de comandos:
    • Un comando es una instrucción dada a la computadora para ejecutar una tarea específica en la terminal. En Linux, los comandos distinguen entre mayúsculas y minúsculas.
  2. Tipos de comandos:
    • Integrados del shell: Funciones nativas del shell, como cd.
    • Externos: Programas independientes ejecutables, como ls.
  3. Comandos básicos de directorio:
    • pwd: Muestra la ruta completa del directorio actual.
    • ls: Lista el contenido del directorio actual, con opciones para formatos largos o archivos ocultos.
    • cd: Cambia el directorio de trabajo actual.
    • mkdir y rmdir: Crean y eliminan directorios, respectivamente.
  4. Conceptos de rutas:
    • Ruta absoluta: Empieza desde la raíz /, especifica la ubicación completa.
    • Ruta relativa: Relativa al directorio actual, útil para accesos cercanos.
  5. Permisos y metadatos:
    • ls -l detalla permisos, número de enlaces, propietario, grupo, tamaño, fecha de modificación y nombre del archivo.
  6. Uso de globs y comodines:
    • Usar *, ? y [ ] para buscar o referenciar múltiples archivos o directorios que coincidan con un patrón específico.
  7. Alias en bash:
    • Simplificar comandos complejos o frecuentemente utilizados creando alias, configurados en archivos como .bashrc.
  8. Comando tree:
    • Proporciona una representación jerárquica de archivos y directorios, con opciones para mostrar permisos, tamaños, rutas completas, o limitar la profundidad del árbol.
  9. Diferenciación entre Linux y otros sistemas:
    • Linux es sensible a mayúsculas y minúsculas, lo que lo diferencia de sistemas como Windows.
  10. Accesos directos útiles:
    • ..: Subir un nivel en el directorio.
    • .: Referencia al directorio actual.
    • ~: Directorio de inicio del usuario actual.

Pon en práctica lo aprendido

Ahora pon a prueba lo aprendido con estas preguntas y ejercicios.

Preguntas sobre el artículo:

  1. ¿Qué es un comando en informática y cómo se utiliza?
  2. ¿Qué diferencia hay entre un comando de shell integrado y un comando externo en Linux?
  3. ¿Cómo se determina el directorio actual en el que estás trabajando en Linux?
  4. ¿Qué hace el comando pwd y qué opciones ofrece?
  5. Explica las diferencias entre una ruta absoluta y una ruta relativa en Linux.
  6. ¿Cómo se utiliza el comando cd para moverse entre directorios en Linux?
  7. ¿Qué significa que Linux es un sistema «Case Sensitive» y cómo afecta al uso de comandos?
  8. ¿Qué hace el comando ls y cuáles son sus opciones más utilizadas?
  9. ¿Qué son los archivos ocultos en Linux y cómo se muestran con el comando ls?
  10. ¿Qué ventajas ofrece la función de autocompletado de rutas con la tecla Tab?

Ejercicios sobre el contenido:

  1. Describe el uso del comando pwd y proporciona un ejemplo práctico.
  2. Utiliza el comando ls -lh en un directorio y describe cada columna de la salida obtenida.
  3. Escribe un comando que cambie al directorio raíz del sistema y luego vuelva al directorio de inicio del usuario.
  4. Muestra cómo listar solo los subdirectorios del directorio actual con el comando ls.
  5. Usa rutas relativas para acceder a un directorio padre desde un subdirectorio y luego a otro directorio vecino.
  6. Crea un alias para que el comando ls -la se pueda ejecutar escribiendo solo ll.
  7. Demuestra cómo listar todos los archivos modificados más recientemente en un directorio con el comando ls.
  8. Cambia al directorio /tmp utilizando una ruta absoluta y luego vuelve al directorio actual usando cd -.
  9. Crea un archivo oculto en tu directorio de inicio y muestra cómo puedes verlo con ls.
  10. Utiliza el comando tree para mostrar solo los nombres de directorios hasta un nivel de profundidad de 2.

Respuestas a las preguntas:

  1. Un comando es una instrucción que se da a la computadora para realizar una acción específica. Se usa escribiéndolo en la línea de comandos y presionando Enter.
  2. Comando integrado es parte del shell (como cd), mientras que un comando externo es un programa independiente ejecutable (como ls).
  3. El directorio actual se determina con el comando pwd, que muestra la ruta completa desde la raíz.
  4. El comando pwd imprime el directorio actual. Sus opciones incluyen -L (muestra la ruta lógica) y -P (muestra la ruta física).
  5. Ruta absoluta comienza desde el directorio raíz (/), mientras que ruta relativa depende del directorio actual.
  6. El comando cd permite moverse entre directorios. Ejemplo: cd /etc cambia al directorio /etc, y cd .. sube un nivel en la jerarquía.
  7. Linux es «Case Sensitive», lo que significa que distingue entre mayúsculas y minúsculas, por lo que Archivo y archivo son diferentes.
  8. El comando ls lista archivos y directorios. Opciones como -l (lista detallada), -a (incluye archivos ocultos) y -h (formato legible) son comunes.
  9. Archivos ocultos empiezan con un punto (.). Se muestran con ls -a.
  10. La autocompletación con Tab facilita escribir rutas largas o complejas, reduciendo errores y ahorrando tiempo.

Respuestas a los ejercicios:

  1. Uso de pwd:bashCopiar códigopwd Imprime algo como /home/usuario, indicando el directorio actual.
  2. ls -lh en un directorio:
    • Columna 1: Permisos
    • Columna 2: Número de enlaces
    • Columna 3: Propietario
    • Columna 4: Grupo
    • Columna 5: Tamaño
    • Columna 6-8: Fecha de modificación
    • Columna 9: Nombre del archivo
  3. Cambio de directorio:bashCopiar códigocd / cd ~
  4. Listar subdirectorios:bashCopiar códigols -d */
  5. Usar rutas relativas:bashCopiar códigocd .. cd otro_directorio
  6. Crear un alias:bashCopiar códigoalias ll="ls -la"
  7. Archivos recientes:bashCopiar códigols -lt
  8. Ir a /tmp y volver:bashCopiar códigocd /tmp cd -
  9. Crear y ver archivo oculto:bashCopiar códigotouch ~/.archivo_oculto ls -a
  10. Comando tree:bashCopiar códigotree -d -L 2

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