Ir al contenido

Introducción a Linux/Manipulación de archivos

De Wikilibros, la colección de libros de texto de contenido libre.

Vamos a aprender a crear, borrar, mover, y manejar directorios y archivos.

Cómo funcionan los directorios y archivos en Linux

[editar]

Es buen momento para aprender algunas consideraciones importantes sobre la manipulación de directorios y archivos en Linux. Algunos de estos conceptos pueden ser complejos de entender si estás acostumbrado a otros sistemas operativos como Windows, que funcionan de forma muy distinta.

En Linux todo es un archivo

[editar]

En los sistemas operativos de tipo Unix, y por extensión también en Linux, se sigue la filosofía de que «todo es un archivo». Esto significa que casi todos los recursos del sistema están representados como simples archivos. Un documento de texto plano es un archivo, pero un directorio también lo es (es un tipo especial de archivo que contiene referencias a otros archivos). Incluso el hardware de la computadora sigue esta regla: tu teclado es un archivo especial del que el sistema lee las pulsaciones de teclas, y una memoria USB es un archivo especial en el que el sistema lee y escribe datos. Aunque en principio, esto no va a cambiar la forma de usar la computadora, entenderlo te ayudará a comprender el comportamiento de Linux.

Linux es un sistema sin extensiones de archivo

[editar]

En otros sistemas operativos como Windows, el sistema utiliza la extensión para determinar el tipo de archivo.

  • archivo.exe es un ejecutable.
  • archivo.txt es un archivo de texto plano.
  • archivo.png es una imagen.

Sin embargo, Linux ignora esta extensión, y examina el contenido para determinar su tipo. Es decir, podrías tener un archivo llamado imagen.png que contenga una imagen, podría cambiarlo de nombre a imagen.txt o imagen.exe y Linux lo seguiría tratando como un archivo de imagen.

Aun así, las extensiones de archivo se utilizan en Linux, porque es una forma sencilla de acordarse de qué hay dentro de un archivo, por eso verás que se siguen usando con normalidad extensiones como jpg, png, txt, mp3, etc, aunque técnicamente no sean necesarias.

Podemos usar el comando file [ruta] para averiguar qué tipo de archivo es. Fíjate en que podemos hacer el comando file Documents/ y nos dirá simplemente que Documents/ es un archivo de tipo directory esto es debido al tema que explicamos anteriormente, y es que los directorios son un archivo que contiene referencias a otros archivos, por eso en Linux se les suele llamar directorios y no carpetas.

usuario@equipo:~$ file ejemplo.txt
ejemplo.txt: Unicode text, UTF-8 text
usuario@equipo:~$ file Documents/
Documents/: directory

Linux distingue entre mayúsculas y minúsculas

[editar]

Otros sistemas, como Windows, no distinguen entre mayúsculas y minúsculas al referirse a archivos. Linux no funciona así. En Linux es posible tener dos o más archivos y directorios con el mismo nombre, pero con letras de diferente mayúscula o minúscula.

# Esto son tres archivos distintos
usuario@equipo:~$ ls
EJEMPLO.TXT Ejemplo.txt ejemplo.txt

# Esto me da error porque intento acceder archivo que no existe
usuario@equipo:~$ file ejemplo.TXT
ejemplo.TXT: ERROR: cannot open 'ejemplo.TXT' (No such file or directory)

Espacios en los nombres

[editar]

Puedes poner espacios en un nombre foto de ejemplo.png pero hay que tener cuidado con ellos, porque recordarás que en la línea de comandos un espacio separa elementos, por ejemplo al hacer el comando ls Documents/ usamos un espacio para separar el comando ls del parámetro Documents/.

Entonces ¿cómo lo hacemos si el archivo ya de por sí tiene espacios? en tal caso hay que usar el carácter especial \ antes del espacio. Por ejemplo que para hacer el comando file con el archivo foto de ejemplo.png tenemos que hacer file foto\ de\ \ejemplo.png.

Directorios y archivos ocultos

[editar]

Todos los archivos y directorios que comienzan con un punto ., se consideran ocultos. Esto simplemente significa que por defecto cuando navegemos por nuestro sistema de archivos cualquier archivo que empiece por punto como .ejemplodeoculto.txt permanecerá oculto.

# Por defecto, no se listan los archivos ocultos
usuario@equipo:~$ ls
ejemplo.txt

# Con el parámetro -a puedo listar los archivos ocultos
usuario@equipo:~$ ls -a
ejemplo.txt .ejemplodeoculto.txt

Comandos de manipulación de archivos

[editar]

Ya hemos cubierto los fundamentos sobre cómo funcionan los archivos en Linux, es hora de empezar a experimentar con ello. Vamos a comenzar aprendiendo a crear, eliminar, copiar, y mover archivos y directorios. En próximos capítulos aprenderemos a cómo manipular su contenido.

Crear un directorio

[editar]

Los directorios permiten organizar tus archivos en una estructura ordenada y jerárquica. Para crearlos haremos uso del comando mkdir <opciones> [directorio], «mkdir» es una abreviatura del inglés «Make Directory» (Crear Directorio).

usuario@equipo:~$ ls
Documents/ ejemplo.txt

# Creamos el directorio directorioejemplo
usuario@equipo:~$ mkdir directorioejemplo

# Hacemos ls de nuevo, y ¡ahí está nuestro nuevo directorio!
usuario@equipo:~$ ls
directorioejemplo/ Documents/ ejemplo.txt

Eliminar un directorio

