Entradas con la etiqueta ‘curso de linux’

La Pantalla Negra IV

Sábado, 16 de Junio de 2001

#####################################
## HACKINDEX ##
## http://www.hackindex.org ##
#####################################
Titulo: La pantalla negra IV
Autor: Lokutus
Tema: Linux

La información incluída en este documento es expuesta en base a un interés educativo. HackIndex no se hace responsable del uso de dicha información.

El siguiente documento es propiedad de HackIndex y de su autor, pudiendo ser distribuído de forma totalmente libre y sobre cualquier tipo de soporte siempre y cuando se respete el formato original, se cite a A.H.E. como fuente, se incluya un enlace actualizado al documento o a la web del grupo: http://www.hackindex.org ; y se incluya este disclaimer en su totalidad y sin modificación alguna.

Queda extrictamente prohibida su distribución con fines lucrativos, cuando se altere su contenido sin consentimiento o cuando se incumpla cualquier otra condicion citada anteriormente en el presente disclaimer.
#####################################

Y una vez más entramos en nuestro sistema. Vamos a ver que tipos de ficheros tenemos.

Linux Debian (Potatoe)Login: genaro
password:
[genaro]$_

Vimos en un capítulo anterior, que con la órden “cat”, podemos ver el contenido de un fichero.

[genaro]$ cat fichero.txt
Esto es el contenido de mi fichero
[genaro]$ _

Pero vamos a cotillear otros ficheros, (si estas accediendo con un telnet no hagas la siguiente órden), por ejemplo, vamos a ver que tiene el fichero “less” por dentro.

[genaro]$ cat /usr/bin/less
dsfgvrtyv456v3ty 45 tg fgf f wf werv345v
v 4345v2345v45v3 (pitido)sdf df sdfsd(pitido)
df f wef wefwe(requetepitido) sdf sdf df sdfsdf
[cosas muy raras]$ _

Hemos visto aparecer en la pantalla una sucesión de símbolos raros, pitidos, e incluso, se nos ha desconfigurado la consola.

Si tecleamos algo, las letras han sido cambiadas por símbolos semigráficos.

Para dejar la consola como estaba, se usa la órden “reset”, también se restaura solo cada vez que se rearranca el ordenador, aunque de todas formas, cada vez es más raro que se desconfigure el terminal.

Vamos a entrar en otra sesión. Linux, puede disponer en su consola de varias sesiones virtuales, por defecto hasta siete, pulsando la combinación de teclas “Alt + F2″, vamos a la sesión 2, para volver pues “Alt + F1″, podemos combinar “Alt ” con las teclas F1 hasta F6. F7 normalmente está reservada para XWindow, y para conmutar de X Window a modo texto, es necesario pulsar además la tecla “Control”.

Linux Debian (Potatoe)Login: genaro
password:
[genaro]$ _

Cuando hemos volcado el fichero “less”, nos ha salido los símbolos raros, por que “less” no es un fichero para ser leido, no es un fichero de texto plano, y puede contener, y contiene carácteres que no son imprimibles en la salida estandar.

Para saber que tipo de fichero es un fichero determinado, tenemos la órden “file”.

[genaro]$ file /usr/doc/FAQ/txt/Linux-FAQ
/usr/doc/FAQ/txt/Linux-FAQ: English Text
[genaro]$ file /usr/doc/FAQ/html/Linux-FAQ-1.html
/usr/doc/FAQ/html/Linux-FAQ-1.html:HTML document text
[genaro]$ file /usr/bin/less
/usr/bin/less: ELF 32-bit LSB executable, Intel 80386, version 1,dynamically linked (uses shared libs), stripped
[genaro] _

Del primer documento nos dice que es de texto, o sea, se puede volcar con “cat”, del segundo, que es html, también se puede volcar, aunque veremos el fuente en HTML, y no como lo veríamos con un navegador como el Linx. Y del tercero, nos dice que es un programa. Con este programa, podemos ver los otros dos ficheros.

