English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Gestión de archivos y directorios en Linux

Sabemos que la estructura de directorios de Linux es de estructura en árbol, el directorio más alto es el directorio raíz /.

Otros directorios se pueden agregar al árbol mediante montaje y se pueden quitar mediante desmontaje.

Antes de comenzar este tutorial, necesitamos saber qué es una ruta absoluta y una ruta relativa.

  • Ruta absoluta:
    la forma de escribir rutas, desde el directorio raíz / escribir, por ejemplo: /usr/share/doc Este directorio.

  • Ruta relativa:
    la forma de escribir rutas, no por / escribir, por ejemplo, por /usr/share/doc debe ir /usr/share/man Bajo, se puede escribir: cd ../man Esto es la forma de escribir rutas relativas.

Comandos comunes para manejar directorios

A continuación, veamos algunos comandos comunes para manejar directorios:

  • ls (abreviatura en inglés: list files): Listar directorios y nombres de archivos

  • cd (abreviatura en inglés: change directory): Cambiar de directorio

  • pwd (abreviatura en inglés: print work directory): Mostrar el directorio actual

  • mkdir (abreviatura en inglés: make directory): Crear un nuevo directorio

  • rmdir (abreviatura en inglés: remove directory): Eliminar un directorio vacío

  • cp(英文全拼:copy file): 复制文件或目录

  • rm(英文全拼:remove): 删除文件或目录

  • mv(英文全拼:move file): 移动文件与目录,或修改文件与目录的名称

Puedes usar man [comando] Para ver la documentación de los comandos, como: man cp.

ls (列出目录)

在Linux系统当中, ls 命令可能是最常被运行的。

Sintaxis:

[root@www ~]# ls [-aAdfFhilnrRSt] 目录名称
[root@www ~]# ls [--color={never,auto,always}] 目录名称
[root@www ~]# ls [--full-time] 目录名称

Opciones y parámetros:

  • -a  :全部的文件,连同隐藏文件( 开头为 . 的文件) 一起列出来(常用)

  • -d  :仅列出目录本身,而不是列出目录内的文件数据(常用)

  • -l  :长数据串列出,包含文件的属性与权限等等数据;(常用)

将家目录下的所有文件列出来(含属性与隐藏档)

[root@www ~]# ls -al ~

cd (切换目录)

cd是Change Directory的缩写,这是用来变换工作目录的命令。

Sintaxis:

 cd [相对路径或绝对路径]
#使用 mkdir 命令创建 w3codebox 目录
[root@www ~]# mkdir w3codebox
#使用绝对路径切换到 w3codebox 目录
[root@www ~]# cd /root/w3codebox/
#使用相对路径切换到 w3codebox 目录
[root@www ~]# cd ./w3codebox/
# 表示回到自己的家目录,亦即是 /root 这个目录
[root@www w3codebox]# cd ~
# 表示去到目前的上一级目录,亦即是 /root 的上一级目录的意思;
[root@www ~]# cd ..

接下来大家多操作几次应该就可以很好的理解 cd 命令的。

pwd (显示目前所在的目录)

pwd 是 Print Working Directory 的缩写,也就是显示目前所在目录的命令。

[root@www ~]# pwd [-P]

Opciones y parámetros:

  • -P :显示出确实的路径,而非使用连结 (link) 路径。

示例:单纯显示出目前的工作目录:

[root@www ~]# pwd
/root   <== 显示出目录啦~

示例显示出实际的工作目录,而非连结档本身的目录名而已。