[editar]

Eliminar un directorio en Linux es muy sencillo. Sin embargo, es importante destacar que no existe la función de deshacer en la línea de comandos de Linux (los entornos de escritorio con interfaz gráfica suelen ofrecerla, pero la línea de comandos no). Así que, ten cuidado cuando vayas a borrar algo.

El comando para eliminar un directorio es rmdir <opciones> [directorio], «rmdir» es una abreviatura del inglés «remove directory» (Eliminar Directorio). Es importante que sepas, que rmdir solo sirve para eliminar directorios que se encuentren vacíos.

usuario@equipo:~$ ls
directorioejemplo/ Documents/ ejemplo.txt

# Eliminamos el directorio directorioejemplo
usuario@equipo:~$ rmdir directorioejemplo

# Hacemos ls de nuevo, y ¡directorioejemplo ya no está!
usuario@equipo:~$ ls
Documents/ ejemplo.txt

Pero, ¿y si el directorio no se encuentra vacío porque contiene archivos o subdirectorios en su interior? en ese caso el comando rmdir dará un error. Para eliminar un directorio que no está vacío, debes usar el comando rm -r [directorio] (la opción -r significa recursivo). Ten cuidado cuando uses esta opción porque eliminará todo lo que haya dentro del directorio, asegúrate de que de verdad quieres borrar ese directorio. Si quieres ir con mas precaución, también puedes usar el comando rm -ri (la opción -i significa interactivo) para que el sistema te pregunte archivo por archivo antes de borrar.

usuario@equipo:~$ ls
directorioconcosas/ Documents/ ejemplo.txt

# El comando rmdir falla porque directorioconcosas no está vacío
usuario@equipo:~$ rmdir directorioconcosas
rmdir: failed to remove 'directorioconcosas': Directory not empty

# Hacemos rm -r que elimina el directorio aunque no esté vacío
usuario@equipo:~$ rm -r directorioconcosas

# Hacemos ls de nuevo, y ¡directorioconcosas ya no está!
usuario@equipo:~$ ls
Documents/ ejemplo.txt

Crear un archivo

[editar]

Podemos crear un archivo vacío con el comando touch [nombrearchivo].

usuario@equipo:~$ ls
directorioconcosas/ Documents/ ejemplo.txt
usuario@equipo:~$ touch ejemplo2.txt
usuario@equipo:~$ ls
directorioconcosas/ Documents/ ejemplo.txt ejemplo2.txt

Eliminar un archivo

[editar]

Para eliminar un archivo hacemos uso de un comando que ya hemos visto, el comando rm [archivo]. «rm» es una abreviatura del inglés «remove» (Eliminar).

usuario@equipo:~$ ls
directorioconcosas/ Documents/ ejemplo.txt ejemplo2.txt
usuario@equipo:~$ rm ejemplo2.txt
usuario@equipo:~$ ls
directorioconcosas/ Documents/ ejemplo.txt

Copiar un archivo o directorio

[editar]

Para poder crear una copia de un archivo o directorio, usamos el comando cp [origen] [destino] donde origen es el archivo o directorio que queremos copiar, y destino el destino de esta copia. «cp» es una abreviatura del inglés «copy» (Copiar).

usuario@equipo:~$ ls
directorioconcosas/ Documents/ ejemplo.txt
usuario@equipo:~$ cp ejemplo.txt copia.txt
usuario@equipo:~$ ls
directorioconcosas/ Documents/ ejemplo.txt copia.txt

Si queremos copiar un directorio y también todos sus subdirectorios, tendremos que usar la opción cp -r [directorio origen] [directorio destino] (la opción -r significa recursivo).

usuario@equipo:~$ ls
directorioconcosas/ Documents/
usuario@equipo:~$ cp -r directorioconcosas copiadirectorio
usuario@equipo:~$ ls
copiadirectorio/ directorioconcosas/ Documents/

Mover y renombrar un archivo

[editar]

Para mover un archivo usamos el comando mv [origen] [destino]. Funciona de forma similar al comando cp. Una pequeña ventaja es que podemos mover directorios sin necesidad de usar la opción -r. «mv» es una abreviatura del inglés «move» (Mover).

usuario@equipo:~$ ls
directorioejemplo/ Documents/ ejemplo.txt

# Movemos el archivo ejemplo.txt dentro de directorioejemplo
usuario@equipo:~$ mv ejemplo.txt directorioejemplo/

# ejemplo.txt ya no está aquí
usuario@equipo:~$ ls
directorioejemplo/ Documents/

# Ahora ejemplo.txt está dentro de directorioejemplo
usuario@equipo:~$ ls directorioejemplo/
ejemplo.txt

Renombrar archivos y directorios

[editar]

El comando mv también se usa para cambiar de nombre a archivos y directorios.

usuario@equipo:~$ ls
directorioejemplo/ Documents/ ejemplo.txt

# Renombramos ejemplo.txt a otronombre.txt
usuario@equipo:~$ mv ejemplo.txt otronombre.txt

# Ahora se llama otronombre.txt
usuario@equipo:~$ ls
directorioejemplo/ Documents/ otronombre.txt

Resumen

[editar]

Hemos aprendido los comandos:

  • mkdir: Crear directorio.
  • rmdir: Eliminar directorio vacío.
  • touch: Crear fichero.
  • rm: Eliminar fichero.
    • rm -r para eliminar un directorio y todo su contenido.
  • cp: Copiar directorio o archivo.
  • mv: Mover directorio o archivo.