Anterior Siguiente Indice

2. Ficheros y Programas

2.1 Ficheros: Nociones preliminares

Linux tiene un sistema de ficheros ---la estructura de directorios y los ficheros que contienen--- muy similar al del DOS. Los ficheros tienen nombres que obedecen unas normas especiales, están guardados en directorios y algunos son ejecutables, y entre éstos , la mayoría tiene opciones en la línea de comandos. Incluso puede utilizar comodines, redirección y tuberías como en DOS. Sólo hay unas pocas diferencias:

Puede ahora saltar a las Sección Traduciendo, pero yo de usted seguiría leyendo.

2.2 Enlaces simbólicos

Unix tiene un tipo de fichero que no existe bajo DOS: el enlace simbólico. Puede pensar que es un puntero o enlace a un fichero o a un directorio y que puede utilizarse en lugar del fichero o del directorio al que apunta; es similar a los "Accesos Directos" de Windows 95. Ejemplos de enlaces simbólicos son /usr/X11, que apunta a /usr/X11R6; /dev/modem, que apunta a /dev/cua0 o a /dev/cua1, según donde esté el módem.

Para crear un enlace simbólico:

$ ln -s <fichero_o_directorio> <nombre_del_enlace>

Ejemplo:

$ ln -s /usr/doc/g77/DOC g77manual.txt

Ahora puede referirse a g77manual.txt en lugar de /usr/doc/g77/DOC.

2.3 Permisos y Propiedades

Los ficheros y directorios de DOS tienen los siguientes atributos: A (fichero), H (oculto), R (sólo-lectura), y S (sistema). Sólo H y R tienen sentido bajo Linux: los ficheros ocultos comienzan con un punto, y los de sólo lectura, tienen activado el permiso "r".

Bajo Unix un fichero tiene permisos y un propietario, que pertenece a un grupo. Mire este ejemplo:

$ ls -l /bin/ls
-rwxr-xr-x  1  root  bin  27281 Aug 15 1995 /bin/ls*

El primer campo contiene los permisos del fichero /bin/ls, que pertenece a root, del grupo bin. Dejando la información restante a un lado (el libro de Matt esta ahí para ese propósito), sólo recordaré lo que significa -rwxr-xr-x (de izquierda a derecha):

- es el tipo de fichero (- = fichero normal, d = directorio, l = enlace, etc.); rwx son los permisos del propietario del fichero (leer, escribir, ejecutar); r-x son los permisos para el grupo del propietario del fichero (leer y ejecutar); (no tocaré el concepto de grupo, puede pasar sin él mientras sea un novato ;-) r-x son los permisos para todos los demás usuarios (leer, ejecutar).

A eso se debe el porqué no puede borrar el fichero /bin/ls a menos que sea root: no tiene el permiso de escritura para hacer eso. Para cambiar los permisos de un fichero, el comando es:

        
$ chmod <quienXperm> <fichero>

donde quien podría ser:

X puede ser tanto + como -, y perm puede ser:

Ejemplos:

$ chmod u+x fichero

esto habilita el permiso de ejecución para el propietario del fichero. Atajo: chmod +x fichero.

$ chmod go-wx fichero

esto quita el permiso de escritura y de ejecución para todo el mundo menos al usuario.

$ chmod ugo+rwx fichero

esto le da a todo el mundo el permiso de lectura, escritura y ejecución.

$ chmod +s fichero

esto convierte al fichero en setuid o suid, esto es, un fichero que al ejecutarse lo hace con privilegios de root.

Una manera más corta de referirse a los permisos es con números: rwxr-xr-x puede ser expresado como 755 (cada letra corresponde a un bit: --- es 0, --x es 1, -w- es 2, -wx es 3...). Parece difícil, pero con algo de práctica el concepto se domina.

root, al ser superusuario, puede cambiar los permisos de los ficheros de todo el mundo. Hay mucha más información acerca de esto: LPM.

