2.3 Lección 1
Introducción
Certificación: |
Linux Essentials |
---|---|
Versión: |
1.6 |
Tema: |
2 Encontrando tu camino en el sistema Linux |
Objectivo: |
2.3 Usando directorios y listando archivos |
Lección: |
1 de 2 |
Archivos y Directorios
El sistema de archivos Linux es similar a otros sistemas de archivos de otros sistemas operativos, ya que contiene ficheros y directorios. Los ficheros almacenan datos como texto (legible por el ser humano), programas ejecutables o datos binarios que son interpretados por el computador. Mientras que los directorios se utilizan para crear una organización dentro del sistema de archivos. Los directorios pueden contener archivos y otros directorios.
$ tree Documents ├── Mission-Statement.txt └── Reports └── report2018.txt 1 directory, 2 files
En este ejemplo, Documents
es un directorio que contiene un archivo (Mission-Statement.txt
) y un subdirectorio (Reports
) El directorio Reports
a su vez contiene un archivo llamado report2018.txt
. El directorio Documents
se dice que es el padre del directorio Reports
.
Tip
|
Si el comando |
Nombres de archivos y directorios
Los nombres de archivos y directorios en Linux pueden contener letras minúsculas y mayúsculas, números, espacios y caracteres especiales; sin embargo, dado que muchos caracteres especiales tienen un significado diferente en el intérprete de comandos de Linux, es una buena práctica no utilizar espacios o caracteres especiales cuando se nombran archivos o directorios. Un ejemplo de esto son los espacios, ya que necesitan que el carácter escape (escape character) \
sea introducido correctamente:
$ cd Mission\ Statements
También observemos el nombre del archivo report2018.txt
. Los nombres de archivos pueden contener un sufijo que se encuentra después del punto (.
). A diferencia de Windows, este sufijo no tiene un significado especial en Linux; solo está ahí para la comprensión humana. En nuestro ejemplo, el .txt
nos indica que se trata de un archivo de texto plano, aunque técnicamente podría contener cualquier tipo de dato.
Navegando en el Sistema de Archivos
Obteniendo la ubicación actual
Dado que los shells de Linux como Bash están basados en texto, es importante recordar la ubicación actual cuando se navega por el sistema de archivos, el command prompt puede proporcionar esta información:
user@hostname ~/Documents/Reports $
Tenga en cuenta que información como usuario
y nombre de host
se cubrirá en futuras secciones. Desde el prompt, ahora sabemos que nuestra ubicación actual se encuentra en el directorio Reports
.
De forma similar, el comando pwd
imprimirá el directorio de trabajo (working directory):
user@hostname ~/Documents/Reports $ pwd /home/user/Documents/Reports
La relación de directorios se representa con una barra oblicua (/
). Sabemos que Reports
es un subdirectorio de Documents
y este es un subdirectorio de user
, que se encuentra en un directorio llamado home
. El directorio home
no parece tener un directorio padre, pero esto no es cierto en lo absoluto; el padre de home
se llama root, y está representado por la primera barra oblicua (/
) que discutiremos en una sección posterior.
Note que la salida del comando pwd
difiere ligeramente de la ruta dada por el command prompt. En lugar de /home/user
contiene una tilde (~
). La tilde es un carácter especial que representa el directorio home del usuario. Esto será cubierto con más detalle en la siguiente lección.
Listando el contenido de los directorios
El contenido del directorio actual se lista con el comando ls
:
user@hostname ~/Documents/Reports $ ls report2018.txt
Tenga en cuenta que ls
no proporciona información sobre el directorio padre. Por defecto ls
no muestra ninguna información sobre el contenido de los subdirectorios. El comando ls
sólo puede “ver” lo que hay en el directorio actual.
Cambiando al directorio actual
La navegación en Linux se hace principalmente con el comando cd
. Esto cambia el directorio. Usando el comando pwd
de antes, sabemos que nuestro directorio actual es /home/user/Documents/Reports
. Podemos cambiar nuestro directorio actual introduciendo una nueva ruta:
user@hostname ~ $ cd /home/user/Documents user@hostname ~/Documents $ pwd /home/user/Documents user@hostname ~/Documents $ ls Mission-Statement.txt Reports
Desde nuestra nueva ubicación, podemos “ver” Mission-Statement.txt
y nuestro subdirectorio Reports
, pero no el contenido de nuestro subdirectorio:
user@hostname ~/Documents $ cd Reports user@hostname ~/Documents/Reports $ pwd /home/user/Documents/Reports user@hostname ~/Documents/Reports $ ls report2018.txt
Ahora estamos de vuelta donde empezamos.
Rutas Absolutas y Relativas
El comando pwd
siempre imprime una ruta absoluta. Esto significa que la ruta contiene cada paso de la ruta, desde la parte superior del sistema de ficheros (/
) hasta la parte inferior (Reports
). Las rutas absolutas siempre comienzan con un /
.
/ └── home └── user └── Documents └── Reports
La ruta absoluta contiene toda la información necesaria para llegar a Reports
desde cualquier parte del sistema de ficheros, el inconveniente es que es tedioso de escribir.
El segundo ejemplo (cd Reports
) era mucho más fácil de escribir, este es un ejemplo de una ruta relativa. Las rutas relativas son más cortas, pero sólo tienen significado en relación a tu ubicación actual. Considera esta analogía: te estoy visitando en tu casa y me dices que tu amigo vive en la casa de al lado, entenderé esa ubicación porque es relativa a mi ubicación actual, pero si me dices esto por teléfono, no podré encontrar la casa de tu amigo, necesitarás darme la dirección completa de la calle.
Rutas Relativas Especiales
Para revelar las primeras rutas especiales, entramos en el comando ls
con la bandera -a
. Esta bandera modifica el comando ls
para que se listen todos los archivos y directorios all, incluyendo los archivos y directorios ocultos:
user@hostname ~/Documents/Reports $ ls -a . .. report2018.txt
Note
|
Puedes consultar la página de |
Este comando ha revelado dos resultados adicionales: Estas son rutas especiales, no representan nuevos archivos o directorios, sino que representan directorios que usted ya conoce:
.
-
Indica la ubicación actual (en este caso,
Reports
). ..
-
Indica el directorio padre (en este caso,
Documents
).
Por lo general, no es necesario usar una ruta relativa especial para la ubicación actual. Es más fácil y comprensible escribir report2018.txt
que ./report2018.txt
, pero el .
tiene usos que aprenderá en futuras secciones. Por ahora, nos centraremos en la ruta relativa para el directorio padre:
user@hostname ~/Documents/Reports $ cd .. user@hostname ~/Documents $ pwd /home/user/Documents
El ejemplo de cd
es mucho más fácil cuando se usa ..
en lugar de la ruta absoluta, además, podemos combinar este patrón para navegar por el árbol de archivos muy rápidamente.
user@hostname ~/Documents $ cd ../.. $ pwd /home
Ejercicios guiados
-
Para cada una de las siguientes rutas, identifique si es absoluta o relativa:
/home/user/Downloads
../Reports
/var
docs
/
-
Observe la siguiente estructura de archivos. Nota: Los directorios terminan con una barra inclinada (
/
) cuando se ejecutatree
con la opción-F
. Necesitará privilegios elevados para ejecutarlo en el directorio principal root (/
). El siguiente es un resultado de ejemplo y no es indicativo de una estructura de directorio completa. Úselo para responder las siguientes preguntas:$ sudo tree -F / / ├── etc/ │ ├── network/ │ │ └── interfaces │ ├── systemd/ │ │ ├── resolved.conf │ │ ├── system/ │ │ ├── system.conf │ │ ├── user/ │ │ └── user.conf │ └── udev/ │ ├── rules.d/ │ └── udev.conf └── home/ ├── lost+found/ └── user/ └── Documents/ 12 directorios, 5 archivos
Use esta estructura para responder las siguientes preguntas.
Un usuario ingresa los siguientes comandos:
$ cd /etc/udev $ ls -a
¿Cuál será la salida del comando
ls -a
? -
Ingrese el comando más corto posible para cada una de las siguientes situaciones:
-
Su ubicación actual es root (
/
). Ingrese el comando para navegar alost+found
dentro del directoriohome
(ejemplo):$ cd home/lost+found
-
Su ubicación actual es root (
/
). Ingrese el comando para navegar al directorio llamado/etc/network/
. -
Su ubicación actual es
/home/user/Documents/
. Navegue al directorio llamado/etc/
. -
Su ubicación actual es
/etc/systemd/system/
. Navegue al directorio llamado/home/user/
.
-
-
Considere los siguientes comandos:
$ pwd /etc/udev/rules.d $ cd ../../systemd/user $ cd .. $ pwd
¿Cuál es el resultado del comando final
pwd
?
Ejercicios exploratorios
-
Supongamos que un usuario ha ingresado los siguientes comandos:
$ mkdir "this is a test" $ ls this is a test
¿Qué comando
cd
le permitiría ingresar a este directorio? -
Intente esto nuevamente, pero después de escribir
cd this
, presione la tecla TAB. ¿Qué se muestra ahora en la solicitud?Este es un ejemplo de _ autocompletado_, la cual es una herramienta invaluable no solo para ahorrar tiempo, sino también para evitar errores ortográficos.
-
Intente crear un directorio cuyo nombre contenga un carácter
\
. Visualice el nombre del directorio conls
y elimine el directorio.
Resumen
En esta lección usted aprendió:
-
Los fundamentos del sistema de archivos Linux
-
La diferencia entre directorios padres y subdirectorios
-
La diferencia entre las rutas absolutas y relativas
-
Las rutas relativas especiales
.
y..
-
Navegar por el sistema de archivos usando
cd
-
Mostrar tu ubicación actual usando
pwd
-
Listar todos los archivos y directorios usando
ls -a
Los siguientes comandos se discutieron en esta lección:
cd
-
Cambiar el directorio actual.
pwd
-
Imprime la ruta actual del directorio de trabajo.
ls
-
Enumerar el contenido de un directorio y mostrar las propiedades de los archivos.
mkdir
-
Crear un nuevo directorio.
tree
-
Muestra la jerárquica de un árbol de directorios.
Respuestas a los ejercicios guiados
-
Para cada una de las siguientes rutas, identifique si es absoluta o relativa:
/home/user/Downloads
absoluta
../Reports
relativa
/var
absoluta
docs
relativa
/
absoluta
-
Observe la siguiente estructura de archivos. Nota: Los directorios terminan con una barra inclinada (
/
) cuando se ejecutatree
con la opción-F
. Necesitará privilegios elevados para ejecutarlo en el directorio principal root (/
). El siguiente es un resultado de ejemplo y no es indicativo de una estructura de directorio completa. Úselo para responder las siguientes preguntas:$ sudo tree -F / / ├── etc/ │ ├── network/ │ │ └── interfaces │ ├── systemd/ │ │ ├── resolved.conf │ │ ├── system/ │ │ ├── system.conf │ │ ├── user/ │ │ └── user.conf │ └── udev/ │ ├── rules.d/ │ └── udev.conf └── home/ ├── lost+found/ └── user/ └── Documents/ 12 directorios, 5 archivos
Un usuario ingresa los siguientes comandos:
$ cd /etc/udev $ ls -a
¿Cuál será la salida del comando
ls -a
?. .. rules.d udev.conf
-
Ingrese el comando más corto posible para cada una de las siguientes situaciones:
-
Su ubicación actual es root (
/
). Ingrese el comando para navegar alost+found
dentro del directoriohome
(ejemplo):$ cd home/lost+found
-
Su ubicación actual es root (
/
). Ingrese el comando para navegar al directorio llamado/etc/network/
$ cd etc/network
-
Su ubicación actual es
/home/user/Documents/
. Navegue al directorio llamado/etc/
.$ cd /etc
-
Su ubicación actual es
/etc/systemd/system/
. Navegue al directorio llamado/home/user/
.$ cd /home/user
-
-
Considere los siguientes comandos:
$ pwd /etc/udev/rules.d $ cd ../../systemd/user $ cd .. $ pwd
¿Cuál es el resultado del comando final
pwd
?/etc/systemd
Respuestas a los ejercicios exploratorios
-
Supongamos que un usuario ha ingresado los siguientes comandos:
$ mkdir "this is a test" $ ls this is a test
¿Qué comando
cd
le permitiría ingresar a este directorio?$ cd this\ is\ a\ test
-
Intente esto nuevamente, pero después de escribir
cd this
, presione la tecla TAB. ¿Qué se muestra ahora en la solicitud?$ cd this\ is\ a\ test
Este es un ejemplo de _ autocompletado_, que es una herramienta invaluable no solo para ahorrar tiempo, sino también para evitar errores ortográficos.
-
Intente crear un directorio cuyo nombre contenga un carácter
\
. Visualice el nombre del directorio conls
y elimine el directorio.Puedes escapar de la barra invertida usando otra igual (
\\
) o usar comillas simples o dobles en todo el nombre del directorio:$ mkdir my\\dir $ ls 'my\dir' $ rmdir 'my\dir'