struct stat { dev_t st_dev; /* dispositivo*/ ino_t st_ino; /* nodo*/ mode_t st_mode; /* modo*/ nlink_t st_gid; ID de grupo */ dev_t st_rdev /* Tipo de dispositivo */ off_t st_off; /* Número de bytes en el archivo*/ unsigned long st_blksize; /* Tamaño del bloque*/ unsigned long st_blocks; /* Número de bloques*/ time_t st_atime /* Hora del último acceso*/ time_t st_mtime; / time_t st_ctime; /* Hora del último cambio (refiriéndose a los atributos) */};Aprendamos sobre estos atributos uno por uno. Si necesita ver los atributos de un determinado archivo, utilícelo.
estadísticaSimplemente emita el comando y enumerará la información de acuerdo con la estructura anterior. además,
esEl comando también puede mostrar los atributos relevantes del archivo después de seguir ciertos parámetros, como
-lparámetro.
Los tipos de archivos corresponden a lo anterior.
modo_stHay muchos tipos de archivos, como archivos normales, enlaces simbólicos (enlaces físicos, enlaces suaves), archivos de canalización, archivos de dispositivos (dispositivos simbólicos, dispositivos de bloque), archivos de socket, etc. Los diferentes tipos de archivos corresponden a diferentes funciones y roles.
$ ls -ltotal 12drwxr-xr-x 2 raíz raíz 4096 2007-12-07 20:08 directorio_fileprw-r--r-- 1 raíz raíz 0 2007-12-07 20:18 fifo_pipebrw-r--r-- 1 raíz raíz 3, 1 2007-12-07 21:44 hda1_block_dev_filecrw-r--r-- 1 raíz raíz 1, 3 2007-12-07 21:43 null_char_dev_file-rw-r--r-- 2 raíz raíz 506 2007-12-07 21:55 regular_file-rw -r--r-- 2 raíz raíz 506 2007-12-07 21:55 regular_file_hard_linklrwxrwxrwx 1 raíz raíz 12 2007-12-07 20:15 regular_file_soft_link -> regular_file$ stat directorio_archivo/ Archivo: `directorio_archivo/' Tamaño: 4096 Bloques: 8 Bloque IO: 4096 directorioDispositivo: 301h/769d Inodo: 521521 Enlaces: 2Acceso: (0755/drwxr-xr-x) Uid: (0/ raíz) Gid: (0/ raíz)Acceso: 2007-12-07 20:08:18.000000000 +0800Modificar: 2007- 12-07 20:08:18.000000000 +0800Cambio: 2007-12-07 20:08:18.000000000 +0800$ stat null_char_dev_file Archivo: `null_char_dev_file' Tamaño: 0 Bloques: 0 Bloque IO: Archivo especial de 4096 caracteres Dispositivo: 301h/769d Inodo: 521240 Enlaces: 1 Tipo de dispositivo: 1,3Acceso: (0644/crw-r--r--) Uid: ( 0/ raíz) Gid: ( 0/ raíz)Acceso: 2007-12-07 21 :43:38.000000000 +0800Modificar: 2007-12-07 21:43:38.000000000 +0800Cambio: 2007-12-07 21:43:38.000000000 +0800
Descripción: Aprobado
esPuede ver que los primeros caracteres de cada línea de los resultados del comando son diferentes entre sí, lo que simplemente refleja los tipos de archivos diferentes.
dRepresenta un directorio,
-Representa un archivo normal (o enlace físico),
yoRepresenta un enlace simbólico,
pagRepresenta un archivo de canalización,
by
doRepresenta dispositivos de bloques y dispositivos de caracteres respectivamente (además
sexpresar
enchufedocumento). existir
estadísticaEn el resultado del comando, puede encontrar la descripción al final de la segunda línea. Como se puede ver en la operación anterior,
directorio_archivoes el directorio,
estadísticaUtilizado en los resultados de los comandos.
directoriorepresenta, y
null_char_dev_filese utiliza
archivo especial de caracteresilustrar.
Por lo general, solo se utilizan directorios, archivos ordinarios y enlaces simbólicos, y rara vez se encuentran otros tipos de archivos. Sin embargo, estos archivos aún tienen sus propios usos si está realizando desarrollo integrado o comunicación de procesos, etc., archivos de dispositivo, canalizaciones con nombre. (FIFO). La siguiente es una operación simple para reflejar la diferencia entre ellos (los principios específicos se presentarán en la siguiente sección "Sistema de archivos del paradigma de programación de Shell". Si está interesado, también puede conectarse en línea con anticipación para encontrar la función de los archivos del dispositivo , dispositivos de bloqueo y diferencias de dispositivos de caracteres, y cómo escribir controladores de dispositivos relacionados en el controlador, etc.).
Para archivos ordinarios: es una colección de caracteres, por lo que se puede leer, escribir, etc.
$ echo hola, mundo > regular_file$ cat regular_filehello, mundo
Se pueden crear nuevos archivos en el directorio, por lo que el directorio también se llama: carpeta. La estructura del archivo del directorio se analizará más adelante. En realidad, almacena los nombres de cada archivo en él.
$ cd directorio_archivo$ toque archivo1 archivo2 archivo3
Para las canalizaciones con nombre, la operación es más interesante: si desea leerlo, se bloqueará a menos que haya contenido; si desea escribir en él, se bloqueará a menos que alguien venga a leerlo; Se utiliza comúnmente en la comunicación de procesos. Se pueden abrir dos terminales.
terminal1y
terminal2, pruébalo:
terminal1$ cat fifo_pipe #Se bloquea aquí al principio y no imprime la cadena de prueba hasta que se produce la siguiente acción de escritura terminal2$ echo test > fifo_pipe
En cuanto a los dispositivos de bloques, los dispositivos de caracteres, los archivos de dispositivos corresponden a
/dev/hda1y
/desarrollador/nulo, si ha utilizado una unidad flash USB o ha escrito un script sencillo, debería haber utilizado este método antes: :-)
$ mount hda1_block_dev_file /mnt #Monte la primera partición del disco duro en /mnt (el principio de montaje se discutirá en la siguiente sección) $ echo lessfewfef > /dev/null #/dev/null es como un agujero negro, algo Falta Una vez dentro, todo desaparece.
Los dos últimos archivos son
archivo_regularEnlaces duros y enlaces blandos de archivos, si los lee y escribe, su contenido es el mismo, pero si los elimina, no tienen nada que ver entre sí. ¿Cuál es la diferencia entre enlaces duros y enlaces blandos? Se puede decir que el primero es el archivo original, mientras que el segundo simplemente tiene tal
inodo, pero no hay espacio de almacenamiento real, se recomienda utilizar
estadísticacomando para ver las diferencias entre ellos, incluyendo sus
Bloques,
inodoEquivalente, también puedes considerar usar
diferenciaCompara sus tamaños.
$ ls archivo_regular*ls archivo_regular* -l-rw-r--r-- 2 raíz raíz 204800 2007-12-07 22:30 archivo_regular-rw-r--r-- 2 raíz raíz 204800 2007-12-07 22 :30 regular_file_hard_linklrwxrwxrwx 1 raíz raíz 12 2007-12-07 20:15 regular_file_soft_link -> regular_file$ rm regular_file # Eliminar el archivo original $ cat regular_file_hard_link # El enlace físico todavía está allí y todavía hay contenido en él fefe$ cat regular_file_soft_linkcat: regular_file_soft_link: No existe tal archivo o directorio
Aunque el archivo de enlace suave todavía está allí, no puede leer nada porque no almacena el contenido en sí. Ésta es la diferencia entre enlaces suaves y enlaces físicos.
Cabe señalar que los enlaces físicos no pueden cruzar sistemas de archivos, pero los enlaces blandos sí. Además, no está permitido crear enlaces físicos a directorios.
Los tipos de archivos se dividen en los tipos anteriores desde el nivel del sistema de archivos de Linux, pero los archivos normales aún se pueden dividir (de acuerdo con la "estructura de datos" del contenido del archivo), como archivos de texto comunes y ejecutables.
DUENDEdocumento,
extrañodocumento,
jpgformato de imagen,
intercambioarchivo de partición,
DUENDESi está interesado en el principio de funcionamiento del archivo, se recomienda leer las referencias y
DUENDELa parte relevante del archivo, esta parte es crucial para los ingenieros de Linux integrado.
Aunque varios tipos de archivos comunes tienen sus propias herramientas operativas, aún puede leerlos y escribirlos directamente. Mencionaré estas herramientas primero y discutiré los detalles más adelante.
sobredosis: "Exportar" el contenido del archivo en formato octal u otros formatos.
instrumentos de cuerda: Leer los caracteres del archivo (caracteres imprimibles)
gcc,
gdb,
lectura, volcado de objetos
esperar:DUENDE
Herramientas de análisis y procesamiento de archivos (gcc
compilador,gdb
depurador,lectura
Analizar archivos ELF,herramienta de descompilación objdump`)
Agregue otro comando muy importante,
archivo, este comando se utiliza para ver las propiedades de varios tipos de archivos. y
estadísticaEn comparación con el comando, puede identificar aún más archivos comunes, a saber
estadísticacomando mostrado
archivo normal. porque
archivo normalPuede haber una variedad de estructuras diferentes y, por lo tanto, interpretarse de manera diferente y realizar diferentes acciones con el apoyo del sistema operativo. Aunque en Linux se añaden sufijos específicos a los archivos para que los usuarios puedan identificar fácilmente el tipo de archivo, el sistema operativo Linux identifica varios tipos de archivos basándose en el encabezado del archivo, no en el sufijo del archivo, lo que hace aún más difícil interpretar el archivos correspondientes propensos a errores. La siguiente es una breve introducción.
archivoUso del comando.
$ archivo ././: directorio$ archivo /etc/profile/etc/profile: texto ASCII en inglés$ archivo /lib/libc-2.5.so/lib/libc-2.5.so: objeto compartido ELF LSB de 32 bits, Intel 80386, versión 1 (SYSV), archivo $ no eliminado /bin/test/bin/test: ejecutable ELF LSB de 32 bits, Intel 80386, versión 1 (SYSV), vinculado dinámicamente (usa bibliotecas compartidas), archivo $ eliminado /dev/hda/dev/hda: bloque especial (3/0) archivo $ /dev/console/dev/console: carácter especial (5/1) $ cp /etc/profile .$ tar zcf perfil.tar.gz perfil$ archivo perfil.tar.gzprofile.tar.gz: datos comprimidos gzip, de Unix, última modificación: martes 4 de enero 18:53:53 2000$ mkfifo fifo_test$ archivo fifo_testfifo_test: fifo (canalización con nombre)
Ver más uso
archivoManual de mando, sobre
archivoPara conocer el principio de implementación del comando, consulte
magiamanual (mirar
/etc/archivo/magiaArchivo, entiende qué es un archivo
numero magicoesperar).
Como sistema multiusuario, Linux ofrece una gran comodidad para que varios usuarios utilicen el mismo sistema. Por ejemplo, para los archivos del sistema, distingue a diferentes usuarios a través de sus propietarios para asignar sus permisos operativos a diferentes archivos. Para facilitar la administración, el propietario del archivo incluye el usuario al que pertenece el archivo y el grupo de usuarios al que pertenece el archivo, porque un usuario puede pertenecer a varios grupos. Primero, presentemos brevemente la gestión de usuarios y grupos en Linux.
Linux proporciona un conjunto de comandos para administrar usuarios y grupos, como por ejemplo para crear usuarios.
agregar usuarioy
agregar grupo, utilizado para eliminar usuarios
usuariodely
grupodel,además,
contraseñaEl comando se utiliza para cambiar la contraseña del usuario. Por supuesto, Linux también proporciona dos configuraciones correspondientes, a saber
/etc/contraseñay
/etc/grupoAdemás, algunos sistemas también colocan la contraseña por separado en el archivo de configuración.
/etc/sombramedio. Consulte la siguiente información para conocer su uso detallado. No se presentarán aquí. Solo se presentarán algunas relaciones entre archivos y usuarios.
$ chown nombre de usuario: nombre del grupo nombre de archivo
Si desea modificar recursivamente los propietarios de todos los archivos en un directorio, puede agregar
-Ropciones.
De la estructura de archivos enumerada al principio de esta sección, podemos ver que solo hay usuarios
IDENTIFICACIÓNy grupo
IDENTIFICACIÓNinformación, pero
ls-lEl resultado muestra la información del nombre de usuario y del nombre del grupo. ¿Cómo se logra esto? Echemos un vistazo primero
-norteEl resultado de:
$ ls -n archivo_regular-rw-r--r-- 1 0 0 115 2007-12-07 23:45 archivo_regular$ ls -l archivo_regular-rw-r--r-- 1 raíz raíz 115 2007-12-07 23:45 archivo_regular
Como se puede ver,
ls -nUsuarios mostrados
IDENTIFICACIÓNy grupo
IDENTIFICACIÓN,y
ls-lSe muestran sus nombres. Recuerde los dos archivos de configuración mencionados anteriormente.
/etc/contraseñay
/etc/grupo¿Archivo? Almacenan usuarios respectivamente.
IDENTIFICACIÓNy nombre de usuario, grupo
IDENTIFICACIÓNrelación correspondiente con el nombre del grupo, por lo que es fácil pensar en
ls-lCómo pasa el comando a través de la estructura del archivo cuando se implementa
IDENTIFICACIÓNLa información encuentra la información de su nombre correspondiente. Si quieres tener razón
ls-lPara una mejor comprensión de la implementación del comando, puede utilizar
rastroRastree para ver si lee ambos archivos de configuración.
$ strace -f -o strace.log ls -l regular_file$ cat strace.log | egrep passwd|group|shadow2989 open(/etc/passwd, O_RDONLY) = 32989 open(/etc/group, O_RDONLY) = 3
ilustrar:
rastroSe puede utilizar para rastrear llamadas y señales del sistema. como
gdbAl igual que otras herramientas poderosas, se basa en el sistema.
trazoImplementación de llamadas al sistema.
De hecho, no es bueno introducir el propietario y los permisos por separado, porque solo la combinación de los dos hace posible un sistema multiusuario; de lo contrario, es imposible aislar las operaciones de diferentes usuarios en un determinado archivo, por lo que la operación del archivo Los permisos se presentan a continuación.
de
ls-lEn los últimos 9 caracteres de la primera columna del resultado del comando, puede ver información similar a esta
rwxr-xr-x, que corresponden a la estructura del archivo
modo_stparte(
modo_stContiene dos partes: información del tipo de archivo e información de permisos del archivo). Este tipo de información se puede dividir en tres partes, a saber
wx,
RX,
RX, correspondientes respectivamente a los permisos operativos del usuario, grupo y otros grupos en el archivo al que pertenece el archivo.
wxCualquiera de ellos significa legible, escribible y ejecutable, si
-Indica que no existe tal permiso. En consecuencia, se puede representar en octal, como
rwxr-xr-xSe puede expresar como binario 111101101 y el octal correspondiente es 755. Debido a esto, hay muchas formas de modificar los permisos de operación de los archivos, y todas se pueden hacer a través de
chmodcomando para modificar.
Por ejemplo, ponga
archivo_regularModifique los permisos del archivo para que todos los usuarios puedan leerlo, escribirlo y ejecutarlo, es decir,
rwxrwxrwx, también se puede expresar como 111111111, traducido al octal es 777. Este permiso se puede modificar de dos formas.
$ chmod a+rwx archivo_regular
o
$ chmod 777 archivo_regular
ilustrar:
aSe refiere al usuario utilizado. Si solo desea otorgarle al usuario permisos de lectura, escritura y ejecución, entonces puede hacerlo.
aReemplazar con
tu;y
+Simplemente agregue permisos. Por el contrario, si desea eliminar un determinado permiso, utilícelo.
-,y
wxCorresponde a legible, escribible y ejecutable. Ver más uso
chmodAyuda de comando.
De hecho, además de estos permisos, existen otros dos permisos relacionados con la seguridad, a saber
setuid/setgidy control de sólo lectura, etc.
Si se configura un archivo (programa o comando)
setuid/setgidpermisos, entonces el usuario podrá
raízPor lo tanto, esto puede traer riesgos de seguridad; si se configuran los permisos de solo lectura del archivo, el usuario solo tendrá permisos de lectura para el archivo, lo que evita situaciones como las siguientes.
rm-rfLa "abominable" operación trae consigo ciertas bendiciones.
De forma predeterminada, el sistema no permite que los usuarios normales ejecuten
contraseñacomando, pasar
setuid/setgid, los usuarios normales pueden estar autorizados a ejecutarlo.
$ ls -l /usr/bin/passwd-rwx--x--x 1 root root 36092 2007-06-19 14:59 /usr/bin/passwd$ su #Cambie al usuario root y agregue " Sticky bit " $ chmod +s /usr/bin/contraseña$ ls -l /usr/bin/contraseña-rws--s--x 1 root root 36092 2007-06-19 14:59 /usr/bin/passwd$ exit$ passwd #Los usuarios normales pueden modificar sus contraseñas ejecutando este comando.
ilustrar:
setuidysetgidBit permite a los usuarios comunesraízEl rol del usuario solo se ejecutaraízUn programa o comando que solo puede ejecutarse mediante una cuenta.
Aunque esto proporciona comodidad para la administración hasta cierto punto, por ejemplo, la operación anterior permite a los usuarios comunes modificar sus cuentas en lugar de
raízCuenta para realizar este trabajo para cada usuario. acerca de
setuid/setgidPara obtener una explicación más detallada, consulte la última información recomendada.
Ejemplo de permiso de solo lectura: bloquear archivos importantes (agregar bit inmutable [inmutable])) para evitar consecuencias catastróficas causadas por diversas operaciones incorrectas (como
:``rm -rf)
$ chattr +i regular_file$ lsattr regular_file----i-------- regular_file$ rm regular_file #Después de agregar el bit inmutable, no puede realizar ninguna actividad "destructiva" en el archivo: elimine rm protegido contra escritura. archivo regular `regular_file'? yrm: no se puede eliminar `regular_file': operación no permitida$ chattr -i regular_file #Si desea realizar operaciones regulares en él, puede eliminar este bit$ rm regular_file
ilustrar:
charlarSe puede utilizar para establecer permisos especiales en archivos. Para obtener más información, consulte.
charlarayuda.
Para archivos normales, el tamaño del archivo es el tamaño del contenido del archivo. Como un archivo especial, el directorio almacena diversa información de archivos organizada en una estructura de directorio. Por lo tanto, el tamaño del directorio generalmente es fijo. tiene un límite superior, es decir, su tamaño dividido por la longitud del nombre del archivo. El "tamaño de archivo" del archivo del dispositivo corresponde a los números de dispositivo mayor y menor del dispositivo, y el tamaño del famoso archivo de tubería siempre es 0 debido a sus propiedades especiales de lectura y escritura. Un vínculo físico (los archivos de directorio no pueden crear vínculos físicos) es esencialmente una copia completa del archivo original, por lo que su tamaño es el tamaño del archivo original. Un enlace suave es sólo un
inodo, almacena un puntero al archivo original, por lo que su tamaño es solo el número de bytes del nombre del archivo original. A continuación aumentamos la memoria mediante la demostración.
Ejemplos de tamaños de archivo para archivos originales y archivos vinculados:
$ echo -n abcde > archivo_regular #Escribe 5 bytes en el archivo_regular $ ls -l archivo_regular*-rw-r--r-- 2 root root 5 2007-12-08 15:28 archivo_regular-rw-r--r -- 2 raíz raíz 5 2007-12-08 15:28 regular_file_hard_filerwxrwxrwx 1 raíz raíz 12 2007-12-07 20:15 regular_file_soft_link -> regular_filerwxrwxrwx 1 raíz raíz 22 2007-12-08 15:21 regular_file_soft_link_link -> regular_file_soft_link$ i=regular_file$ j=regular_file_soft_link$ echo ${#i} ${# j} #Los enlaces suaves almacenan exactamente el número de bytes del nombre del archivo original al que apuntan 12 22Tamaño de archivo correspondiente al número de dispositivo: número de dispositivo mayor y menor
$ ls -l hda1_block_dev_filebrw-r--r-- 1 raíz raíz 3, 1 2007-12-07 21:44 hda1_block_dev_file$ ls -l null_char_dev_filecrw-r--r-- 1 raíz raíz 1, 3 2007-12-07 21:43 null_char_dev_file
Suplemento: principal
(mayor), tiemposEl número de dispositivo (menor) tiene diferentes funciones. Cuando se abre un archivo de dispositivo, el kernel determina el número de dispositivo principal (
numero mayor) para encontrar el controlador que se ha registrado con el número de dispositivo principal en el kernel (puede
gato /proc/dispositivosVerifique la correspondencia entre el número de controlador registrado y el número de dispositivo mayor) y el número de dispositivo menor (
numero menor) se pasa al controlador a través del kernel (consulte el Capítulo 10 de "Linux Primer"). Por lo tanto, para el kernel, se puede encontrar el controlador correspondiente para identificar un dispositivo a través del número de dispositivo principal, y para el controlador, para poder acceder al dispositivo de manera más compleja, como acceder a diferentes partes del dispositivo (como hardware dividido en diferentes partes a través de particiones), aparece
hda1,
hda2,
hda3etc.), como generar números aleatorios con diferentes requisitos (como
/dev/aleatorioy
/dev/urandomesperar).
El tamaño del archivo del directorio, ¿por qué es así? Observe el tamaño de la estructura del directorio a continuación. El bloque del archivo del directorio almacena las entradas para todos los nombres de archivos en el directorio.
$ ls -ld archivo_directorio/drwxr-xr-x 2 raíz raíz 4096 2007-12-07 23:14 archivo_directorio/
La estructura del directorio es la siguiente:
struct dirent { long d_ino; off_t d_off; unsigned short d_reclen; char d_name[NOMBRE_MAX+1] /* nombre de archivo*/}El atributo de tiempo de un archivo puede registrar la información de operación del usuario en el archivo y proporcionará una referencia para el administrador en la administración del sistema, determinando la información de la versión del archivo, etc. Por lo tanto, al leer documentos, se recomienda utilizar
gatoEspere a que lleguen las herramientas de lectura, no utilice herramientas de edición.
empujeVaya a leer, porque incluso si no se realizan operaciones de modificación, una vez que se ejecuta el comando de guardar, se modificará la información de la marca de tiempo del archivo.
El nombre del archivo no se almacena en la estructura del archivo, sino en la estructura del directorio en el que se encuentra. Por lo tanto, los nombres de los archivos deben ser únicos dentro del mismo nivel del directorio.
Para archivos, las operaciones comunes incluyen creación, eliminación, modificación, lectura, escritura, etc. Las "acciones detrás de escena" correspondientes a varias operaciones se analizarán en detalle en el próximo capítulo "Operaciones del sistema de archivos del paradigma de programación Shell".
enchufeEl archivo es un tipo especial de archivo que se puede crear mediante lenguaje C. No se presentará aquí (no se sabe si se puede crear directamente con comandos).
$ touch regular_file #Crea un archivo normal $ mkdir directorio_file #Crea un archivo de directorio, que puede contener más archivos $ ln regular_file regular_file_hard_link #Enlace duro, una copia completa del archivo original $ ln -s regular_file regular_file_soft_link #Similar a un puntero de archivo, apuntando al archivo original $ mkfifo fifo_pipe # o creado a través de mknod fifo_pipe p, FIFO cumple con las características de primero en entrar, primero en salir $ mknod hda1_block_dev_file b 3 1 #Bloquear dispositivo $ mknod null_char_dev_file c 1 3 #Dispositivo de carácter
La creación de un archivo en realidad agrega un nodo al sistema de archivos (
inodo), la información del nodo se guardará en la tabla de nodos del sistema de archivos. Para decirlo más claramente, significa que una nueva hoja (archivo) o rama (archivo de directorio, del tipo que tiene hojas creciendo en él) crece en un árbol.árbol
comando oEl comando ls` se presenta visualmente. Desde la perspectiva del uso diario, el sistema de archivos puede verse como un árbol invertido, porque son muy similares y fáciles de recordar.
$ árbol directorio actual
o
$ ls directorio actual
La impresión más directa al eliminar un archivo es que ya no existe. Esto también se puede lograr.
eso
árbolLa orden se presenta como si se cortara una rama de un árbol o se arrancara una hoja. De hecho, después de la eliminación, estos archivos no desaparecen inmediatamente, solo se marcan para su eliminación. Por lo tanto, si no hay operaciones de escritura en el disco relevantes para "cubrir" el espacio en disco correspondiente después de la eliminación, en principio se pueden recuperar (Aunque. , este trabajo suele ser problemático, así que piénselo dos veces antes de eliminar algunos datos importantes, como realizar una tarea de copia de seguridad. Para conocer el método correspondiente, consulte la información siguiente).
Los comandos específicos para eliminar archivos son
habitación, si desea eliminar directorios vacíos, puede utilizar
rmdirOrden. Por ejemplo:
$ rm archivo_regular$ rmdir archivo_directorio$ rm -r archivo_directorio_no_vacío
habitaciónHay dos parámetros muy importantes, uno es
-F, este comando es muy "bárbaro" y probablemente cause dolor a muchos usuarios de Linux. Otro lo es.
-i, este comando es muy "suave" y probablemente irrita a muchos usuarios. Cuál utilice depende de su "estado de ánimo". Si ha realizado un trabajo de respaldo adecuado o ha tomado algunas medidas efectivas para evitar consecuencias catastróficas, puede sentirse más cómodo al realizar estas tareas.
La copia de un archivo generalmente se refiere a una copia "temporal" del contenido del archivo. A través de la introducción al comienzo de esta sección, debemos comprender que los enlaces físicos y los enlaces blandos de archivos también son "copias de archivos" en cierto sentido. Los primeros copian el contenido del archivo sincrónicamente y los segundos "copian" sincrónicamente el contenido del archivo. caso de lectura y escritura. "Contenido del archivo". Por ejemplo:
usar
CPcomando para copiar archivos normalmente (copiar directorios requiere
-ropciones)
$ cp archivo_regular copia_archivo_regular$ cp -r archivo_directorio copia_archivo_directorio
Crear enlace físico (
enlacey
CopiarLa diferencia es que este último se actualiza sincrónicamente, pero el primero no. Después de copiar, los dos ya no son relevantes).
$ ln archivo_regular archivo_regular_enlace_duro
Crear enlace suave
$ ln -s archivo_regular regluar_file_soft_link
Modificar el nombre del archivo en realidad solo modifica el identificador del nombre del archivo. puede pasar
mvcomando para modificar el nombre del archivo (es decir, cambiar el nombre).
$ mv archivo_regular nombre_nuevo_archivo_regular
Editar un archivo es en realidad manipular el contenido del archivo, lo que corresponde a la edición de archivos de texto ordinarios. Esto implica principalmente leer, escribir, agregar, eliminar, etc. Estas tareas normalmente se realizan a través de editores especializados, como los editores de línea de comandos.
empuje,
emacse interfaz gráfica
gedit, keditesperar. Si se trata de algunos archivos específicos, habrá herramientas especiales de edición y procesamiento, como software de procesamiento de imágenes.
cañutillo, software de edición de documentos
Oficina abiertaesperar. Estas herramientas generalmente tienen tutoriales dedicados.
La siguiente es una breve introducción a estas operaciones comunes de edición de archivos mediante redirección en Linux.
Crea un archivo y escribe
abcde
$ eco abcde > nuevo_archivo_regular
Agregue otra línea al archivo anterior
abcde
$ eco abcde >> nuevo_archivo_regular
Leer un archivo línea por línea
$ mientras lee LINE; haga eco $LINE hecho < test.sh
Consejo: si desea ejecutar una variable de cadena que contenga una redirección como comando, utilice
evaluarcomando; de lo contrario, la redirección no se podrá interpretar. Por ejemplo,
$ redirección=echo abcde >test_redirect_file$ $redirect #Aquí > se imprimirá como un carácter > en lugar de interpretarse como una redirección abcde >test_redirect_file$ eval $redirect #Esto se interpretará > como una redirección$ cat test_redirect_fileabcde
Comprimir y descomprimir archivos sirve para facilitar la transmisión del contenido del archivo en cierto sentido, pero también puede tener algunos usos específicos, como archivos de imagen del sistema de archivos y del kernel, etc. (Para obtener más conocimientos relacionados, consulte los materiales posteriores).
A continuación se muestran algunos métodos comunes de compresión y descompresión:
alquitrán
$ tar -cf archivo.tar archivo #Comprimir $ tar -xf archivo.tar #Descomprimir
gz
$ archivo gzip -9 $ archivo gunzip
tar.gz
$ tar -zcf archivo.tar.gz archivo$ tar -zxf archivo.tar.gz
bz2
$ archivo bzip2$ archivo bunzip2
tar.bz2
$ tar -jcf archivo.tar.bz2 archivo$ tar -jxf archivo.tar.bz2
De la demostración anterior, debería quedar muy claro
alquitrán,
bzip2,zip2,
zip,cremallera de arma
¿Es el papel del mando? Si aún no está claro, haga más y compare algunos de los comandos anteriores y consulte sus manuales:hombre tar`...
La búsqueda de archivos se refiere a encontrar la ubicación de archivos con ciertos atributos en un sistema de archivos en una determinada jerarquía de directorios. Si esta ubicación se extiende a toda la red, se puede expresar como un.
URLLa dirección, para una dirección local, se puede expresar como
archivo://+camino local. La ruta local en el sistema Linux comienza con
/Para empezar, por ejemplo, el directorio de inicio de cada usuario se puede representar como:
archivo:///casa/. A continuación solo se presentan algunos métodos de búsqueda de archivos locales.
encontrarEl comando proporciona un método de búsqueda "justo a tiempo" según la solicitud del usuario, recorre todos los archivos en la jerarquía de directorios especificada hasta encontrar el archivo requerido. y
actualizadob+localizarProporciona una estrategia de búsqueda "rápida",
actualizadobActualice y genere una base de datos de archivos local, mientras
localizarBusque en esta base de datos por nombre de archivo para encontrar rápidamente el archivo correspondiente. El primero admite la búsqueda a través de varios atributos de archivos y proporciona una interfaz (
-ejecutivoopción) se utiliza para procesar los archivos buscados. Por lo tanto, proporciona una gran comodidad para los fanáticos de los scripts de "comando único", pero para búsquedas basadas en nombres de archivos,
actualizadob+localizarEste método mejorará significativamente la eficiencia de la búsqueda. La siguiente es una breve introducción a estos dos métodos:
encontrarDemostración del uso básico de comandos.
$ find ./ -name *.c -o -name *.h #Buscar todos los archivos de lenguaje C, -o es o $ find ./ ( -name *.c -o -name *.h ) - exec mv '{}' ./c_files/ ;# Mueve los archivos encontrados a c_files. Este uso es muy interesante.El uso anterior se puede utilizar.
xargossustitución de comando
$ find ./ -name *.c -o -name *.h | comando, por ejemplo, necesito arreglar
Cambie todos los sufijos de nombres de archivos a mayúsculas.
$ buscar ./ -name *.c -o -name *.h | xargs -i ./toupper.sh '{}' ./c_files/toupper.shEs un archivo de procesamiento que debemos implementar para convertir minúsculas a mayúsculas. La implementación específica es la siguiente:
$ cat toupper.sh#!/bin/bash# el {} se expandirá a la línea actual y se convertirá en el primer argumento de este scriptFROM=$1BASENAME=${FROM##*/}BASE=${BASENAME%.* }SUFFIX=${BASENAME##*.}TOSUFFIX=$(echo $SUFFIX | tr '[az]' '[AZ]')TO=$2/$BASE.$TOSUFFIXCOM=mv $DE $TOecho $COMeval $COMactualizadob+localizarDemostración de uso básico
$ actualizadob #Actualizar biblioteca $ localizar buscar*.gz #Buscar todos los paquetes comprimidos gz que contienen la cadena de búsqueda
De hecho, además de los dos comandos anteriores, también existen herramientas de búsqueda de comandos en Linux:
cualy
dónde es, el primero se usa para devolver la ruta completa de un determinado comando, mientras que el segundo se usa para devolver un determinado comando, archivo fuente,
La ruta al archivo man. Por ejemplo, encontrarRuta absoluta para encontrar el comando:
$ que buscar/usr/bin/find$ donde está buscarfind: /usr/bin/find /usr/X11R6/bin/find /usr/bin/X11/find /usr/X11/bin/find /usr/man/man1/ find.1.gz /usr/share/man/man1/find.1.gz /usr/X11/man/man1/find.1.gz
Cabe mencionar que si desea buscar un archivo según su contenido, entonces
encontrary
actualizadob+localizarasí como
cual,
dónde esNo hay nada que podamos hacer, la alternativa es
grep,
sedEspere el comando, se agrega el primero.
-rEn el futuro, el parámetro se puede usar para buscar el contenido del archivo especificado en los archivos en el directorio especificado y luego usar
-iDespués de pasar los parámetros, se puede reemplazar el contenido del archivo. Su uso básico se introdujo en detalle en los capítulos anteriores y no se repetirá aquí.
Vale la pena enfatizar que estos comandos son muy significativos para las operaciones con archivos. Abstraen la estructura del sistema de archivos hasta cierto punto, simplificando la operación de todo el sistema de archivos en la operación de un solo archivo. Si un solo archivo solo considera la parte de texto, eventualmente se convertirá en la operación de cadena anterior. lo comentado en el apartado anterior. Para tener una comprensión más clara de la estructura organizativa de los archivos y las relaciones entre archivos, el sistema de archivos se analizará en profundidad en la siguiente sección.
Mirando el sistema de archivos virtual de Linux desde la E/S de archivos
Análisis del sistema de archivos Linux
"Linux Core" Capítulo 9 Sistema de archivos
Controladores de dispositivos Linux, tercera edición
Consejos: algunos consejos para la redirección de E/S de Linux
Carga, análisis y análisis de ejemplo de enlace dinámico de archivo ELF en Linux bajo plataforma Intel:
parte 1,
parte 2
Tecnología de depuración de scripts de Shell
Resumen del formato de archivo ELF y el proceso de ejecución de carga del programa
Programación en lenguaje C en Linux: operaciones con archivos
La operación de archivos forma parte de la programación en lenguaje C en Linux
Estándar de jerarquía del sistema de archivos
Aprenda a recuperar archivos Ext3 eliminados en el sistema Linux
Utilice mc para recuperar archivos eliminados
Principio de eliminación y recuperación accidental de Linux ext3
Una lista completa de métodos de compresión/descompresión de Linux
todo es un byte
Teniendo en cuenta la importancia de los archivos y los sistemas de archivos, se presentará en tres subsecciones: archivos, sistemas de archivos, programas y procesos. En la sección "Archivo", presentamos principalmente los atributos básicos y las operaciones regulares de los archivos. En la sección "Sistema de archivos", discutiremos en profundidad las diversas partes del sistema de archivos de Linux (incluida la estructura del sistema de archivos de Linux). la estructura general de un sistema de archivos específico. Análisis, el principio de funcionamiento del controlador subyacente), la sección "Programas y procesos" discutirá específicamente el contenido relevante de los archivos ejecutables (incluidos diferentes tipos de programas, procesos de carga y ejecución, interacciones entre diferentes). procesos [canales de comando y canales sin nombre, comunicación de señales], control de procesos, etc.)
Es necesario discutir claramente el significado del tamaño del directorio. Además, es mejor tener en cuenta todas las operaciones de archivos convencionales, incluida la lectura, escritura, ejecución, eliminación, modificación, copia, compresión/descompresión de archivos, etc.
Acabo de regresar de Shanghai por la tarde. y descubrió que Shanghai es una ciudad hermosa. Cuando regresé, comencé a resolver este blog que me había perdido durante dos semanas debido a la competencia.
El 15 de diciembre, agregue la parte de búsqueda de archivos