gestionando-archivos

Ahora que ya te manejas mas o menos en el terminal, y ya sabes como navegar entre archivos, ha llegado el momento de que empieces a crear tus propios directorios y archivos. Así, en este nuevo capítulo del tutorial sobre el terminal descubrirás como gestionar archivos desde el propio terminal.

Antes de meternos a fondo, es necesario que entiendas algunos conceptos básicos en Linux, como el hecho de que todo es un archivo, y algunos aspectos mas.

Características del sistema de archivos

Mayúsculas y minúsculas

Lo primero que tienes que tener en cuenta es que Linux distingue entre mayúsculas y minúsculas. Es decir, no es lo mismo archivo que ArChivo.

Archivos ejecutables

Por otro lado, así como en otros sistemas operativos la extensión de un archivo es importante, en Linux no lo es. Linux es un sistema sin extensiones. Así, en Microsoft Windows archivo.exe es un ejecutable, en Linux, puede o no ser serlo.

Escapando caracteres

Otro aspecto que tienes que observar con especial cuidado son los espacios en los nombres de los archivos. Y es que, aunque un nombre de archivo con espacios en el mismo es perfectamente válido, cuando lo pasas a un comando lo va a interpretar como dos parámetros. Así por ejemplo, quieres crear un directorio utilizando

mkdir mis documentos

encontrarás que se han creado dos directorios, el directorio mis y el directorio documentos. Para evitar este pequeño inconveniente puedes utilizar simples o dobles comillas o escapar el espacio en blanco… te explico. La primera opción sería,

mkdir 'mis documentos'

La segunda opción sería,

mkdir mis\ documentos

Lo que he hecho en el segundo caso es escapar el carácter. Esto le indica al sistema operativo que tiene que tratar el carácter, a continuación del carácter de escape, como un carácter diferente. El carácter de escape es una barra invertida, y se suele utilizar con espacio, simples comillas, dobles comillas, y otros mas. Algunos típicos y muy utilizados son los siguientes,

  • \' comilla simple
  • \" comilla doble
  • \\ barra invertida
  • \n nueva línea
  • \r retorno de carro
  • \t tabulador
  • b retroceso

Archivos y directorios ocultos

Otra característica realmente interesante de Linux es como define que un archivo o directorio está oculto, es decir, que no es visible en primera instancia. Cuando ejecutes la herramienta ls no aparecerá listado.

Para poder ver los archivos y directorios ocultos debes ejecutar ls -a.

Para ocultar archivos tienes dos opciones,

  • comenzar el nombre del archivo con un punto. Es decir miarchivo.txt si que se verá, mientras que .miarchivo.txt estará oculto, y solo se mostrará si ejecutas ls -a.
  • La siguiente es crear un arhivo llamado .hidden, que ya está oculto de por si, y dentro de él, listar todos los archivos que estén ocultos. En el ejemplo anterior, dentro de .hidden nos encontraríamos miarchivo.txt

Todo es un archivo

Si, así como lo lees, en Linux todo es un archivo. Así, un archivo es un archivo, un directorio es un archivo, tu ratón es un archivo, tu teclado es un archivo, tu monitor es un archivo… Si, todo, absolutamente todo, todo es un archivo.

Esto tiene la ventaja de que el mismo conjunto de herramientas y utilidades se puede utilizar con todos estos recursos.

En Linux hay tres tipos de archivos,

  • los archivos normales que son los que contienen texto o datos binarios. Así, puedes tener archivos de texto, ejecutables, imágenes, archivos comprimidos, etc.
  • los directorios, que tienen el mismo concepto que en cualquier otro sistema operativo. No son mas que un contenedor del resto de archivos, tanto los normales o regulares, como los especiales.
  • especiales. Los archivos especiales se subdividen en varios a su vez,
    • Archivos de bloque. Estos hacen referencia a dispositivos físicos. Puedes encontrarlos en /dev. Si quieres ver los archivos especiales ejecuta ls -l /dev | grep "^b". Aunque si lo ejecutas en tu docker de pruebas no te mostrará nada.
    • Los archivos de carácter facilitan un flujo serie de entrada o salida. Por ejemplo el propio terminal. Otro ejemplo claro es /dev/null. Todo lo que escribas allí lo estás desechando.
    • Archivos tubería ó pipe files, o FIFO. Esto de FIFO viene por aquello de First Input First Output, o lo que es lo mismo, lo primero en entrar es lo primero en salir. Es similar a una pipe, que no es mas que un encadenamiento de comandos, de forma que la salida de un comando es la entrada del otro (por eso el llamarlo pipe o tubería). Sin embargo, un pipe file es un archivo del sistema operativo, y como tal, se puede acceder a él de la misma forma. Ya entraré con mas detalle tanto en este concepto, no te preocupes ahora por ello.
    • Enlaces simbólicos. Este es uno de los conceptos que mas me gustan en Linux, por las posibilidades que ofrece. Los enlaces simbólicos no es mas que una especie de puntero, que señala a otro archivo o directorio. En mi caso lo utilizo con frecuencia para la sincronización en la nube. Puesto que me permite tener el archivo apuntado en un directorio, y el enlace simbólico en el sitio que debe estar.
    • Archivos de tipo socket. Este tipo de archivos se utiliza para pasar información entre diferentes aplicaciones.

Información sobre archivos