El comando file, reconoce entre muchos tipos de ficheros, gif, jpeg, midi, y incluso ejecutables de otros sistemas operativos, y no se deja engañar por la extensión del fichero.

Los ficheros, además de crearlos con un editor de textos, se pueden copiar, mover, y borrar.

[genaro]$ cp /usr/bin/less .
[genaro]$ ls -l less
-rwxr-xr-x 1 genaro users 81236 Mar 21 22:54 less
[genaro]$ _

Con la órden anterior, “cp”, hemos copiado el fichero less a nuestro directorio de trabajo, y como esta copia es nuestra, el propietario del fichero es “genaro”, y el grupo propietario es “users”. Con el puntito, hemos indicado el directorio al que queremos copiar el fichero, puesto que “cp” no permite omitir el segundo parámetro y que se tome el directorio actual como destino.

Vamos a observar por un momento el programa “less” original.

[genaro]$ ls -l /usr/bin/less
-rwxr-xr-x 1 root root 81236 Aug 28 1999 /usr/bin/less

El tamaño es el mismo, pero pertenece al usuario “root”, o sea, el superusuario, y su grupo propietario es “root”, la fecha de creación también a cambiado.

Si observamos los permisos del fichero,

-rwxr-xr-x

El propietario del fichero, o sea, root, es el único que puede escribir en less (rwx), el grupo propietario sólo puede leer y ejecutar como programa (r-x), y nosotros, los demás usuarios, igual, (r-x).

El primer carácter, indica tipo de fichero:

“-” Fichero ordinario, como programas, mpeg, mp3, txt, …
“d” Directorio, se accede a el con “cd”, “ls”, etc.
“c” Fichero de control de dispositivo en modo caracter.
“b” Fichero de control de dispositivo en modo bloque.
“s” Socket de tipo Unix.
“l” Enlace simbólico.

Si observamos nuestro fichero, tiene los mismos permisos, “-rwxr-xr-x”, pero como nosotros somos el propietario del fichero, podemos escribir en el, e incluso podemos borrarlo si queremos.

TIP: el usuario “root”, también puede acceder y escribir en nuestros ficheros aunque quitemos los permisos.

[genaro]$ mkdir OtroDir
[genaro]$ cd OtroDir
[OtroDir]$ _

Creamos una carpeta nueva, y entramos en ella. Vamos a mover el fichero “less”

[OtroDir]$ mv ../less .
[OtroDir]$ ls -l
-rwxr-xr-x 1 genaro users 81236 Mar 21 22:54 less
[OtroDir]$ _

Si queremos borrarlo, usamos la órden rm

[OtroDir]$ rm less
[OtroDir]$ _

Nuestra copia de “less” ya no existe. Un poco de teoría:

¿Sabéis lo que es un inode?.

Supongamos que tenemos una partición vacía de cualquier sistema operativo tipo Unix, SCO, BSD, ext2fs …

En esa partición vacía, hay una o más zonas, en la que no podremos guardar nuestros datos, pues son para uso administrativo del sistema operativo, esa zona, se divide en partes o “cachitos”, llamados inodes, normalmente no suelen tener más de 100 octetos, aunque pueden ser de mayor tama$ntilde;o, dependiendo del sistema de ficheros.

Cuando creamos un fichero vacio, el sistema operativo, rellena de datos un inode, ¿y qué datos son esos?, el nombre del fichero, en qué sectores del disco duro están, su tamaño o longitud, la fecha de última modificación, etc.

Cuando escribimos datos en el fichero, el inode se actualiza, para reflejar los cambios.

Y ahora pregunto, ¿Qué impide que un fichero tenga dos inodes?, nada. El hecho de que un fichero tenga dos inodes, implica, el que está al mismo tiempo en dos sitios con dos nombres diferentes, o en un mismo directorio con dos nombres distintos.

Eso se llama hacer un enlace.

[genaro]$ ln /usr/bin/less ./paginador
[genaro]$ ls -l paginador
-rwxr-xr-x 2 root root 81236 Aug 28 1999 paginador
[genaro]$ ls -l /usr/bin/less
-rwxr-xr-x 2 root root 81236 Aug 28 1999 /usr/bin/less
[genaro]$ _

