¿Qué es un archivo normal?

12
$ rm foobar
rm: remove regular file `foobar'?

¿Qué significa que un archivo sea "regular" y por qué lo rmtrata como un caso especial?

Cory Klein
fuente

Respuestas:

8

Me imagino que rmes un alias, posiblemente rm -i. La parte "normal" no significa nada en particular, solo significa que no es una tubería, dispositivo, enchufe o cualquier otra cosa "especial".

Alexander Janssen
fuente
Ah, tienes razón, tiene un alias rm -i.
Cory Klein el
55
Entonces significa algo en particular. En realidad es un aspecto muy importante del objeto que se eliminará ...
Bananguin
Como dijo @alexander, significa que el archivo no es un enlace simbólico, pipe, rand, null, cpu, etc. Quizás haya escuchado la filosofía de Linux "todo es un archivo de texto". Esto no es literalmente cierto, pero sugiere un contexto operativo dominante donde las herramientas de procesamiento de cadenas se pueden aplicar a los elementos del sistema de archivos directamente. En este caso, significa que de una manera más literal. Para ver el paso de detección de forma aislada, pruebe el archivo de comando , como en file /etc/passwdo file /dev/null.
Joe Atzberger el
8

comando de prueba

Cualquier archivo que pase la prueba ( -f) es un archivo normal:

$ test -f afile.zip && echo regular
regular

Si mira a través de la página del manual test, verá todos los diversos tipos de archivos.

comando stat

También puede verificar si un archivo es regular utilizando el statcomando:

$ stat afile.zip 
  File: `afile.zip'
  Size: 1512        Blocks: 8          IO Block: 4096   regular file
Device: fd02h/64770d    Inode: 10370668    Links: 1
Access: (0664/-rw-rw-r--)  Uid: (  500/    saml)   Gid: (  501/    saml)
Access: 2013-11-07 15:52:06.719632792 -0500
Modify: 2013-11-07 15:52:00.949760104 -0500
Change: 2013-11-07 15:52:00.949760104 -0500

función stat ()

Para comprender más sobre cuál es la diferencia entre un archivo normal y los otros tipos posibles, consulte la página del manual stat. Asegúrese de mirar la página del manual del programador y no la página del manual del statcomando real .

$ man 2 stat

Esta sección en particular muestra los diversos tipos de archivos:

   The following flags are defined for the st_mode field:

       S_IFMT     0170000   bit mask for the file type bit fields
       S_IFSOCK   0140000   socket
       S_IFLNK    0120000   symbolic link
       S_IFREG    0100000   regular file
       S_IFBLK    0060000   block device
       S_IFDIR    0040000   directory
       S_IFCHR    0020000   character device
       S_IFIFO    0010000   FIFO
       S_ISUID    0004000   set UID bit
       S_ISGID    0002000   set-group-ID bit (see below)
       S_ISVTX    0001000   sticky bit (see below)
       S_IRWXU    00700     mask for file owner permissions
       S_IRUSR    00400     owner has read permission
       S_IWUSR    00200     owner has write permission
       S_IXUSR    00100     owner has execute permission
       S_IRWXG    00070     mask for group permissions
       S_IRGRP    00040     group has read permission
       S_IWGRP    00020     group has write permission
       S_IXGRP    00010     group has execute permission
       S_IRWXO    00007     mask for permissions for others (not in group)
       S_IROTH    00004     others have read permission
       S_IWOTH    00002     others have write permission
       S_IXOTH    00001     others have execute permission
slm
fuente