Cuando listas los archivos que se encuentran en un determinado directorio tienes mucha información… Así por ejemplo,

drwxrwxr-x  2 lorenzo lorenzo 4,0K feb 11 08:33 documentos
-rwxrwxr-x  1 lorenzo lorenzo  432 dic  2 07:53 droidcamx.sh
-rw-rw-r--  1 lorenzo lorenzo  11K dic  2 19:06 feed.log

Vamos por orden, te explico a continuación que es cada una de las columnas que aparece en cada línea.

  • drwxrwxr-x esto te indica el tipo de archivos y los permisos que tiene. Así en este caso, la primera letra d indica que es un directorio. Los siguientes conjuntos de tres letras, en total tres por tres, se corresponde con los permisos, de lectura escritura y ejecución. Esto lo verás con mas detalle en un capítulo posterior. Para la primera letra hay las siguientes posibilidades,
    • - para archivos regulares
    • b archivo especial tipo bloque
    • c para archivos especiales tipo carácter
    • d en el caso de directorios
    • l esto es para enlaces simbólicos
    • n archivos de red
    • p para los tipos de archivos especiales tipo pipe
    • s esto es para archivos tipo socket
  • El número que va a continuación es el número de enlaces duros a ese archivo o directorio.
  • A continuación encontrarás el usuario y el grupo propietarios del archivo.
  • El siguiente valor se corresponde con el tamaño del archivo.
  • A continuación vienen mes, día, hora y minutos.
  • El último texto se corresponde con el nombre del archivo.

Gestionar archivos y directorios

Ahora que ya conoces los detalles de Linux en referencia al tratamiento de archivos, vamos a comenzar a gestionar archivos y directorios. Así a continuación, te voy a indicar las herramientas y comandos mas utilizados.

Crear un directorio

Los directorios en Linux se organizan de forma jerárquica, es decir, la típica estructura de árbol. Así para crear un directorio, en operativa de gestionar archivos, tan solo tenemos que ejecutar la siguiente orden,

mkdir midirectorio

Recuerda lo que te he comentado anteriormente en referencia a los espacios. No solo puedes crear directorios de forma relativa al directorio en el que te encuentras, sino también de forma absoluta.

Así, si por ejemplo te encuentras en /home/lorenzo, las siguientes órdenes serían equivalentes,

mkdir ejemplo
mkdir /home/lorenzo/ejemplo
mkdir ~/ejemplo
mkdir ./ejemplo
mkdir ../lorenzo/ejemplo

Aquí te llamo la atención sobre lo siguiente,

  • ~ hace referencia a tu directorio de inicio. En mi caso se refiere a /home/lorenzo
  • . se refiere al directorio en que te encuentras
  • .. por el contrario, se refiere al directorio padre del que te encuentras.

Si quieres crear varios directorios en cadena tienes que añadir la opción -p. Es decir, si quieres crear /home/lorenzo/este/es/otro/ejemplo (se entiende que a partir de este/es/otro/ejemplo no existe), tendrías que ejecutar

mkdir -p /home/lorenzo/este/es/otro/ejemplo

Borrar un archivo o directorio

A la hora de gestionar archivos y directorios también necesitas poder borrarlos. En el caso de que lo que quieras hacer es borrar un archivo, tienes que utilizar rm. Si lo que quieres es borrar un directorio de forma recursiva rm -r. Para forzar el borrado rm -f. Así para borrar directorios de forma recursiva, la orden sería rm -rf.

De ahí que habrás visto en alguna ocasión aquello de rm -rf /. Básicamente lo que haces es borrar toda el árbol de directorio. Para esto necesitas derecho de administrador.

Copiar un archivo o directorio

Otra operación necesaria a la hora de gestionar archivos es la de copiar. Copiar un archivo o directorio es tan sencillo como utilizar la herramienta cp. Si además utilizamos la opción -r al copiar un directorio, la copia se realizará de forma recursiva. Algunos ejemplos

  • para copiar el archivo ejemplo1 e un nuevo archivo llamado ejemplo2
cp /home/lorenzo/ejemplo1 ejemplo2
  • para copiar el archivo ejemplo1 en el directorio /home/lorenzo/directorio
cp /home/lorenzo/ejemplo1 /home/lorenzo/directorio

Mover un archivo o directorio

Es una herramienta similar a cp pero con la ventaja de que no tenemos que utilizar la opción -r para indicarle que lo haga de forma recursiva.

Así para mover el archivo /home/lorenzo/archivo.txt a /home/lorenzo/directorio/archivo.txt ejecutaríamos,

mv /home/lorenzo/archivo.txt /home/lorenzo/directorio/archivo.txt

Igualmente esta herramienta se utiliza para renombrar tanto archivos como directorios. Por ejemplo,

mv /home/lorenzo/archivo.txt /home/lorenzo/otro_archivo.txt

Conclusión

Este nuevo capítulo del tutorial, sobre gestionar archivos, es algo mas denso que los anteriores, y precisamente por este te pido, que si quieres que te aclare algún punto, no dudes en decírmelo. Y por otro lado, dado el avance que hemos hecho, sería interesante que practicaras todo lo que has visto.

Si por supuesto quieres que añada más ejemplos, o que detalle una parte de este capítulo, no dudes en decírmelo.

 

Más información:

Fuente: atareao

¿Quién está en línea?

Hay 28064 invitados y ningún miembro en línea