Fijaros en dos detalles, despues de los permisos, “-rwxr-xr-x” hay un número 2, donde antes había un “1″. Eso quiere decir, que ese número, es el número de inodes que tiene ese fichero. antes tenía un inode, y ahora uno.

¿Cual es el segundo detalle?, que el fichero “paginador” sigue perteneciendo a “root”, si no fuese así, sería un fallo de seguridad, pues para acceder a cualquier fichero, bastaría con hacer un enlace y podremos modificarlo a nuestro antojo.

Cuando usamos la orden rm para borrar un fichero, lo que hace es eliminar un inode, pero los demas inodes siguen existiendo, el fichero, bloque de datos del fichero, sólo se borra cuando no quedan más inodes.

Tick: repito, cuidado con “>”. Ver capítulo III

Es posible que al intentar hacer el enlace, aparezca un mensaje como el siguiente:

ln: no se puede crear un enlace duro de `./less’ a `/usr/bin/less’: Enlace cruzado entre dispositivos no permitido.

Eso es debido a que se está intentando hacer un enlace a un sistema de ficheros diferente. Por ejemplo:

[genaro]$ df
Filesystem 1k-blocks Used Available Use% Mounted on
/dev/hda7 606405 188388 386692 33% /
/dev/hda1 23300 2655 19442 12% /boot
/dev/hda9 1756260 820291 845204 49% /home
/dev/hda8 1554262 655666 818273 44% /usr
/dev/hda6 85520 16686 64418 21% /var
[genaro]$ _

Con la orden “df” vemos que particiones tenemos en el disco duro, nosotros estamos en el directorio “/home/genaro”, que está en la partición /dev/hda9 y la órden “less” está en el directorio “/usr/bin” que está en la partición /dev/hda8

A este tipo de enlace se le llama enlace duro. También se pueden hacer enlaces duros, aunque muchos unices no lo permiten, y en muchos sistemas operativos, sólo está permitido a “root” y está fuertemente desaconsejado, eso es debido a que muchas aplicaciones como las utilidades de backup, y todas aquellas que exploren el disco duro para hacer o buscar algo, podrían entrar en un bucle infinito, y terminarían fallando.

Otro tipo de enlaces, son los enlaces simbólicos, estos enlaces son de alguna forma similares a los accesos directos de Windows, o mejor dicho, los accesos directos de Windows son como los enlaces simbólicos de Unix.

Si haceis analizado alguna vez un acceso directo de Windows, en realidad es un fichero PIF, o sea, un fichero que contiene el nombre de otro fichero.

Los enlaces simbólicos son un fichero con el nombre de otro fichero, y tratado de forma especial por el sistema operativo para que lo trate como si fuera el fichero al que apunta.

Para crear un enlace simbólico

[genaro]$ ln -s /usr/bin/less ./pag-simbolico
[genaro]$ ls -l pag-simbolico
lrwxrwxrwx 1 genaro users 13 Mar 22 00:24 pag-simbolico->/usr/bin/less
[genaro]$ _

Observe como el fichero tiene ahora la letra “l” como primer caracter, la “l” indica enlace simbólico.

Por último nos queda por ver los dispositivos controladores. Están todos en el directorio /dev

Existen dos tipos, de caracter y de bloque. Los dispositivos de bloque, tienen soporte de buffer y se accede mediante grandes bloques de datos al mismo tiempo, un ejemplo, son las particiones del disco duro, y el propio disco duro.

/dev/hda Primer disco duro IDE
/dev/hda1 Primera partición del primer disco duro
/dev/sdb Segundo disco SCSI

Si volcaramos con la órden cat un fichero a uno de estos ficheros, escribiríamos directamente a estos ficheros, y por lo tanto, machacaríamos algo, como la tabla de particiones, o el superbloque de una partición linux, o el arranque de un Windows. Por ese motivo, sólo “root” o programas con permisos de root, puede acceder a estos ficheros.

Los ficheros de caracter, como su nombre indica, se accede a ellos caracter a caracter.