[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 (创建新目录)

如果想要创建新的目录的话,那么就使用mkdir (make directory)吧。

Sintaxis:

mkdir [-mp] 目录名称

Opciones y parámetros:

  • -m :配置文件的权限喔!直接配置,不需要看默认权限 (umask) 的脸色~

  • -p :帮助你直接将所需要的目录(包含上一级目录)递归创建起来!

示例:请到/tmp底下尝试创建数个新目录看看:

[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

加了这个 -p 的选项,可以自行帮你创建多层目录!

示例:创建权限为 rwx--x--x 的目录。

[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

上面的权限部分,如果没有加上 -m 来强制配置属性,系统会使用默认属性。

如果我们使用 -m ,如上例我们给予 -m 711 来给予新的目录 drwx--x--x 的权限。

rmdir (删除空的目录)

Sintaxis:

 rmdir [-p] 目录名称

Opciones y parámetros:

  • -p :连同上一级『空的』目录也一起删除

删除 w3codebox 目录

[root@www tmp]# rmdir w3codebox/

将 mkdir 示例中创建的目录(/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: `test'1': Directory not empty
[root@www tmp]# rmdir -p test1/test2/test3/test4
[root@www tmp]# ls -l <== Mire, en la salida inferior, test y test1desapareció!
drwx--x--x  2 root root 4096 Jul 18 12:54 test2

utilizando -p esta opción, puedes copiar test1/test2/test3/test4 eliminar en una vez.

Pero hay que tener en cuenta que este rmdir solo puede eliminar directorios vacíos, puedes usar el comando rm para eliminar directorios no vacíos.

cp (copiar archivo o directorio)

cp es copiar archivos y directorios.

Sintaxis:

[root@www ~]# cp [-adfilprsu] archivo de origen (origen) archivo de destino (destino)
[root@www ~]# cp [opciones] origen1 fuente2 fuente3 .... directorio

Opciones y parámetros:

  • -a:Es equivalente a -Significa pdr, para más detalles sobre pdr, consulte las siguientes explicaciones (comúnmente utilizado);

  • -d:Si el archivo de origen es un archivo de enlace (archivo de enlace), se copiarán los atributos del enlace en lugar del archivo en sí;

  • -f:Significa fuerza (force), si el archivo de destino ya existe y no se puede abrir, se eliminará y se intentará nuevamente;

  • -i:Si el archivo de destino ya existe, se preguntará antes de sobrescribir (comúnmente utilizado);

  • -l:Crear archivos de enlace duro (enlace duro) en lugar de copiar el archivo en sí;

  • -p:Copiar los atributos del archivo junto con él, en lugar de usar atributos predeterminados (comúnmente utilizado para respaldo);

  • -r:Copiar recursivamente y continuamente, utilizado para la copia de directorios (comúnmente utilizado);

  • -s:Copiar como archivo de enlace simbólico (enlace simbólico), es decir, archivo de "atajo";

  • -u:¡Solo actualiza destination si destination es más antiguo que source!

Usando la identidad de root, copie .bashrc desde el directorio root /en tmp y nombrarlo bashrc

[root@www ~]# cp ~/.bashrc /tmp/bashrc
[root@www ~]# cp -i ~/.bashrc /tmp/bashrc
cp: sobrescribir `/tmp/bashrc'? n <== n no sobrescribir, y para sobrescribir

rm (eliminar archivo o directorio)

Sintaxis:

 rm: [-fir]: archivo o directorio

Opciones y parámetros:

  • -f: significa force, ignora los archivos no existentes, no aparecerán mensajes de advertencia;

  • -i: modo interactivo, antes de eliminar se le preguntará al usuario si desea realizar la acción

  • -r: Eliminar recursivamente, se usa más comúnmente para eliminar directorios, ¡esta opción es muy peligrosa!!!

Eliminar el bashrc creado en el ejemplo cp!

[root@www tmp]# rm -i bashrc
rm: ¿eliminar el archivo regular `bashrc`? y

Si se agrega -La opción i preguntará activamente, para evitar que elimines el nombre incorrecto!

mv (mover archivos y directorios, o cambiar nombres)

Sintaxis:

[root@www ~]# mv [-fiu] fuente destino
[root@www ~]# mv [opciones] fuente1 fuente2 fuente3 .... directorio

Opciones y parámetros:

  • -f: force, significa forzar, si el archivo de destino ya existe, no se preguntará y se sobrescribirá directamente;

  • -i: Si el archivo de destino (destination) ya existe, se preguntará si se desea sobrescribir!

  • -u: Si el archivo de destino ya existe y source es más nuevo, se actualizará (update)

Copiar un archivo, crear un directorio, y mover el archivo al directorio

[root@www ~]# cd /tmp
[root@www ~]# cp ~/.bashrc bashrc
[root@www tmp]# mkdir mvtest
[root@www tmp]# mv bashrc mvtest

Mover un archivo a un directorio, se hace así!

Cambia el nombre del directorio recién creado a mvtest2

[root@www tmp]# mv mvtest mvtest2

Ver contenido de archivo Linux

En el sistema Linux, se utilizan los siguientes comandos para ver el contenido de los archivos:

  • cat Desde la primera línea comienza a mostrar el contenido del archivo

  • tac Desde la última línea comienza a mostrar, ¡se puede ver que tac es el inverso de cat!

  • nl Muestra el número de línea mientras se muestra

  • more muestra el contenido del archivo página por página

  • less, similar a more, pero lo mejor es que puede volver a la página anterior!

  • head solo para ver las primeras líneas

  • tail solo para ver las últimas líneas

Puedes usar man [comando]Para ver la documentación de los comandos, como: man cp.

cat

Muestra el contenido del archivo a partir de la primera línea

Sintaxis:

cat [-AbEnTv]

Opciones y parámetros:

  • -A: Equivalente a -vET opciones de integración, puede mostrar algunos caracteres especiales en lugar de espacios en blanco;

  • -b: Indica el número de línea, solo para las líneas no en blanco, no se muestra el número de línea para las líneas en blanco!

  • -E : mostrar el byte de final de línea $

  • -n : imprimir números de línea, incluyendo las líneas en blanco, con números de línea, y -Las opciones de b son diferentes;

  • -T : mostrar la tecla [tab] como ^I

  • -v : listar algunos caracteres especiales no visibles

Revisar /etc/Contenido del archivo versión:

[root@www ~]# cat /etc/versión
Versión CentOS 6.4 (Final)
Kernel \r en un \m

tac

Tac y el comando cat son opuestos, el contenido del archivo se muestra desde la última línea, lo que indica que tac es la inversa de cat! Por ejemplo:

[root@www ~]# tac /etc/versión
Kernel \r en un \m
Versión CentOS 6.4 (Final)

nl

Mostrar números de línea

Sintaxis:

nl [-bnw] archivo

Opciones y parámetros:

  • -b : especifica el método de numeración de línea, hay principalmente dos tipos:
     -b a : indica que, sin importar si es una línea en blanco o no, también se deben mostrar números de línea (similares a cat -n)
     -b t : si hay líneas en blanco, no mostrar números de línea en la línea en blanco (valor predeterminado);

  • -n : métodos de representación de números de línea, hay principalmente tres tipos:
     -n ln : los números de línea se muestran en el extremo izquierdo de la pantalla;
     -n rn : los números de línea se muestran en el extremo derecho de la barra, sin 0 adicional;
     -n rz : los números de línea se muestran en el extremo derecho de la barra, con 0 adicional;

  • -w : número de dígitos ocupados por la barra de números de línea.

Ejemplo 1: usar nl para listar /etc/Contenido de la versión

[root@www ~]# nl /etc/versión
     1  Versión CentOS 6.4 (Final)
     2  Kernel \r en un \m

more

Página por página

[root@www ~]# more /etc/man_db.config 
#
# Generado automáticamente desde man.conf.in por el
# script de configuración.
#
# man.conf de man-1.6d
....(omitiendo el texto intermedio)....
--More--(28% ) == => ¡Punto de atención aquí! Tu cursor también esperará tus comandos

Durante la ejecución del programa more, tienes varios atajos de teclado disponibles:

  • Tecla de espacio (space) : representa avanzar una página;

  • Enter : representa avanzar una línea;

  • /Cadena : representa buscar hacia abajo la palabra clave 'cadena' en el contenido mostrado;

  • :f : muestra inmediatamente el nombre del archivo y la línea actual;

  • q : representa salir inmediatamente de more, sin mostrar más contenido del archivo.

  • b o [ctrl]-b : representa retroceder una página, aunque este movimiento solo es útil para archivos, no para tuberías.

less

Página por página, siguiente ejemplo de salida/etc/Contenido del archivo man.config:

[root@www ~]# less /etc/man.config
#
# Generado automáticamente desde man.conf.in por el
# script de configuración.
#
# man.conf de man-1.6d
....(omitiendo el texto intermedio)....
:                         <== Aquí puedes ingresar un comando!

Los comandos que se pueden ingresar mientras less está en ejecución son:

  • Tecla de espacio           : Bajar una página;

  • [pagedown]               : Bajar una página;

  • [pageup]                   : Subir una página;

  • /cadena                   : Función de búsqueda hacia abajo de 'cadena';

  • ?cadena                   : Función de búsqueda hacia arriba de 'cadena';

  • n                           : Repetir la búsqueda anterior (con / o ? Información adicional!)

  • N                           : Repetir la búsqueda anterior en sentido inverso (con / o ? Información adicional!)

  • q                           : Salir del programa less;

head

Extraer las primeras líneas del archivo

Sintaxis:

head [-n número] archivo

Opciones y parámetros:

  • -n : número siguiente, representa cuántas líneas mostrar

[root@www ~]# head /etc/man.config

Por defecto, muestra las primeras 10 líneas! Si desea mostrar las primeras 20 líneas, debe hacerlo así:

[root@www ~]# head -n 20 /etc/man.config

tail

Extraer las últimas líneas del archivo

Sintaxis:

tail [-n número] archivo

Opciones y parámetros:

  • -n : número siguiente, representa cuántas líneas mostrar

  • -f : representa el nombre del archivo que se seguirá, debe presionar [ctrl]-c para finalizar el seguimiento de tail

[root@www ~]# tail /etc/man.config
# Por defecto, muestra las últimas diez líneas! Si desea mostrar las últimas 20 líneas, debe hacerlo así:
[root@www ~]# tail -n 20 /etc/man.config