Recientemente me encuentro con algunos comandos de linux durante el inicio de sesión en el sitio de mi cliente para recuperar el archivo de registro de actividad, y también estudia algunos de los tipos de archivos de linux, y el comando simple para saber lo que es los tipos de archivos en el sistema operativo Linux.
Linux utiliza cuatro tipos de archivos básicos:
- Archivos ordinarios
- directorios
- enlaces simbólicos
- archivos de bloque y de dispositivo de caracteres
Se determina el tipo de un archivo emitiendo el comando ls -l y leyendo el primer carácter de cada fila de la salida.
La salida típica del comando ls es la siguiente:
$ ls -l
total 8
-rw-r-r- 1 root 22 Oct 6 15:33 anormalfile
brw-rw– 2 root disk 41, 0 May 5 1998 blockdev
crw-rw- 2 root 5, 0 May 5 1998 characterdev
drwxr-x-x 2 root 4096 Oct 6 15:33 subdir
lrwxrwxrwx 1 root 11 Oct 6 15:35 symbolic -> anormalfile
Los archivos ordinarios comienzan con un guión (-), los directorios comienzan con d, los enlaces simbólicos comienzan con el carácter l, los dispositivos de bloque van precedidos del carácter b, y los dispositivos de carácter comienzan con la letra c.
Archivos ordinarios
Un archivo ordinario puede consistir en cualquier tipo de datos, incluyendo programas ejecutables. La mayoría de los archivos del sistema de archivos de Linux son de este tipo.
Directorios
Un directorio es un archivo que contiene otros archivos y directorios, y proporciona punteros a los mismos.
Realiza una función similar a la de una carpeta en un archivador, ya que permite agrupar archivos relacionados de forma organizada. Sin embargo, mientras que las carpetas normalmente sólo pueden contener archivos, los directorios pueden contener directorios adicionales, a menudo denominados subdirectorios.
Enlaces simbólicos
Un enlace simbólico -o blando- señala el nombre y la ubicación de un archivo completamente independiente. Así, cuando se abre, copia, mueve o hace referencia al enlace, la operación se realiza de hecho en el archivo referenciado. Esta distinción suele ser invisible para el usuario. Si el archivo referenciado es eliminado o renombrado, el enlace se rompe y se produce un error si se intenta abrirlo.
También se pueden crear enlaces duros. Un enlace duro apunta a los datos reales de un archivo exactamente de la misma manera que lo hace un archivo ordinario. Por lo tanto, aparte del nombre, no hay ninguna diferencia entre el archivo original y un enlace duro que apunta a los mismos datos, y ambos pueden ser considerados como archivos ordinarios. Se puede distinguir un enlace duro de cualquier otro archivo ordinario sólo por el número de enlaces que tiene cada uno. El número de enlaces se muestra en el segundo campo de un listado ls -l. Si este número es mayor que uno, entonces sabe que hay enlaces duros adicionales a los datos.
Archivos de dispositivo
Todos los dispositivos físicos que utiliza Linux están representados por archivos de dispositivo.
Los archivos de dispositivo pueden clasificarse como especiales de carácter o especiales de bloque. Los archivos de carácter especial representan dispositivos que interactúan con Linux sobre una base de carácter por carácter, o en serie. Las impresoras y los terminales son ejemplos de este tipo de dispositivos. Los archivos especiales de bloque representan dispositivos tales como discos duros o disquetes y CD-ROMs, que interactúan con Linux usando bloques de datos.
Todos los archivos de dispositivo están contenidos en el directorio /dev – por ejemplo, el archivo asociado con la primera unidad de disquete del sistema es /dev/fd0.
Los archivos de dispositivo son extremadamente poderosos porque permiten a los usuarios acceder a dispositivos de hardware tales como unidades de disco, módems e impresoras como si fueran archivos de datos. Por lo tanto, se pueden mover, copiar y transferir datos entre dichos dispositivos fácilmente, a menudo sin tener que utilizar comandos o sintaxis especiales.
Nombres de archivo y nombres de ruta
A cada archivo se le asigna un nombre de archivo, que puede tener hasta 256 caracteres. Este nombre puede consistir en una mezcla de letras mayúsculas y minúsculas, números y ciertos signos de puntuación como el punto, el guión o el guión bajo.
Ciertos caracteres no pueden utilizarse en los nombres de archivo. Por ejemplo, no puede utilizar caracteres que representen un separador de campos -como una coma- u otros caracteres especiales que tengan un significado particular para el shell. ¡Los caracteres especiales que no puede utilizar son
! @ # $ % ^ & * ( ) { } ‘ » \ / | ; < > ‘
Nombres de ruta
Puede navegar entre directorios en la línea de comandos utilizando nombres de ruta. Para utilizar los nombres de ruta, debe entender la estructura de directorios del sistema de archivos de Linux. El directorio de más alto nivel en el sistema de archivos de Linux es el directorio raíz, que está representado por una barra diagonal (/). Bajo el directorio raíz se encuentran los directorios de nivel superior, seguidos por uno o más niveles de subdirectorios.
Estructura de archivos de un sistema de archivos Linux
Puede moverse entre directorios utilizando nombres de ruta relativos o absolutos.
Un nombre de ruta relativo comienza con su directorio actual. Por ejemplo, si quiere cambiar al directorio de gastos desde su directorio personal, introduzca
cd gastos
Los nombres de ruta relativos pueden comenzar con el nombre de un archivo o directorio, o con referencias simbólicas al directorio actual (.) o a su directorio padre (..), pero nunca con una barra diagonal.
Un ejemplo sencillo de un sistema de archivos de Linux
Un nombre de ruta absoluto muestra la ruta completa desde el directorio raíz (/). Por ejemplo, el siguiente comando le permite moverse desde su directorio actual directamente al subdirectorio applic en el directorio usr que se encuentra bajo el directorio raíz:
cd /usr/applic
Inodos, bloques y archivos especiales
Inodos
Cada archivo tiene asignado un número de inodo único. Un inodo es una estructura que define la ubicación y los atributos del archivo. Puede comprobar el número de inodo de un archivo utilizando la opción -i con el comando ls. Puede ver la información que contiene el inodo de un archivo utilizando la sintaxis stat filename. La salida de este comando (el stat results) muestra la información relacionada con el inodo del archivo «results».
$ stat results
File: «results»
Tamaño: 8
Filetype: Regular file
Modo: (0644/-rw-r–r–)
Uid: ( 0/ root)
Gid: ( 0/ root)
Device: 3,7 Inode: 123256 Links: 1
Acceso: Tue Jul 25 16:45:00 2000 (00072.18:31:07)
Modificar: Thu Jul 20 12:35:20 2000 (00077.22:40:47)
Cambio: Thu Jul 20 12:35:20 2000 (00077.22:40:47)
En este ejemplo, algunos de los atributos que se muestran son el tipo de archivo, el tamaño del archivo, el ID de usuario (UID) del propietario, el número de enlaces duros asociados a él y las horas de creación, acceso y modificación del archivo.
Un inodo no almacena el nombre de un archivo. Los nombres de los archivos se almacenan en directorios con sus números de inodo asociados. En el ejemplo del comando stat, el nombre del archivo se obtiene a partir del parámetro filename que usted introdujo.
Bloques
En el sistema de archivos de Linux, los archivos se almacenan en bloques, que son segmentos de espacio de disco de tamaño idéntico. Generalmente, el tamaño de un bloque varía entre 512 bytes y 32 KB, dependiendo de la instalación de Linux. El tamaño máximo de un archivo depende del tamaño de bloque utilizado en el sistema de archivos. Por ejemplo, el tamaño máximo de un archivo para un sistema de archivos ext2 es de 2 GB si utiliza bloques de 512 bytes.
Los sistemas de disco recuperan los datos en trozos del tamaño de un bloque, por lo que cuanto mayor sea el tamaño del bloque, más eficiente será el acceso. El problema de crear bloques grandes es que puede desperdiciar espacio en el disco. Por ejemplo, si el tamaño del bloque es de 4 KB y la mayoría de los archivos contienen sólo unos pocos bytes de datos, la mayor parte de los 4096 bytes de espacio en disco se desperdicia para cada archivo. Pero si hace que los tamaños de los bloques sean pequeños, el acceso al disco será relativamente menos eficiente.
Algunos comandos, como df, dan salida a la información del disco en bloques de 1 KB, incluso si la instalación almacena los archivos en un tamaño de bloque diferente. Una forma sencilla de comprobar el tamaño de bloque de su sistema es utilizar el comando du para mostrar el uso del disco. En este ejemplo, se muestra el uso del disco para todos los archivos que comienzan con «m».
$ du -h m*
36k mail
4.0k mail.rc
12k mailcap
12k mailcap.vga
4.0k man.config
4.0k mc.global
148k midi
40k mime-magic
104k mime-magic.dat
8.0k mime.types
4.0k minicom.users
0 motd
4.0k mtab
En este ejemplo, la salida del comando du muestra el tamaño de los archivos en el disco en incrementos del tamaño del bloque, que es de 4.0 KB en este caso. Una excepción a esta regla es cuando se muestra el cero, que indica que el archivo está completamente vacío.
Archivos especiales
Además de otros tipos de archivos, Linux hace uso de archivos especiales, que son archivos definidos por el sistema que realizan funciones únicas cuando se accede a ellos.
Ficheros especiales y sus funciones
Por ejemplo, si necesita deshacerse de la salida no deseada de un comando, puede redirigir la salida al fichero /dev/null. En este ejemplo, cualquier error generado por el comando find es redirigido de stderr a /dev/null.
$ find / -n myfile 2> /dev/null