/dev/modem por ejemplo, suele ser un enlace simbólico a un dispositivo de caracter

[genaro]$ ls -l /dev/modem
lrwxrwxrwx 1 root root 10 Dec 22 01:05 /dev/modem ->/dev/ttyS1
[genaro]$ ls -l /dev/ttyS1
crw——- 1 root tty 4, 65 Mar 21 22:11 /dev/ttyS1
[genaro]$_

Los programas que acceden al modem, lo hacen como si fuera un fichero convencional, (para los que conozcan el lenguaje “C” fopen(), fread(), fwrite(), fclose(), fprintf(), etc.).

[genaro]$ tty
/dev/tty2
[genaro]$_

La órden anterior, “tty”, nos dice cual es el controlador de dispositivo de nuestra sesión. /dev/tty

Si el usuario “root” estuviera conectado mediante un telnet, podría hacer una gamberrada tal y como

[root] # echo “Tonto el que lo lea” > /dev/tty2

Y en mi pantalla aparecería ese mensaje.

Tick: En las academias, donde todo el mundo consigue por ingeniería social el password de root, es muy posible que cuando la gente se aburre, no se pueda trabajar debido a que todo el mundo envíe mensajitos usando este método.

También es común gamberradas más gordas volcando ficheros de todo tipo.

Como ejercicio de la semana, os propongo a los que tengais tarjeta de sonido y micrófono, que grabeis un fichero de sonido desde el micrófono.

cat /dev/audio > grabación.raw

Y posteriormente lo envieis a los altavoces

cat /grabacion.raw > /dev/audio

No me acuerdo como se cortaba la grabación, ¿control + “c”?

  • Share/Bookmark

La Pantalla Negra III

Sábado, 16 de Junio de 2001

#####################################
## HACKINDEX ##
## http://www.hackindex.org ##
#####################################
Titulo: La pantalla negra III
Autor: Lokutus
Tema: Linux

La información incluída en este documento es expuesta en base a un interés educativo. HackIndex no se hace responsable del uso de dicha información.

El siguiente documento es propiedad de HackIndex y de su autor, pudiendo ser distribuído de forma totalmente libre y sobre cualquier tipo de soporte siempre y cuando se respete el formato original, se cite a A.H.E. como fuente, se incluya un enlace actualizado al documento o a la web del grupo: http://www.hackindex.org ; y se incluya este disclaimer en su totalidad y sin modificación alguna.

Queda extrictamente prohibida su distribución con fines lucrativos, cuando se altere su contenido sin consentimiento o cuando se incumpla cualquier otra condicion citada anteriormente en el presente disclaimer.
#####################################

Y esta semana, con un poco de retraso, Mario bross, no, no vamos a jugar,vamos a tratar los pipes, o tuberías, y los filtros.

Linux Debian (Potatoe)
Login: genaro
password:
[genaro]$ _

Para empezar, necesitamos crear algunos ficheros con datos, para ello podemos utizar un editor de textos, hay varios, el "joe", el "vi", el "jed", y el "emacs" son cuatro de los más populares, el único del que hay garantia de que se puede encontrar en cualquier Unix es el vi, pero es un poco complejo de utilizar, así que vamos a crear un fichero a pelo.

[genaro]$ echo hola
hola
[genaro]$ _

La órden echo, envía a "salida estandar" un mensaje, ¿Y qué eso de salida estandar? Veamos, cualquier aplicación de Unix/Linux, e incluso las aplicaciones de DOS, tienen tres ficheros abiertos, que utilizan para poder funcionar.

El primer fichero es de sólo lectura y se llama "entrada estandar", representa normalmente al teclado, los programas leen a traves de este fichero todo lo que escribimos. Normalmente se conoce a este fichero como stdin.

El segundo fichero es de sólo escritura, y se llama "salida estandar", y representa la salida de nuestro programa, cuando un programa quiere escribir algo en la pantalla, lo que hace es escribir en este fichero.

El tercer fichero, se llama "error estandar", es también de sólo escritura, es similar al anterior, y se usa para imprimir mensajes de error.

