
Comando ls Linux: Listar el contenido de una carpeta
El comando ls es un comando de Shell Linux externo (tales como el comando find y otros), que nos permite visualizar o listar el contenido de una carpeta sobre la salida estándar (pantalla o terminal del Shell). El contenido de una carpeta puede ser un archivo o una colección de diferentes tipos de archivos: archivos ordinarios, directorios o carpetas, enlaces simbólicos, etc.
Sintaxis general del comando ls en Linux:
ls [opción] [argumento: fichero o directorio]
Notas sobre el uso del comando ls:
- Si el argumento que pasamos al comando ls es un fichero entonces el objetivo del comando será verificar la existencia de ese fichero. Si existe el fichero nos lo va a listar sobre la terminal sino nos reenviará un mensaje de error.
- Al contrario si el argumento del comando es un directorio entonces nos listará el contenido de ese mismo directorio.
- Más de nombrar el contenido de un directorio, el comando ls nos ofrece muchas funciones e informaciones detalladas sobre ese contenido, tales como los permisos o privilegios de administración de los ficheros, sus ínodos, su propietario, datos sobre la fecha de creación, tamaño, etc. Todo esto lo vamos a intentar ver en el tutorial de este artículo con buenos ejemplos detallados y fáciles de entender... o eso espero 😉.
Ejemplos sobre el comando ls:
Ejemplo 1:
➤ Suponemos que existe el fichero "nombre_archivo.txt" en el directorio actual:
$ ls nombre_archivo.txtnombre_archivo.txt
Lo que hace este comando es verificar la existencia del archivo nombre_archivo.txt en la carpeta actual e imprimir su nombre en la salida estándar.
Ejemplo 2:
➤ Suponemos que en la carpeta corriente existen dos archivos (archivo.c y script.sh) y una carpeta llamada Cursos:
$ lsarchivo.c script.sh Cursos/
En el comando del ejemplo anterior hemos ejecutado el ls sin ningún argumento, es decir sin especificar ningún archivo ordinario o carpeta. En este caso, el argumento por defecto será el directorio corriente.
Ten en cuenta que el comando "ls" sin ningún argumento equivale a "ls .". El punto equivale al directorio corriente.
Las opciones más utilizadas del comando ls:
- La opción -l: Cuando ejecutamos "ls -l" obtenemos en el resultado una información mas detallada con sobre cada uno de los ficheros (tipo de cada fichero, protección, número de enlaces que apunten a cada archivo, propietario, grupo, tamaño y la fecha de la última modificación).
- La opción -a: Ejecutando "ls -a" visualizamos en el resultado todos los archivos incluyendo los archivos ocultos. Los archivos ocultos empiezan con un punto.
- La opción -i: Con "ls -i" se imprimirá el número del ínodo de cada archivo.
- La opción -R: "ls -R" imprimirá el contenido de una carpeta y de sus sub-carpetas de forma recursiva.
- La opción -s: Con "ls -s" se visualiza el tamaño de cada archivo en Ko.
- La opción -F: Con "ls -F" se visualizan algunos símbolos justo después de cada archivo o carpeta: "/" si es una carpeta, "*" si un fichero tiene los permisos de ejecución y "@" si es un archivo enlace (o enlace simbólico).
- La opción -d: con "ls -d", si el parámetro es el nombre de un directorio verifica su existencia sin descender y imprimir su contenido.
Ejemplos:
➔ Suponemos que la carpeta corriente contiene la sub-carpeta «rep», los archivos: «fich1», «fich2» y«fich3».
➔ Suponemos que la sub-carpeta « rep » contiene los archivos «fich » y « fich4 ».
Ejemplo de ls sin ningún argumento y ninguna opción:
$ lsrep fich1 fich2 fich3
Ejemplo de ls -a:
$ ls -a
. .. .perfil rep fich1 fich2 fich3
En el resultado de este ejemplo observamos que hay algunos ficheros que no aparecían con solo el comando "ls", son "." , ".." y ".perfil", estos ficheros son ficheros ocultos y ahora son visibles gracias a la opción -a.
Para explicar más: el "." es un enlace simbólico que apunta al directorio actual, es decir con el comando "cd ." nos quedamos en el mismo directorio; el ".." es también un enlace simbólico y apunta al directorio padre del directorio actual, es decir con "cd .." podemos ir un nivel atrás en la jerarquía del sistema de ficheros; y por último ".perfil" es un archivo o directorio oculto.
Ejemplo de ls -F:
$ ls -Frep/ fich1 fich2* fich3@
Con ejecutar el comando "ls -F" y observar el resultado concluimos que:
- "rep" es un directorio y la razón es la "/".
- "fich2" es un fichero que se puede ejecutar y tiene permiso de ejecución y la razón es el "*".
- "fich3" es un enlace simbólico y la razón es el "@".
Ejemplo de ls -R:
$ ls -Rrep fich1 fich2 fich3./rep:fich4 fich5
Observando el resultado, concluyemos que la opción -R nos permite ver (de forma recursiva) el contenido de la carpeta actual y el contenido de sus sub-carpetas. En este caso, la carpeta actual contiene la sub-carpeta "rep" que a su vez contiene dos ficheros "fich4" y "fich5".
Ejemplo de ls -d:
$ ls -d reprep
En este último ejemplo, verificamos la existencia de la carpeta "rep" en le directorio actual. Notamos también que no se imprime el contenido de la carpeta "rep", sólo su nombre.
Ejemplo de ls -l:
$ ls -l / total 96 drwxr-xr-x 2 root root 4096 avr 14 10:21 bin drwxr-xr-x 3 root root 4096 avr 16 01:22 boot lrwxrwxrwx 1 root root 11 jun 1 2008 cdrom -> media/cdrom drwxr-xr-x 15 root root 14720 avr 18 08:48 dev drwxr-xr-x 3 root root 4096 jun 1 2008 emul drwxr-xr-x 140 root root 12288 avr 18 09:05 etc drwxr-xr-x 5 root root 4096 avr 10 15:10 home drwxr-xr-x 2 root root 4096 jun 1 2008 initrd lrwxrwxrwx 1 root root 34 avr 3 19:04 initrd.img -> boot/initrd.img-2.6.29.1-vanilla64 lrwxrwxrwx 1 root root 34 mar 24 08:05 initrd.img.old -> boot/initrd.img-2.6.28.9-vanilla64 drwxr-xr-x 14 root root 4096 avr 17 11:02 lib lrwxrwxrwx 1 root root 20 jun 1 2008 lib32 -> /emul/ia32-linux/lib lrwxrwxrwx 1 root root 4 jun 1 2008 lib64 -> /lib drwx------ 2 root root 16384 jun 1 2008 lost+found drwxr-xr-x 7 root root 4096 avr 18 08:41 media drwxr-xr-x 5 root root 4096 mar 24 15:14 mnt drwxr-xr-x 3 root root 4096 avr 7 11:49 opt dr-xr-xr-x 145 root root 0 avr 18 08:41 proc drwxr-xr-x 22 root root 4096 avr 17 10:17 root drwxr-xr-x 2 root root 12288 avr 17 11:02 sbin drwxr-xr-x 7 root root 0 avr 18 08:41 selinux drwxr-xr-x 3 root root 4096 jun 1 2008 srv drwxr-xr-x 12 root root 0 avr 18 08:41 sys drwxrwxrwt 9 root root 4096 avr 18 10:38 tmp drwxr-xr-x 11 root root 4096 déc 15 22:37 usr drwxr-xr-x 14 root root 4096 fév 17 20:57 var lrwxrwxrwx 1 root root 31 avr 3 19:04 vmlinuz -> boot/vmlinuz-2.6.29.1-vanilla64 lrwxrwxrwx 1 root root 31 mar 24 08:05 vmlinuz.old -> boot/vmlinuz-2.6.28.9-vanilla64
En este ejemplo hay mucho que explicar. Pero en general el comando "ls -l" nos ofrece una información más detallada. -l equivale a long en inglés que significa largo, es decir una información larga. El "/" representa a la carpeta raíz de la jerarquía del sistema de ficheros de Linux. En este ejemplo vemos una información detallada sobre los archivos principales del sistema operativo menos los archivos o directorios ocultos.
No voy a entrar en mucho detalle sobre las explicación de estas líneas porqué necesitaría un artículo independiente y completo y porque el comando "ls -l" es uno de los más usados y más importantes que hay que llevarlo bien entendido.
Os explico de forma detallada y muy clara el comando ls de Linux y todas sus opciones.
ResponderEliminar