2.4 Traduciendo comandos de DOS a Linux

A la izquierda, los comandos de DOS; a la derecha, sus correspondientes de Linux.

COPY:         cp
DEL:          rm
MOVE:         mv
REN:          mv
TYPE:         more, less, cat

Operadores de redirección y de tuberías:

< > >> |

Comodines: * ?

nul: /dev/null

prn, lpt1:  /dev/lp0 o /dev/lp1; lpr

EJEMPLOS

DOS                                     Linux
---------------------------------------------------------------------

C:\GUIDO>copy joe.txt joe.doc           $ cp joe.txt joe.doc
C:\GUIDO>copy *.* total                 $ cat * > total
C:\GUIDO>copy fractals.doc prn          $ lpr fractals.doc
C:\GUIDO>del temp                       $ rm temp
C:\GUIDO>del *.bak                      $ rm *~
C:\GUIDO>move paper.txt tmp\            $ mv paper.txt tmp/
C:\GUIDO>ren paper.txt paper.asc        $ mv paper.txt paper.asc
C:\GUIDO>print letter.txt               $ lpr letter.txt
C:\GUIDO>type letter.txt                $ more letter.txt
C:\GUIDO>type letter.txt                $ less letter.txt
       idem                             $ more *.txt *.asc
       idem                             $ cat section*.txt | less
C:\GUIDO>type letter.txt > nul          $ cat letter.txt > /dev/null
Notas:

2.5 Ejecución de programas: Multitarea y Sesiones

Para ejecutar un programa, escriba su nombre tal y como lo haría bajo DOS. Si el directorio (Sección Directorios) donde el programa está guardado está incluido en la variable de entorno PATH (Sección Inicializacion), el programa comenzará a ejecutarse. Excepción: al contrario que bajo DOS, en Linux un programa localizado en el directorio actual no se ejecutará a manos que el directorio actual (simbolizado por ``.'') esté incluido en el PATH. Para evitarlo, suponiendo que el programa se llame prog, teclee ./prog.

Éste es el aspecto típico de una línea de comandos:

$ comando -o1 -o2 ... -on par1 par2 ... parn  < input > output

donde -o1, ..., -on son las opciones del programa, par1, ..., parn son los parámetros del programa. Puede encadenar varios comandos en la línea de comandos:

$ comando1 ; comando2 ; ... ; comandoN

Esto es todo acerca de ejecutar comandos, pero es fácil ir un paso más allá. Una de las principales razones para usar Linux es que es un sistema operativo multitarea ---puede ejecutar varios programas (a partir de ahora, procesos) a la vez---. Puede lanzar procesos en segundo plano (background) y seguir trabajando inmediatamente. Más aún, Linux permite tener varias sesiones abiertas simultáneamente: es como tener muchos ordenadores en los que trabajar a la vez.

Además, el intérprete de comandos permite suspender temporalmente (parar) un proceso, mandar un proceso al segundo plano, y traer un proceso del segundo plano al primer plano. En este contexto, los procesos son denominados trabajos.

2.6 Ejecutando Programas en Ordenadores Remotos

Para ejecutar un programa en una máquina remota cuya dirección IP es remote.bigone.edu, teclee:

$ slogin remote.bigone.edu -l <login_en_maquina_remota>

Tras meter su password, arranque su programa favorito. Obviamente, debe tener una cuenta en la máquina remota.

Si tiene X11, puede incluso ejecutar una aplicación X en un ordenador remoto, mostrándolo en su pantalla de X. Supongamos remote.bigone.edu la máquina X remota y local.linux.box su máquina Linux. Para ejecutar desde local.linux.box un programa X que reside en remote.bigone.edu, haga lo siguiente:

Ahora programa comenzará en remote.bigone.edu y se mostrará en su máquina. Aunque mejor no intente esto en una línea ppp.


Anterior Siguiente Indice