He dicho, que la salida estandar representa la pantalla y la entrada estandar, representa el teclado, pero eso no tiene por que ser siempre así. Podemos cambiar la salida estandar de un programa con el operador ">"

[genaro]$ echo hola > fichero.txt
[genaro]$ _

No hemos visto la salida de echo por la pantalla, la salida ha sido redirigida al fichero "fichero.txt".

[genaro] ls
fichero.txt
[genaro] _

Si queremos ver el contenido de ese fichero usamos la orden "cat"

[genaro] cat fichero.txt
hola
[genaro] _

¿Y como podemos añadir más líneas al fichero?, vamos a intentarlo.

[genaro]$ echo linea2 > fichero.txt ; cat fichero.txt
linea2
[genaro]$ _

Recordemos que se pueden meter dos órdenes en una sóla línea si las separamos con un punto y coma.

¿Qué ha pasado?, se ha machacado el archivo y contiene lo último que hemos escrito. Para que no se sobreescriba utilizamos el símbolo ">>".

[genaro]$ echo linea1 > fichero.txt
[genaro]$ echo linea2 >> fichero.txt
[genaro]$ echo linea3 >> fichero.txt
[genaro]$ cat fichero.txt
linea1
linea2
linea3
[genaro]$ _

Cualquier cosa que envíe cosas a pantalla usando la salida estandar puede ser redirigido, por ejemplo la órden "ls", o incluso la orden "cat".

[genaro]$ cat fichero1.txt >> fichero2.txt
[genaro]$ ls
fichero1.txt fichero2.txt
[genaro]$ _

En este caso como fichero2.txt no existía, lo crea nuevo, y en este caso hemos copiado el fichero, ambos tienen el mismo contenido.

TIP 1: Cuidado con el operador ">", puede machacar documentos, pues siempre los crea nuevos.

¿Qué utilidades podemos encontrar redirigiendo la salida estandar?, veamos:

[genaro]$ ls -l /usr/bin

Salen un montón de ficheros y no dá tiempo a verlos.

[genaro]$ ls -l /usr/bin > fichero3.txt
[genaro]$ _

TIP 2: En lugar de teclear de nuevo "ls -l /usr/bin" podemos recuperar las órdenes anteriores con las flechas de cursor y editarlas a nuestra conveniencia. En este caso con pulsar la flecha arriba una vez, aparece "ls -l /usr/bin" y sólo tenemos que añadir " > fichero3.txt

Si usamos la órden cat, para visualizar fichero3.txt, estamos en las mismas, no nos da tiempo a ver nada, usaremos mejor la órden "more"

[genaro]$ more fichero3.txt

muchas lineas

–more–(12%)

Vemos como en esta ocasión. cuando se acaba la pantalla, la salida se para, si pulsamos el retorno de carro, avanzamos una línea, si pulsamos la barra espaciadora, avanzamos una página entera. Salimos del paginador "more" cuando se acaba el documento a visualizar, o bién cuando pulsamos la tecla "q". En linux hay otro paginador mejor que "more", se llama "less", permite avanzar y retroceder por el texto usando las tecla del cursor.

Vamos a probarlo un poco.

[genaro]$ cd /usr/doc/FAQ
[FAQ]$ _

¿Os acordais de los famosos FAQ y los HowTo de Linux de los que muchos hablan, pues están aqui, en este directorio, …

[FAQ]$ ls -l
drwxr-xr-x 5 root root 1024 Dec 22 01:46 ./
drwxr-xr-x 198 root root 5120 Dec 22 01:46 ../
drwxr-xr-x 2 root root 2084 Dec 22 01:46 html/
drwxr-xr-x 2 root root 1024 Dec 22 01:46 ps/
drwxr-xr-x 2 root root 1024 Dec 22 01:46 txt/
[FAQ]$ _

Vemos que hay un directorio para html, (hará falta un navegador web, como el lynx), otro para documentos que están en postscript y otro para ficheros ASCII planos. Un fichero ASCII plano, es un fichero de texto, que no tiene formato, como los que hemos creado hace poco.

