Linux Gestión de archivos y directorios
Sabemos que la estructura de directorios de Linux es de tipo árbol, el directorio más alto es el directorio raíz./。
Otros directorios se pueden agregar al árbol mediante montaje, y se pueden eliminar mediante desmontaje.
Antes de comenzar este tutorial, necesitamos saber qué son las rutas absolutas y relativas.
Ruta absoluta:
La forma de escribir la ruta, desde el directorio raíz/se escribe, por ejemplo: el directorio /usr/share/doc.-
Ruta relativa:
La forma de escribir la ruta, no desde/el inicio, por ejemplo, para ir de /usr/share/doc a /usr/share/man, se puede escribir:cd ../manEsta es la forma de escribir rutas relativas.
Comandos comunes para manejar directorios
A continuación, veamos algunos comandos comunes para manejar directorios:
- ls (en inglés: list files): lista directorios y nombres de archivos
- cd (en inglés: change directory): cambia de directorio
- pwd (en inglés: print work directory): muestra el directorio actual
- mkdir (en inglés: make directory): crea un nuevo directorio
- rmdir (en inglés: remove directory): elimina un directorio vacío
- cp (en inglés: copy file): copia archivos o directorios
- rm (en inglés: remove): elimina archivos o directorios
- mv (en inglés: move file): mueve archivos y directorios, o cambia el nombre de archivos y directorios
Puedes usarman [comando]para consultar la documentación de uso de cada comando, por ejemplo: man cp.
ls (listar directorios)
En el sistema Linux, el comando ls puede ser el que se ejecuta con más frecuencia.
Sintaxis:
[root@www ~]# ls [-aAdfFhilnrRSt] 目录名称
[root@www ~]# ls [--color={never,auto,always}] 目录名称
[root@www ~]# ls [--full-time] 目录名称
Opciones y parámetros:
- -a: todos los archivos, incluidos los ocultos (archivos que comienzan con .) (común)
- -d: lista solo el directorio en sí, no los datos de archivos dentro del directorio (común)
- -l: lista en formato largo, incluyendo atributos y permisos de los archivos, etc. (común)
Lista todos los archivos en el directorio (incluyendo atributos y archivos ocultos)
[root@www ~]# ls -al ~
cd (cambiar de directorio)
cd es la abreviatura de Change Directory, es el comando para cambiar el directorio de trabajo.
Sintaxis:
cd [相对路径或绝对路径]
#使用 mkdir 命令创建 ejemplo 目录 [root@www ~]# mkdir ejemplo #使用绝对路径切换到 ejemplo 目录 [root@www ~]# cd /root/ejemplo/ #使用相对路径切换到 ejemplo 目录 [root@www ~]# cd ./ejemplo/ # 表示回到自己的家目录,亦即是 /root 这个目录 [root@www ejemplo]# cd ~ # 表示去到目前的上一级目录,亦即是 /root 的上一级目录的意思; [root@www ~]# cd ..
A continuación, practicando unas cuantas veces deberían poder entender bien el comando cd.
pwd (mostrar el directorio actual)
pwd esPrint Working Directoryla abreviatura de Print Working Directory, es decir, el comando que muestra el directorio actual.
[root@www ~]# pwd [-P]
Opciones y parámetros:
- -P: muestra la ruta real, en lugar de usar la ruta del enlace (link).
Ejemplo: mostrar simplemente el directorio de trabajo actual:
[root@www ~]# pwd /root <== 显示出目录啦~
Ejemplo: mostrar el directorio de trabajo real, no solo el nombre del directorio del enlace.
[root@www ~]# cd /var/mail <==注意,/var/mail是一个链接档 [root@www mail]# pwd /var/mail <==列出目前的工作目录 [root@www mail]# pwd -P /var/spool/mail <==怎么回事?有没有加 -P 差很多~ [root@www mail]# ls -ld /var/mail lrwxrwxrwx 1 root root 10 Sep 4 17:54 /var/mail -> spool/mail # 看到这里应该知道为啥了吧?因为 /var/mail 是链接档,链接到 /var/spool/mail # 所以,加上 pwd -P 的选项后,会不以链接档的数据显示,而是显示正确的完整路径啊!
mkdir (crear un nuevo directorio)
Si deseas crear un nuevo directorio, entonces usa mkdir (make directory).
Sintaxis:
mkdir [-mp] 目录名称
Opciones y parámetros:
- -m: configura los permisos del archivo. Se configura directamente, sin necesidad de depender de los permisos predeterminados (umask).
- -p: te ayuda a crear directamente el directorio necesario (incluidos los directorios superiores) de forma recursiva.
Ejemplo: ve a /tmp e intenta crear varios directorios nuevos:
[root@www ~]# cd /tmp [root@www tmp]# mkdir test <==创建一名为 test 的新目录 [root@www tmp]# mkdir test1/test2/test3/test4 mkdir: cannot create directory `test1/test2/test3/test4': No such file or directory <== 没办法直接创建此目录啊! [root@www tmp]# mkdir -p test1/test2/test3/test4
Con la opción -p, se pueden crear múltiples niveles de directorios automáticamente.
Ejemplo: crear un directorio con permisosrwx--x--xdel directorio.
[root@www tmp]# mkdir -m 711 test2 [root@www tmp]# ls -l drwxr-xr-x 3 root root 4096 Jul 18 12:50 test drwxr-xr-x 3 root root 4096 Jul 18 12:53 test1 drwx--x--x 2 root root 4096 Jul 18 12:54 test2
En cuanto a los permisos anteriores, si no se agrega -m para forzar la configuración de atributos, el sistema usará los atributos predeterminados.
Si usamos -m, como en el ejemplo anterior, damos -m 711 para otorgar al nuevo directorio los permisos drwx--x--x.
rmdir (eliminar un directorio vacío)
Sintaxis:
rmdir [-p] 目录名称
Opciones y parámetros:
- -p :Desde ese directorio, eliminar de una vez varios niveles de directorios vacíos
Eliminar el directorio ejemplo
[root@www tmp]# rmdir ejemplo/
¡Elimina los directorios creados en el ejemplo de mkdir (en /tmp)!
[root@www tmp]# ls -l <==看看有多少目录存在? drwxr-xr-x 3 root root 4096 Jul 18 12:50 test drwxr-xr-x 3 root root 4096 Jul 18 12:53 test1 drwx--x--x 2 root root 4096 Jul 18 12:54 test2 [root@www tmp]# rmdir test <==可直接删除掉,没问题 [root@www tmp]# rmdir test1 <==因为尚有内容,所以无法删除! rmdir: `test1': Directory not empty [root@www tmp]# rmdir -p test1/test2/test3/test4 [root@www tmp]# ls -l <==您看看,底下的输出中test与test1不见了! drwx--x--x 2 root root 4096 Jul 18 12:54 test2
Usando la opción -p, se pueden eliminar de una vez test1/test2/test3/test4.
Pero ten en cuenta que rmdir solo puede eliminar directorios vacíos; puedes usar el comando rm para eliminar directorios no vacíos.
cp (copiar archivos o directorios)
cp sirve para copiar archivos y directorios.
Sintaxis:
[root@www ~]# cp [-adfilprsu] 来源档(source) 目标档(destination) [root@www ~]# cp [options] source1 source2 source3 .... directory
Opciones y parámetros:
-a:Equivale a -pdr; en cuanto a pdr, consulte las explicaciones a continuación; (común)
-d:Si el archivo de origen es un enlace (link file), se copian los atributos del enlace en lugar del archivo en sí.
-f:Significa forzar (force); si el archivo de destino ya existe y no se puede abrir, se elimina y se intenta nuevamente.
-i:Si el archivo de destino (destination) ya existe, preguntará antes de sobrescribir (común)
-l:Crea un enlace duro (hard link) en lugar de copiar el archivo en sí.
-p:Copia junto con los atributos del archivo, en lugar de usar los atributos predeterminados (común en respaldos).
-r:Copia recursivamente, se usa para copiar directorios; (común)
-s:Copia como enlace simbólico (symbolic link), es decir, un archivo de "acceso directo".
-u:Solo actualiza destination si destination es más antiguo que source.
Como root, copia .bashrc del directorio root a /tmp, y nómbralo bashrc.
[root@www ~]# cp ~/.bashrc /tmp/bashrc [root@www ~]# cp -i ~/.bashrc /tmp/bashrc cp: overwrite `/tmp/bashrc'? n <==n不覆盖,y为覆盖
rm (eliminar archivos o directorios)
Sintaxis:
rm [-fir] 文件或目录
Opciones y parámetros:
- -f: significa force, ignora archivos inexistentes y no muestra mensajes de advertencia.
- -i: modo interactivo, pregunta al usuario si desea proceder antes de eliminar.
- -r: eliminación recursiva. ¡Lo más usado para eliminar directorios! ¡¡¡Es una opción muy peligrosa!!!
¡Elimina el bashrc creado en el ejemplo de cp!
[root@www tmp]# rm -i bashrc rm: remove regular file `bashrc'? y
Si agregas la opción -i, preguntará activamente, evitando que elimines el archivo incorrecto.
mv (mover archivos y directorios, o cambiar el nombre)
Sintaxis:
[root@www ~]# mv [-fiu] source destination [root@www ~]# mv [options] source1 source2 source3 .... directory
Opciones y parámetros:
- -f: significa forzar; si el archivo de destino ya existe, lo sobrescribe sin preguntar.
- -i: si el archivo de destino (destination) ya existe, preguntará si sobrescribir.
- -u: solo actualiza (update) si el archivo de destino ya existe y source es más nuevo.
Copiar un archivo, crear un directorio, mover el archivo al directorio.
[root@www ~]# cd /tmp [root@www tmp]# cp ~/.bashrc bashrc [root@www tmp]# mkdir mvtest [root@www tmp]# mv bashrc mvtest
¡Así se hace para mover un archivo a un directorio!
Cambia el nombre del directorio recién creado a mvtest2.
[root@www tmp]# mv mvtest mvtest2
Visualización del contenido de archivos en Linux
En el sistema Linux, usa los siguientes comandos para ver el contenido de los archivos:
- cat: muestra el contenido del archivo desde la primera línea.
- tac: muestra desde la última línea; se puede ver que tac es cat al revés.
- nl: al mostrar, también muestra los números de línea.
- more: muestra el contenido del archivo página por página.
- less: similar a more, pero mejor que more porque puede retroceder páginas.
- head: solo muestra las primeras líneas.
- tail: solo muestra las últimas líneas.
Puedes usarman [comando]para consultar la documentación de uso de cada comando, por ejemplo: man cp.
cat
Muestra el contenido del archivo desde la primera línea.
Sintaxis:
cat [-AbEnTv]
Opciones y parámetros:
- -A : equivalente a la opción integrada -vET, puede listar algunos caracteres especiales en lugar de solo espacios en blanco;
- -b : muestra números de línea, solo para líneas no vacías; las líneas vacías no se numeran.
- -E : muestra el byte de fin de línea $ al final;
- -n : imprime los números de línea, incluidas las líneas en blanco, a diferencia de la opción -b;
- -T : muestra la tecla [tab] como ^I;
- -v : lista algunos caracteres especiales que no se ven a simple vista
Ver el contenido del archivo /etc/issue:
[root@www ~]# cat /etc/issue CentOS release 6.4 (Final) Kernel \r on an \m
tac
El comando tac es exactamente lo opuesto a cat; el contenido del archivo se muestra desde la última línea. Se puede ver que tac es cat escrito al revés. Por ejemplo:
[root@www ~]# tac /etc/issue Kernel \r on an \m CentOS release 6.4 (Final)
nl
Mostrar números de línea
Sintaxis:
nl [-bnw] 文件
Opciones y parámetros:
- -b : especifica el método de numeración de líneas, principalmente dos:
-b a : indica que se muestran números de línea sin importar si la línea está vacía o no (similar a cat -n);
-b t : si hay líneas vacías, no se numera la línea vacía (valor predeterminado); - -n : método para representar los números de línea, principalmente tres:
-n ln : el número de línea se muestra en el extremo izquierdo de la pantalla;
-n rn : el número de línea se muestra en el extremo derecho de su propio campo, sin añadir 0;
-n rz : el número de línea se muestra en el extremo derecho de su propio campo, añadiendo 0; - -w : la cantidad de dígitos que ocupa el campo de número de línea.
Ejemplo 1: usar nl para listar el contenido de /etc/issue
[root@www ~]# nl /etc/issue
1 CentOS release 6.4 (Final)
2 Kernel \r on an \m
more
Pasar página por página
[root@www ~]# more /etc/man_db.config # # Generated automatically from man.conf.in by the # configure script. # # man.conf from man-1.6d ....(中间省略).... --More--(28%) <== 重点在这一行喔!你的光标也会在这里等待你的命令
Durante la ejecución del programa more, tienes varias teclas que puedes pulsar:
- Barra espaciadora (space): representa bajar una página;
- Enter : representa bajar una 'línea';
- /cadena : representa buscar hacia abajo la palabra clave 'cadena' en el contenido mostrado;
- :f : muestra inmediatamente el nombre del archivo y el número de línea actual;
- q : representa salir inmediatamente de more y no mostrar más el contenido del archivo.
- b o [ctrl]-b : representa retroceder una página, pero esta acción solo es útil para archivos, no para tuberías.
less
Pasar página por página. El siguiente ejemplo muestra el contenido del archivo /etc/man.config:
[root@www ~]# less /etc/man.config # # Generated automatically from man.conf.in by the # configure script. # # man.conf from man-1.6d ....(中间省略).... : <== 这里可以等待你输入命令!
Los comandos que se pueden introducir durante la ejecución de less son:
- Barra espaciadora : bajar una página;
- [pagedown]: bajar una página;
- [pageup] : subir una página;
- /cadena : función de buscar hacia abajo 'cadena';
- ?cadena : función de buscar hacia arriba 'cadena';
- n : repetir la búsqueda anterior (relacionado con / o ?!)
- N : repetir en sentido inverso la búsqueda anterior (relacionado con / o ?!)
- q : salir del programa less;
head
Mostrar las primeras líneas de un archivo
Sintaxis:
head [-n number] 文件
Opciones y parámetros:
- -n : seguido de un número, indica cuántas líneas mostrar
[root@www ~]# head /etc/man.config
De forma predeterminada, se muestran las primeras 10 líneas. Si se quieren mostrar las primeras 20 líneas, se haría así:
[root@www ~]# head -n 20 /etc/man.config
tail
Mostrar las últimas líneas de un archivo
Sintaxis:
tail [-n number] 文件
Opciones y parámetros:
- -n : seguido de un número, indica cuántas líneas mostrar
- -f : indica seguir monitoreando el nombre de archivo especificado; la supervisión de tail no finaliza hasta que se pulsa [ctrl]-c
[root@www ~]# tail /etc/man.config # 默认的情况中,显示最后的十行!若要显示最后的 20 行,就得要这样: [root@www ~]# tail -n 20 /etc/man.configOtras extensiones