|
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:
- bajo DOS, los
nombres de ficheros están en el llamado
formato 8.3; por ejemplo
NOTENOUG.TXT.
Bajo Linux podemos hacerlo mejor. Si instaló
Linux usando un sistema de ficheros tal como ext2
o umsdos, puede utilizar nombres más
largos (hasta 255 caracteres), y con más de
un punto en ellos: por ejemplo, Este.es.un.nombre.de.fichero.MUY.largo.
Dése cuenta de que he utilizado tanto mayúsculas
como minúsculas: en efecto...
- Linux es
sensible a las mayúsculas y las minúsculas
en los nombres de ficheros o comandos. De
hecho,
FICHERO.tar.gz , Fichero.tar.gz
y fichero.tar.gz son tres
ficheros distintos. ls es un
comando, LS sería un error;
- no hay
extensiones obligadas como
.COM y
.EXE para los programas, o .BAT
para los ficheros de procesamiento por lotes.
Los ficheros ejecutables se marcan con un
asterisco. Por ejemplo:
$ ls -F
cindy.jpg cjpg* Soy_un_directorio/ mi_1er_script* old~
Los ficheros cjpg*
y mi_1er_script* son
"programas" ejecutables. Bajo DOS,
las copias de seguridad de los ficheros suelen
acabar en .BAK, mientras que bajo
Linux acaban con un gurruño ~. Un fichero
cuyo nombre empieza con un punto es
considerado como oculto. Ejemplo: el fichero .Soy.un.fichero.oculto
no se mostrará a un comando ls;
- Las opciones
de los programas bajo DOS se obtienen con
/opción.
En Linux se obtienen con -opción
o --opción. Ejemplo: dir
/s se convierte en ls -R.
Fíjese en que muchos programas DOS (como PKZIP
o ARJ) utilizan opciones de tipo
Unix.
Puede ahora
saltar a las Sección Traduciendo,
pero yo de usted seguiría leyendo.
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.
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:
u
usuario, que es el propietario,
g
(grupo),
o
(otros).
X
puede ser tanto + como -,
y perm puede ser:
r
(lectura),
w
(escritura)
x
(ejecución).
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.
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:
*
es más inteligente bajo Linux: *
equivale a todos los ficheros excepto los
ocultos; .* equivale a todos los
ficheros ocultos; *.* equivale sólo
a aquellos ficheros que tienen un punto en
medio del nombre, seguido de otros caracteres;
p*r equivaldría tanto a peor
como a por; *c*
equivaldría tanto a pecado como
a peca.
- cuando se usa
more,
pulse espacio para ir leyendo a través del
fichero, q o Ctrl-C para salir. less
es más intuitivo y permite utilizar las
teclas del cursor;
- no hay
UNDELETE,
así que piénselo dos veces antes de borrar
cualquier cosa;
- además de los
< > >> del DOS, Linux tiene el
operador
2> para redirigir los
mensajes de error (stderr); más aún, el
operador 2>&1 redirige
stderr a stdout (la salida estándar),
mientras que 1>&2 redirige
stdout a stderr;
- Linux tiene
otro comodín: los corchetes
[].
Usar [abc]* equivale a los
ficheros que empiezan por a, por b
o por c; *[I-N,1,2,3]
equivale a los ficheros que acaban por I,
J, K, L, M, N, 1, 2, 3;
- no hay un
RENAME
como en DOS; esto es, mv *.xxx *.yyy
no funciona;
- use
cp
-i y mv -i para ser
avisado cuando un fichero vaya a ser
sobreescrito.
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.
- Para cambiar a
la sesión 1..6:
$ Alt-F1 ... Alt-F6
- Para comenzar
una nueva sesión sin dejar la actual:
$ su - <mi_nombre_de_usuario>
Ejemplo:
$ su - root
Esto es útil,
por ejemplo, cuando se necesita montar un
disco (Sección Disquetes):
normalmente, sólo root puede
hacer eso.
- Para acabar
una sesión:
$ exit
Si hay trabajos
parados (ver más abajo), será avisado.
- Para lanzar un
proceso en primer plano:
$ nomprog [-opciones] [parametros] [< input] [> output]
- Para lanzar un
proceso en segundo plano, añada un ampersand:
&, al final de la línea de
comandos:
$ nomprog [-opciones] [parametros] [< input] [> output] &
[1] 123
el shell o intérprete
de comandos identifica el proceso con un número
de trabajo (p.e.
1
; ver más abajo), y con un PID (123 en
nuestro ejemplo).
- Para ver cuántos
procesos hay:
$ ps -a
Esto generará
una lista de procesos actualmente en ejecución.
- Para matar un
proceso:
$ kill <PID>
Puede necesitar
matar un proceso cuando no sabe cómo cerrarlo
de la manera correcta... ;-). A veces, un
proceso solo podrá ser matado con alguna de
las siguientes instrucciones:
$ kill -15 <PID>
$ kill -9 <PID>
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.
- Para ver cuántos
trabajos hay:
$ jobs
aquí los
trabajos son identificados por su número de
trabajo, no por su PID.
- Para parar un
proceso ejecutándose en primer plano (no
siempre funciona):
$ Ctrl-C
- Para suspender
un proceso ejecutándose en primer plano:
$ Ctrl-Z
- Para mandar un
proceso suspendido al segundo plano (convirtiéndolo
en trabajo):
$ bg <trabajo>
- Para traer un
trabajo al primer plano:
$ fg <trabajo>
- Para matar un
trabajo:
$ kill <%trabajo>
donde trabajo
puede ser 1, 2, 3; el % indica
que nos referimos a un número de trabajo, y
no a un PID. Usando estos comandos puede
formatear un disco, comprimir un puñado de
ficheros, compilar un programa, y descomprimir
un fichero simultáneamente, y todavía tener
la línea de comandos a su disposición. Inténtelo
con el DOS. Inténtelo con Windows, sólo para
ver la diferencia de prestaciones (siempre que
no se le cuelgue, claro).
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:
- arranque las
X, arranque un xterm o un emulador de terminal
equivalente, y entonces teclee:
$ xhost +remote.bigone.edu
$ slogin remote.bigone.edu -l <login_en_maquina_remota>
- tras meter su
password, teclee:
remote:$ DISPLAY=local.linux.box:0.0
remote:$ programa &
(en vez de DISPLAY...,
puede que tenga que escribir setenv
DISPLAY local.linux.box:0.0. Depende
del shell remoto).
Ahora programa
comenzará en remote.bigone.edu y se
mostrará en su máquina. Aunque mejor no intente
esto en una línea ppp.
|
Siguiente |
 |
|