[FAQ]$ cd txt
[txt] less Linux-FAQ

Para volver a nuestro directorio, usamos

[txt] cd $HOME
[genaro] _

HOME es una variable de entorno que contiene nuestro directorio de trabajo, se verán en otro capitulo.

Hasta ahora, hemos visto que podemos guardar la salida estandar de un programa en un fichero, y luego, ver cómodamente esa salida estandar con un paginador, como puede ser "less". Pero eso es un poco incómodo, pues podemos llenar el disco duro de ficheros innecesarios, ¿como podemos evitarnos ese paso? Con ayuda de una "tubería", ya era hora que comenzara a hablar de lo que trata este capítulo. Para utilizar una tubería, se utiliza el operador pipe y es este "|", la barra vertical que se consigue pulsando tecla "1" con la tecla "AltGr"

[genaro]$ ls -l /etc/bin | less

Ya podemos ver tranquilamente en la pantalla qué ficheros tenemos en el directorio /etc/bin Para hacerlo más divertido, con la órden tree, podemos obtener un listado de los directorios existentes a partir de un directorio en forma de árbol.

[genaro]$ tree -d /usr | less

Si lo usamos con la opción -a, muestra todo, incluidos los ficheros. Existen otros filtros que se pueden usar con una tubería, uno de los más conocidos es el filtro "sort", que ordena alfabéticamente la entrada estandar. Cuando redireccionamos la "salida estandar" a un fichero, si se produce un error en el programa, el mensaje de error no se imprime en el fichero, si no que se vuelca a la pantalla. Esto es debido a que los mensajes de error se imprimen usando "error estandar", "stderr". Para redireccionar el error estandar.

[genaro]$ cc programa.c -o programa 2>errores.txt

La órden cc, sirve para compilar programas que están escritos en lenguaje "C" y "C++", en el ejemplo, los errores de compilación se enviarán al fichero "errores.txt". Y por último …

[genaro]$ exit

Linux Debian (Potatoe)
Login: genaro
password:
[genaro]$ _

Hoy hemos visto:

  • - Crear ficheros con contenido.
  • - Ver ficheros.
  • - Concepto de entrada estandar, salida estandar y error estandar,
  • - Redireccionamiento de salida estandar y error estandar.
  • - Tuberías.
  • La próxima semana, o sea dentro de pocos días, me extenderé en el tema de los ficheros.

    Lokutus, asimilando la red.

    • Share/Bookmark

    La Pantalla Negra II

    Sábado, 16 de Junio de 2001

    #####################################
    ## HACKINDEX ##
    ## http://www.hackindex.org ##
    #####################################
    Titulo: La pantalla negra II
    Autor: Lokutus
    Tema: Linux

    La información incluída en este documento es expuesta en base a un interés educativo. HackIndex no se hace responsable del uso de dicha información.

    El siguiente documento es propiedad de HackIndex y de su autor, pudiendo ser distribuído de forma totalmente libre y sobre cualquier tipo de soporte siempre y cuando se respete el formato original, se cite a A.H.E. como fuente, se incluya un enlace actualizado al documento o a la web del grupo: http://www.hackindex.org ; y se incluya este disclaimer en su totalidad y sin modificación alguna.

    Queda extrictamente prohibida su distribución con fines lucrativos, cuando se altere su contenido sin consentimiento o cuando se incumpla cualquier otra condicion citada anteriormente en el presente disclaimer.
    #####################################

    Volvemos a enfrentarnos una vez más con el dragón.

    Linux Debian (Potatoe)
    Login: genaro
    password:
    [genaro]$ _

    Vamos a introducir algunas órdenes, para familiarizarnos un poco con el shell que estamos utilizando,

    [genaro]$ ls
    [genaro]$ pwd
    /home/genaro
    [genaro]$ _

    Estas órdenes ya las vimos en la primera parte, si queremos repetir en cualquier otro momento algunas de las órdenes, no hace falta teclearlas de nuevo, usando las flecha de cursor arriba, podemos repetir órdenes que ya hemos tecleado anteriormente, e incluso editarlas.

    Sigamos metiendo órdenes, crear directorios, borrarlos, crear ficheros, etc. Llegará un momento, en que el texto desaparezca por la parte superior de la pantalla. La consola, sólo tiene 80 columnas de ancho y 25 líneas de alto, para ver una línea que haya desaparecido, podemos usar la combinación de teclas "Mayúsculas + Retroceso de página" para ir arriba y "Mayúsculas + Avance de página" para ir hacia abajo. Si lo deseamos, podemos ejecutar dos o más órdenes en una misma línea separandolas con el punto y coma, ";"

    [genaro]$ mkdir directorio ; ls ; cd directorio ; pwd
    directorio
    /home/genaro/directorio
    [directorio]$ _

    A diferencia de lo que ocurre con otros sistemas operativos orientados a caracteres, casi todos los comandos básicos que acepta el shell, son externos, o sea, programas aparte, muchos de esos programas están en el directorio /bin y otros en el directorio /usr/bin Para verlos puede hacer un ls

    [directorio]$ ls /bin
    arch date grep mknod
    rmdir true ash dd
    gtar mktemp rpm umount
    ……………
    [directorio]$ _

    En cualquier momento, cuando se tenga curiosidad acerca de qué hace un programa determinado, podemos consultar la orden "man".

    [directorio]$ man ls
    ——————————————-
    LS(1) LS(1)
    NOMBRE
    ls, dir, vdir – listan los contenidos de directorios
    SINOPSIS
    ls [opciones] [fichero...]
    Opciones de POSIX: [-CFRacdilqrtu1]
    Opciones de GNU (en la forma más corta):
    [-1abcd­fgiklmnopqrstuxABCDFGLNQRSUX]
    [-w cols] [-T cols]
    [-I patrón]
    [--full-time] [--format={long,verbose,com­mas,across,vertical,single-column}]
    [--sort={none,time,size,extension}]
    [--time={atime,access,use,ctime,status}]
    [--color[={none,auto,always}]]
    [--help] [--version] [--]
    DESCRIPCIÓN
    El programa ls lista primero sus argumentos no directorios:
    ————————————————

    Con las teclas de cursor, nos desplazamos hacia arriba y abajo, para salir pulsar la tecla q. La mayoría de las órdenes aceptan parámetros, los parámetros especifican que cosas debe hacer un programa o como debe funcionar.

    [directorio]$ cd .. ; ls -l
    drwxr-xr-x 5 genaro users 1024 Jan 13 00:22 directorio
    [genaro]$ _

    TIP 3: Los parámetros en Unix se pasan con el simbolo "-", a diferencia del DOS que usa el símbolo "/".

    Con el parámetro -l, hemos dicho a ls que liste los ficheros en formato largo, un fichero por línea, dando más información sobre ese fichero. Probad a hacer:

    [genaro]$ ls -l /usr/bin
    -rwxr-xr-x 1 root root 20648 Jul 30 1999 zipsplit
    -rwxr-xr-x 1 root root 41 Mar 25 1999 zless
    -rwxr-xr-x 1 root root 1068 Mar 25 1999 zmore
    -rwxr-xr-x 1 root root 3502 Mar 25 1999 znew
    [genaro]$ _

    Veremos desplazarse los ficheros rápidamente y se perderán los primeros, este es el momento para prácticar las combinaciónes de teclas "Mays + Re Pag" y "Mays + Av Pag". Al principio de cada línea, hay una información muy rara, -rwxr-xr-x, la primera letra, indica que tipo de fichero es, si es una "d" es un directorio, y si es el caracter "-" es un fichero ordinario, o sea, un programa, un fichero de texto, un fichero de sonido, un AVI, etc. Si volvemos a hacer un ls -l, vemos que efectivamente, el fichero "directorio" que hemos creado con anterioridad, es un directorio.

    [genaro]$ ls -l
    drwxr-xr-x 5 genaro users 1024 Jan 13 00:22 directorio
    [genaro]$ _

    Vemos en la tercera columna, la palabra "genaro", o sea, dice que lo hemos creado nosotros, y como pertenecemos al grupo de trabajo "users", el fichero también pertenece al grupo "users". La siguiente columna, 1024, indica el tamaño del fichero, observa el listado de /usr/bin. luego viene la fecha y la hora, y por último el nombre del fichero. Pero volvamos a la primera columna.

    -rwxr-xr-x 1 root root 3502 Mar 25 1999 znew

    Sobre el fichero órdinario znew, hay unos permisos de lectura y escritura, vemos que el fichero, pertenece a "root" y es de un grupo de usuarios llamado "root". Quitamos el primer caracter, que nos dice que tipo de fichero es, y separamos los demás caracteres en bloques de tres.

    rwx r-x r-x

    El primer bloque, se aplica sobre el usuario propietario, en este caso "root", el segundo bloque sobre el grupo propietario, también "root" y el último bloque, a todos los demas. El propietario del fichero, "root", puede leer "r" , puede escribir en el "w", incluido el borrado, y puede ejecutarlo como programa, "x". En nuestro caso, como no somos "root" y somos de otro grupo, "users", se aplica el tercer bloque, podemos leer el fichero, y podemos ejecutarlo, pero no podemos sobrescribirlo, ni borrarlo, ni hacer ninguna modificación. Esto es una seguridad básica del sistema operativo, en una máquina en la que existan varios usuarios trabajando al mismo tiempo, ninguno podrá modificar los programas ni los ficheros para meter troyanos ni bromas. Supongamos que alguien escribiera un virus para Linux, y lo ejecutamos trabajando como "genaro", el virus tendría nuestros permisos y no podría borrar los ficheros importantes.

    [genaro]$ ls -l /etc/shadow
    -r——– 1 root root 745 Dec 22 02:01 /etc/shadow

    El fichero /etc/shadow, contiene los passwords de los usuarios, y sólo lo puede leer el usuario "root". Otro parámetro de ls, es el parámetro -a, con -a listamos también los ficheros ocultos

    [genaro]$ ls -a . .gftp
    .twmX8Fmri .. .gimp
    .user.rdb Directorio
    [genaro]$_

    Hay más ficheros ocultos, pero se han omitido por comodidad, los ficheros ocultos en Unix son los que empiezan con un punto, normalmente suelen ser ficheros de configuración. De esos ficheros, hay dos, el fichero "." y el fichero ".." que son directorios, "." es el directorio en el que estamos y ".." es el nivel superior, o directorio padre.

    TIP 4: Cuando usamos más de un parámetro, normalmente se pueden agrupar con un único simbolo "-"

    [genaro]$ ls -alF

    Siguiendo con el tema de los parámetros, el shell del sistema operativo, no mete a los programas los parámetros tal y como nosotros se los damos, tiene que mirar si existen unos caracteres especiales llamados metacaracteres. Un metacaracter, es el símbolo "*", cuando pasamos un asterisco como parámetro a un programa, el sistema operativo lo sustituye por los nombres de todos los ficheros que existen en el directorio.

    [genaro]$ cd directorio
    [directorio]$ touch fichero1
    [directorio]$ touch fichero2
    [directorio]$ cd ..
    [genaro]$ mkdir dir2
    [genaro]$ touch fichero3
    [genaro]$ touch fichero4
    [genaro]$ touch fichero5
    [genaro] ls *
    fichero3 fichero4 fichero5
    directorio:
    fichero1 fichero2
    dir2:
    [genaro]$ _

    La órden ls * en nuestro caso, equivalía a "ls directorio dir2 fichero3 fichero4 fichero5". El caracter asterisco, naturalmente también se puede usar como comodín de varios caracteres.

    [genaro]$ ls *.txt

    Otro metacaracter es el símbolo "?" que sustituye a un caracter.

    [genaro]$ ls fichero?
    fichero3 fichero4 fichero5

    Para más información se puede consultar "man bash". La semana que viene, Mario Brosh

    • Share/Bookmark