Está en la página 1de 31

UNIDAD DIDCTICA

EL SHELL: COMANDOS BSICOS DE LINUX


1. INTRODUCCIN.........................................................................................................2 2. NOCIONES BSICAS.................................................................................................4 3. COMANDOS BSICOS...............................................................................................5 4. CARACTERES COMODN O WILDCARDS.............................................................7 5. RDENES RELACIONADAS CON DIRECTORIOS................................................8 6. ACCESO A UNIDADES DE DISCO: MONTAJE Y DESMONTAJE.....................11 7. RDENES RELACIONADAS CON FICHEROS.....................................................12 8. OTROS COMANDOS BSICOS..............................................................................17 8.1. Espacio ocupado en el disco: Comandos du y df..................................................17 8.2. Impresin: Comando lpr.......................................................................................17 8.3. Bsqueda de ficheros. Comando find...................................................................18 8.4. Enlaces a ficheros. Comando ln............................................................................19 8.5. Agrupacin y compresin de ficheros: Comandos tar y gzip/gunzip...................23 8.6. Cambio de modo de los ficheros: comandos chmod, chown y chgrp...................25 9. GESTIN DE USUARIOS Y GRUPOS....................................................................28 9.1. Introduccin..........................................................................................................28 9.2. Conceptos de gestin de usuarios.........................................................................28 9.3.Aadir nuevos usuarios y borrar usuarios..............................................................30 9.4. Otras rdenes para la gestin de usuarios y grupos..............................................31 10. REDIRECCIONAMIENTO Y TUBERAS..............................................................32 10.1. Introduccin........................................................................................................32 10.2. Redireccionamiento de la entrada y la salida......................................................33 10.3. Tuberas (pipes)..................................................................................................35 11. LA EDICIN DE TEXTO. EL EDITOR vi..............................................................36 11.1. Introduccin........................................................................................................36 11.2. Insertar texto.......................................................................................................36 11.3. Borrar texto.........................................................................................................37 11.4. Modificar texto...................................................................................................37 11.5. rdenes de desplazamiento................................................................................38 11.6. Cortar, copiar y pegar.........................................................................................39 11.7. Guardar y salir....................................................................................................39 11.8. Editar otros ficheros............................................................................................39 11.9. Ejecutar comandos del intrprete........................................................................40

1. INTRODUCCIN

Un intrprete de comandos es un programa que toma la entrada del usuario, por ejemplo las rdenes que teclea, y la traduce a instrucciones. Podemos compararlo con el COMMAND.COM de MS-DOS, que realiza exactamente la misma tarea. El intrprete de comandos (Shell) ser una de las interfaces con Linux, y el X Window ser otra interfaz que nos permite ejecutar rdenes usando el ratn y el teclado. Cuando accedemos al sistema entramos por defecto en el entorno grfico de X Windows, el KDE. Para pasar al modo texto (intrprete de comandos) desde el modo grfico hemos de pulsar la combinacin: <ctrl>+<alt>+<F1> o bien: <ctrl>+<alt>+<F2> o bien: <ctrl>+<alt>+<F3> o bien: <ctrl>+<alt>+<F4> o bien: <ctrl>+<alt>+<F5> o bien: <ctrl>+<alt>+<F6> Esto hace que el sistema salga del modo grfico y acceda a alguna de las seis consolas virtuales de Linux, a las cuales tambin se puede acceder cuando se arranca en modo de texto. Para volver al modo grfico hay que presionar <ctrl>+<alt>+<F7> o <ctrl>+<alt>+<F8> (Segn la sesin en modo grfico a la que deseemos regresar). La segunda forma es ms cmoda y menos radical, permitiendo acceder al shell desde el mismo entorno grfico. Para esto hay que abrir un programa llamado terminal o consola, el kconsole (en el entorno KDE), o los xterm o gnome-terminal (en GNOME). En el caso de nuestro Guadalinex, si estamos usando el entorno por defecto (GNOME), bastar con obtener el men contextual del escritorio y escoger la opcin correspondiente:

Adems de ser un intrprete interactivo de los comandos que tecleamos, el Shell es tambin un lenguaje de programacin, el cual nos permite escribir guiones que permiten juntar varias rdenes en un fichero. Similar a los ficheros batch de MS-DOS. En Unix existen varios tipos de intrpretes de comandos. Los dos ms importantes son: Sh o Bourne shell: utiliza una sintaxis similar a la usada en los primeros sistemas Unix. Csh o C shell: utiliza una sintaxis diferente a la de sh, similar al lenguaje de programacin C. En Linux tambin disponemos de varios intrpretes de comandos, con algunas diferencias respecto a los de Unix. Los ms usados son: Bash o Bourne Again Shell: es equivalente a Bourne shell, pero con muchas caractersticas avanzadas de la C shell. Cualquier guin (script) escrito para Bourne funcionar en bash. Tsch (exTended C shell): es una versin extendida del C original. Slo aparecern diferencias entre unos y otros a la hora de escribir guiones. Es decir, en lo que respecta a los comandos usuales es indiferente el tipo de intrprete de comandos usado.

2. NOCIONES BSICAS

Cuando tecleamos una orden, el intrprete de comandos sigue una serie de pasos: 1. Busca el nombre de la orden y comprueba si es una orden interna. 2. Comprueba si la orden es un alias, es decir, un nombre sustitutorio de otra orden.

3. Si no se cumple ninguno de los casos anteriores, busca el programa correspondiente y lo ejecuta. 4. Si el intrprete de comandos no puede encontrar la orden que hemos tecleado, muestra un mensaje de error. El formato general de una orden en Linux es: comando [-opciones] [argumentos] A la hora de introducir los comandos hay que tener en cuenta las siguientes caractersticas: Los comandos hay que teclearlos exactamente. Las letras maysculas y minsculas se consideran como diferentes (Case Sensitive). En su forma ms habitual (los shells de Bourne o de Korn), el sistema operativo utiliza un signo de $ como prompt para indicar que est preparado para aceptar comandos, aunque este carcter puede ser fcilmente sustituido por otro u otros elegidos por el usuario. En el caso de que el usuario acceda como administrador este signo se sustituye por #. Cuando sea necesario introducir el nombre de un fichero o directorio como argumento a un comando, Linux, permite escribir las primeras letras del mismo y realiza un autorrellenado al presionar la tecla del tabulador. Si no puede distinguir entre diversos casos rellenar hasta el punto en el que se diferencien. Por ejemplo, supongamos una carpeta con los siguientes directorios: Programas Documentos_proyecto Documentos_privados Al escribir cd Pr<tab> Linux rellenar el resto del contenido hasta escribir cd Programas. Por el contrario al escribir cd D<tab> escribir cd Documentos_

3. COMANDOS BSICOS

passwd Podemos cambiar la contrasea empleando la orden passwd. Nos pedir la contrasea anterior (current) y la nueva. Volver a pedir una segunda vez la nueva para validarla. El usuario root podr cambiar la contrasea de cualquier otro usuario. Sin embargo, los usuarios no privilegiados solamente podrn cambiar su propia clave. Sintaxis: passwd date

Muestra por pantalla el da y la hora, permitiendo, adems, el cambio de la misma. Sintaxis: date [opcion][formato] cal Muestra el calendario del mes o ao actual actual. Sintaxis: cal [mes][ao] Por ejemplo,

cal muestra el calendario del mes actual. cal 1949 muestra el calendario del ao 1949. cal 05 1945 muestra el calendario de Mayo de 1949.

who Indica qu usuarios tiene el ordenador en ese momento, en qu terminal estn y a qu hora iniciaron la sesin. Sintaxis who whoami Indica el usuario que est trabajando en la terminal actual. Sintaxis: whoami finger Presenta una informacin completa de los usuarios conectados a la red. Sintaxis: finger [-bfilpqsw][login1 login2] uname Proporciona el nombre del sistema en el que se est trabajando. Sintaxis: uname [-opciones] Como opciones principales tenemos: -a -m -r -v logname Indica el nombre del usuario conectado al sistema (el que ha hecho login). Sintaxis: logname man Todos los manuales de Linux se encuentran dentro del propio sistema operativo. Este comando permite acceder a la informacin correspondiente a la orden que se le especifique como parmetro. Sintaxis man comando indica, adems, la versin, fecha y tipo de procesador. indica, adems, el tipo de de procesador. indica, adems, la versin. indica, adems, la fecha.

Por ejemplo, man who hace aparecer por pantalla de forma paginada la ayuda correspondiente al comando who. Se puede navegar por estas pginas usando los cursores o con las tecla Intro o e del teclado. Para salir de ella, habr que pulsar q.

help A diferencia de MS-DOS, help nos proporciona informacin acerca de la versin del GNU instalada, as como de los comandos internos cargados. Sintaxis help [comando] donde comando es un comando interno. info Proporciona ayuda resumida acerca de un comando en cuestin. Sintaxis: info [comando] clear Este comando se utiliza para limpiar la pantalla. Sintaxis: clear echo Muestra por pantalla los argumentos que le pasamos. Sintaxis: echo [argumento1] [argumento2] ... [argumentoN] alias Asigna un nombre o etiqueta a la ejecucin de un comando con sus opciones. Sintaxis: alias etiqueta=orden La orden alias solamente, muestra todos los alias que hay creados. La orden unalias elimina el alias especificado.

4. CARACTERES COMODN O WILDCARDS

Una caracterstica importante de la mayora de los intrpretes de comandos en Linux es la capacidad para referirse a ms de un fichero. Una forma de hacerlo es utilizando caracteres especiales llamados comodines. Al igual que en MS-DOS, el comodn * hace referencia a cualquier carcter o cadena de caracteres en el nombre del fichero. El intrprete de comandos sustituir el asterisco por todas las combinaciones posibles provenientes de los ficheros en el directorio al cual nos estamos refiriendo. Se dice que est realizando una expansin de comodines. El carcter ? es tambin comodn, aunque solamente expande un carcter. Con ambos caracteres existe una excepcin. No afectarn a aquellos ficheros que comienzan por un punto, y que son ocultos para rdenes como ls.

Adems, podemos utilizar los corchetes para referirnos a un conjunto de caracteres o bien un rango de caracteres ASCII. Ejemplos: $ls *n* $ls * $ls tm? $ls tabla[123]a muestra todos los archivos y directorios, del directorio actual, que contienen el carcter n muestra todos los archivos y directorios del directorio actual muestra todos los archivos y directorios del directorio actual que comienzan por tm y contienen tres caracteres muestra todos los archivos y directorios del directorio actual que comienzan por tabla, seguidos del carcter 1, 2 3, y terminan en a $ls ??base[A-Z][5-9]* muestra todos los archivos y directorios del directorio actual que comienzan con dos caracteres cualesquiera, seguidos de la cadena base, a continuacin una letra mayscula, seguida de un nmero del 5 al 9 y por ltimo una cadena de caracteres (uno, varios o ninguno)

5. RDENES RELACIONADAS CON DIRECTORIOS

Directorio Personal Como se ha visto anteriormente el directorio personal es un directorio con un determinado nombre asignado a un usuario. Los directorios personales habitualmente son subdirectorios de /home (en algunos casos se utiliza mnt, u otro subdirectorio de orden inferior). Generalmente el nombre coincide con el del nombre de usuario, aunque puede no ser as, y varios usuarios pueden estar trabajando en el mismo directorio. Cada usuario de Linux puede crear una estructura en rbol de subdirectorios y archivos tan compleja como desee bajo su directorio personal pero normalmente nunca fuera de l. ls Permite mostrar el contenido de un directorio. ls Muestra los nombres de los ficheros y subdirectorios contenidos en el directorio en el que se est. Slo se obtienen los nombres de los ficheros, sin ninguna otra informacin. Sintaxis: ls [-opciones][fichero] -a Muestra todos los ficheros incluyendo algunos que ordinariamente estn ocultos para el usuario (aquellos que comienzan por un punto). Recordemos que el fichero punto . indica el directorio actual y el doble punto .. el directorio padre, que contiene, al actual. -l Esta es la opcin de lista larga: muestra toda la informacin de cada fichero incluyendo: protecciones, tamao y fecha de creacin o del ltimo cambio introducido,...

-c -t -r -R ls subdir --color ls -cr ls *.gif ls file?

Muestra ordenando por da y hora de creacin. Muestra ordenando por da y hora de modificacin. Muestra el directorio y lo ordena en orden inverso. Lista tambin subdirectorios. Muestra el contenido del subdirectorio subdir. Muestra el contenido del directorio coloreado. Muestra el directorio ordenando inversamente por fechas. Muestra todos los nombres de ficheros que acaben en .gif, por ejemplo, dib1.gif, a.gif, etc. Muestra todos los ficheros cuyos nombres empiecen por file y tengan un nombre de cinco caracteres, por ejemplo: file1, file2, filea, etc.

-l filename Muestra toda la informacin sobre el fichero filename. Las opciones anteriores pueden combinarse. Por ejemplo: El comando ls admite los caracteres de sustitucin o * y ?. Por ejemplo:

mkdir El comando mkdir (make directory) permite a cada usuario crear un nuevo subdirectorio. Sintaxis: mkdir subdirectorio donde subdirectorio es el nombre del directorio que se va a crear. rmdir Este comando borra uno o ms directorios del sistema (remove directory), siempre que estos subdirectorios estn vacos. Sintaxis: rmdir subdirectorio Por ejemplo, rmdir subdir1, donde subdir es el nombre del directorio que se va a eliminar. cd Este comando permite cambiar de directorio a partir del directorio actual de trabajo. Sintaxis: cd [directorio] Veamos algunas opciones: cd cd.. cd. cd cd / y los dos puntos. cambia al ltimo directorio en el que estuvimos antes del actual. cambia al directorio padre. nos deja donde estamos. Nos sita nuevamente en el directorio personal del usuario. cambia al directorio raz

Nota: al contrario que en MS-DOS en Linux no existe la forma cd.. sin espacio entre cd

pwd El comando pwd (print working directory) visualiza o imprime la ruta del directorio en el que nos encontramos en este momento. Este comando es uno de los pocos que no tiene opciones y se utiliza escribiendo simplemente pwd.

6. ACCESO A UNIDADES DE DISCO: MONTAJE Y DESMONTAJE

Linux a diferencia de Windows no utiliza letras ("a:", "c:", "d:", ...) para acceder a las distintas unidades de disco de un ordenador. En Linux para acceder al contenido de una unidad de disco o de un CD-ROM este tiene que haber sido previamente "montado". El montado se realiza mediante el comando mount, con lo que el contenido de la unidad se pone a disposicin del usuario en el directorio de Linux que se elija. La sintaxis de este comando es la siguiente: mount [-t tipo_de_sistema_ficheros] [dispositivo] directorio_de_montaje Por ejemplo para acceder al CD-ROM se tecleara el siguiente comando: mount -t iso9660 /dev/cdrom /mnt/cdrom donde -t iso9660 indica el tipo de sistema que usa la unidad de disco para guardar los ficheros (las ms usuales son: iso9660 en el caso de un CD-ROM, vfat en el caso de Windows, y ext2 en el caso de Linux), /dev/cdrom indica el dispositivo que se va a montar. Todos los dispositivos estn representados por un fichero del directorio /dev; por ejemplo, en el caso de un disquete ser seguramente /dev/fd0, por ltimo /mnt/cdrom es el directorio en el que se pondr a disposicin del usuario el contenido del CD-ROM. Para montar disquetes se suele utilizar el directorio /mnt/floppy (aunque esto depende de la versin de Linux que utilicemos). En el caso de nuestro Guadalinex, el comando mount admite directamente los directorios /cdrom, /cdrom1, /floppy, ... para el montaje de nuestras unidades, por lo que lo nico que habra que escribir, para montar por ejempo la disquetera, sera:

mount /floppy
Si omitimos el tipo de sistema de ficheros y/o el dispositivo, Guadalinex toma la informacin correspondiente del fichero /etc/fstab, el cual contiene informacin de los distintos sistemas de ficheros del equipo. De todas formas el usuario siempre puede crear un directorio vaco con el nombre que el elija para montar las unidades de disco que desee donde desee. Cuando el usuario haya dejado de usar ese disco deber "desmontarlo" mediante el comando umount antes de sacar el disquete o el CD-ROM. Siguiendo con el ejemplo de la disquetera en Guadalinex, debera escribir: umount /floppy En principio, para utilizar el comando mount especificando todos los parmetros hace falta ser administrador o root. Para que un usuario comn pueda utilizar disquetes, CD-ROM, etc. hay que editar el fichero /etc/fstab. Por ejemplo para que cualquier usuario pueda acceder a un disquete habr que indicar la siguiente lnea: /dev/fd0 /mnt/floppy vfat user,noauto 0 0

Tambin habr que asegurarse de que el directorio /mnt/floppy sea accesible por todos los usuarios. Una vez seguidos los pasos anteriores cualquier usuario podr "montar" un disquete escribiendo el siguiente comando: mount /mnt/floppy Al igual que antes, el usuario deber ejecutar el comando umount /mnt/floppy antes de sacar el disquete. Nota: Existen en la actualidad distribuciones (por ejemplo, SuSE Linux) que realizan este proceso de forma automtica, por lo que las unidades de disquete y CD-ROM quedan accesibles a todos los usuarios de una forma sencilla, empleando los comandos: mount /mnt/floppy umount /mnt/floppy siempre que /mnt/floppy sea la ruta adecuada.

7. RDENES RELACIONADAS CON FICHEROS

cp Copia un fichero o ficheros en otro fichero o directorio. Sintaxis: cp fichero1 [fichero2] ... [ficheroN] destino donde [ficheroX] es el fichero a copiar y [destino] es el fichero o directorio de destino. Podemos utilizar . y .. para referirnos al directorio actual y al directorio padre respectivamente. As pues, la orden cp file1 file2, hace una copia de file1 y le llama file2. Si file2 no exista, lo crea con los mismos atributos de file1. Si file2 exista antes, su contenido queda destruido y es sustituido por el de file1. El fichero file2 estar en el mismo directorio que file1. Tanto file1 como file2 indican el nombre de un archivo, que puede incluir el la ruta al mismo si alguno de ellos no se encuentra en el directorio actual. Otra posibilidad es: cp file1 file2 namedir que hace copias de file1 y file2 en el directorio namedir. mv Se utiliza para el traslado y cambio de nombre de ficheros. Sintaxis: cp fichero1 [fichero2] ... [ficheroN] destino Como vemos, este comando tiene una forma similar al anterior. El comando mv realiza la misma funcin que el cp pero adems destruye el fichero original. As, si ejecutamos la orden mv file1 file2 en definitiva se traslada el contenido de file1 a file2; a efectos del usuario lo que ha hecho es cambiar el nombre a file1, llamndole file2. De igual forma, mv file1 file2 namedir traslada uno o ms ficheros (file1, file2,...) al directorio namedir conservndoles el nombre.

10

El comando, mv namedir1 namedir2 cambia el nombre del subdirectorio namedir1 por namedir2. Hay que recalcar que el comando mv sirve as mismo para cambiar el nombre de los ficheros. rm Borrado de ficheros. Este comando elimina uno o ms ficheros de un directorio en el cual tengamos permiso de escritura. Sintaxis: rm file1 [file2] Con este comando resulta facilsimo borrar ficheros intiles, y desgraciadamente, tambin los tiles. Por eso es conveniente y casi imprescindible emplear lo opcin -i, de la forma siguiente: rm -i file1 file2 Con esta opcin, Linux pedir confirmacin para borrar cada fichero de la lista, de si realmente se desea su destruccin o no. Se recomienda usar siempre este comando con esta opcin para evitar el borrado de ficheros tiles. Por ejemplo, si se teclea, rm -i superfluo aparecer en pantalla el aviso siguiente: remove superfluo? y habr que contestar y (yes) o n (not). En este comando se pueden utilizar los caracteres comodines (* y ?), como por ejemplo, rm fich* que borrara todos los ficheros del directorio actual que comiencen por fich. El comando rm * borrar todos los ficheros del directorio actual. Otra opcin es r, que borra directorios recursivamente (borran el directorio y todo su

contenido).
file Este comando realiza una serie de comprobaciones en un fichero para tratar de clasificarlo, mostrando sus caractersticas. Sintaxis: file fichero Tras su ejecucin este comando muestra el tipo del fichero e informacin al respecto del mismo. Este comando se puede aplicar tambin a directorios. cat Visualizacin sin formato de un fichero. Este comando permite visualizar el contenido de uno o ms ficheros de forma no formateada. Tambin permite copiar uno o ms ficheros como apndice de otro ya existente. Algunas formas de utilizar este comando son las siguientes: cat filename cat file1 file2 Saca por pantalla el contenido del fichero filename. Saca por pantalla, secuencialmente y segn el orden especificado, el contenido de los ficheros indicados.

11

cat >file1

Acepta lo que se introduce por el teclado y lo almacena en file1 (se crea file1). Para terminar se emplea <ctrl>d

pr Visualizacin de ficheros con formato. Este comando, a diferencia de cat, imprime por consola el contenido de los ficheros de una manera formateada, por columnas, controlando el tamao de pgina y poniendo cabeceras al comienzo de las mismas. Est muy en relacin con el comando lp de salida por impresora. Las formas ms importantes que admite son las siguientes: pr file Produce una salida estndar de 66 lneas por pgina, con un encabezamiento de 5 lneas (2 en blanco, una de identificacin y otras 2 lneas en blanco). pr -ln file Produce una salida de n lneas por pgina (cuando el tamao de papel de impresora, por ejemplo, tiene un nmero de lneas distinto de 66) pr -p file pr -t file pr -wn file pr -d file Hace una pausa para presentar la pgina, hasta que se pulsa <return> para continuar Suprime las 5 lneas del encabezamiento y las del final de pgina. Ajusta la anchura de la lnea a n posiciones. Lista el fichero con espaciado doble. el argumento o cadena de caracteres `caracteres` se convertirn en la cabecera del listado. pr +n file Imprime el fichero a partir de la pgina n. Adems de los ejemplos anteriores, se pueden combinar varias opciones en un mismo comando, como por ejemplo en: pr -dt file. La salida de este comando es por la consola, pero puede redireccionarse a otro fichero, por ejemplo, si ejecutamos el comando: pr file1 > file2 se crea un fichero nuevo llamado file2 que es idntico a file1, pero con formato por pginas y columnas. Comandos more y less Estos comandos permiten visualizar un fichero pantalla a pantalla. El nmero de lneas por pantalla es de 23 lneas de texto y una ltima lnea de mensajes, donde aparecer la palabra more. Cuando se pulsa la barra espaciadora (el espacio en blanco), se visualizar la siguiente pantalla. Para salir de este comando (terminar la visualizacin) se pulsa <ctrl>d o q. El comando more muestra el contenido de los ficheros indicados, una pantalla cada vez. Sintaxis: more fichero1 [fichero2] ... [ficheroN] La teclas que nos permiten movernos por el fichero son: b va a la pgina anterior, barra espaciadora va a la pgina siguiente, flechas de cursor arriba y abajo, q finaliza la ejecucin de more.

pr -h `caracteres` file

12

El comando less es muy similar al anterior pero, adems, permite el desplazamiento a lo largo del texto empleando las teclas de cursores pudiendo desplazarse, adems, hacia la izquierda o la derecha. Sintaxis: less fichero1 [fichero2] ... [ficheroN] grep El comando grep localiza una palabra, clave o frase en un conjunto de directorios, indicando en cules de ellos la ha encontrado. Este comando rastrea fichero por fichero, por turno, imprimiendo aquellas lneas que contienen el conjunto de caracteres buscado. Si el conjunto de caracteres a buscar est compuesto por dos o ms palabras separadas por un espacio, se colocar el conjunto de caracteres entre apstrofes ('). Su sintaxis es la siguiente: grep [-opcion] 'conjuntocaracteres' file1 file2 file3 siendo 'conjuntocaracteres' la secuencia de caracteres a buscar, y file1, file2, y file3 los ficheros donde se debe buscar. Veamos un nuevo ejemplo: grep 'TRIANGULARIZACION MATRIZ' matrix.f scaling.f Este comando buscar TRIANGULARIZACION MATRIZ entre las lneas de los ficheros matrix.f y scaling.f. Las opciones principales del comando son: c i l n s v lo nico que se hace es escribir el nmero de las lneas que satisfacen la condicin. no se distinguen maysculas y minsculas. se escriben los nombres de los ficheros que contienen lneas buscadas. cada lnea es precedida por su nmero en el fichero. no se vuelcan los mensajes que indican que un fichero no se puede abrir. se muestran slo las lneas que no satisfacen el criterio de seleccin. lneas que comienzan por d. lneas que no comienzan por d.

A continuacin se muestra una serie de ejemplos. grep d text grep [d] text

grep -v C file1 > file2 quita las lneas de file1 que comienzan por C y lo copia en file2.

head Muestra las primeras lneas del contenido de los archivos especificados; por defecto muestra las 10 primeras lneas. Sintaxis: head [-nmero] <fichero1> <fichero2> ... <ficheroN> Por ejemplo, head -7 texto, escribe por pantalla las 7 primeras lneas del fichero texto. tail Muestra las primeras lneas del contenido de los archivos especificados; por defecto muestra las 10 primeras lneas. Sintaxis: tail [-nmero] <fichero1> <fichero2> ... <ficheroN>

13

8. OTROS COMANDOS BSICOS 8.1. Espacio ocupado en el disco: Comandos du y df

El comando du permite conocer el espacio ocupado en el disco por un determinado directorio y todos los subdirectorios que cuelgan de l. Para usarlo basta simplemente colocarse en el directorio adecuado y teclear du. Este comando da el espacio de disco utilizado en bloques. Para obtener la informacin en bytes se debe emplear el comando con la opcin h: du -h El comando df por el contrario informa del espacio usado por las particiones del sistema que se encuentren montadas.

8.2. Impresin: Comando lpr

El comando lpr se emplea para imprimir una serie de ficheros. Si se emplea sin argumentos imprime el texto que se introduzca a continuacin en la impresora por defecto. Por el contrario, lpr nombre_fichero imprime en la impresora por defecto el fichero indicado.

8.3. Bsqueda de ficheros. Comando find

Con find podemos encontrar archivos (y, por tanto, directorios) basando su bsqueda en distintas caractersticas de los mismos. Sintaxis: find [camino...] [expresin] El nmero de opciones de find es muy elevado, por lo que se aconseja acudir al manual para mayor informacin (man find). No obstante, destaquemos algunas de ellas: -mount -amin n -anewer file -atime n -cmin n -cnewer file -ctime Impide la bsqueda en subdirectorios montados con otro tipo de sistema de ficheros distinto al directorio inicial de bsqueda. El fichero fue accedido por ltima vez hace n minutos. El fichero fue accedido despus de la fecha de la ltima modificacin del fichero file. El fichero fue accedido por ltima vez hace n*24 horas. El estado del fichero cambi por ltima vez hace n minutos. El estado del fichero cambi por ltima vez despus de la ltima modificacin del fichero file. El estado del fichero cambio por ltima vez hace n*24 horas.

14

-empty -fstype tipo -gid n -group name -inum n -links n -mmin n -mtime n -name criterio -newer file -path criterio -size n -type c

El fichero (o directorio) est vaco. El fichero se encuentra en el sistema de ficheros tipo. EL GID (identificativo de grupo) del fichero es n El nombre del grupo al que pertenece el fichero es name. El fichero tiene como nmero de inodo n. El fichero tiene n enlaces. Los datos del fichero sufrieron su ltima modificacin hace n minutos. Los datos del fichero sufrieron su ltima modificacin hace n*24 horas. Busca por nombre de fichero segn criterio, el cual admite caracteres comodn. El fichero fue modificado despus que file. Busca por ruta de fichero segn criterio, el cual admite caracteres comodn Busca por tamao de fichero, el cual ser n. El fichero es del tipo c, el cual puede ser: b c d p f l s D bloque especial carcter especial. directorio nombre de tubera (FIFO) fichero normal. enlace simblico socket puerta (enlace Solaris)

-uid n -used n -used name

EL UID (identificativo de usuario) del fichero es n El fichero fue accedido por ltima vez n das despus del cambio de su estado. El nombre del usuario al que pertenece el fichero es name.

Veamos algunos ejemplos de su funcionamiento: Ejemplo 1: Buscar todos los archivos que hay en el directorio actual y en sus subdirectorios con extensin .txt find . -name "*.txt1 Ejemplo 2: Buscar los ficheros con permisos 777 $ find * -perm 7772

8.4. Enlaces a ficheros. Comando ln

Los enlaces nos van a permitir realizar copias de los ficheros con otro nombre, para poder acceder a ellos desde lugares distintos a su ubicacin original, con un ahorro de espacio muy importante con respecto al comando cp. Nuestro sistema identifica a los ficheros mediante un nmero denominado inodo, que les asigna en el momento de su creacin.
1

Las dobles comillas son necesarias para que no interprete el asterisco. el asterisco significa el camino y como queremos que se expanda, por eso no va entre comillas.

15

Es decir, un directorio lo que contiene realmente es una lista de nmeros de inodo con sus correspondientes nombres de fichero. De esta forma, cada nombre de fichero es un enlace a un inodo particular; por ello, cada inodo est asociado a un conjunto de informacin guardada en el disco, que puede tener asignados distintos nombres, y a la que podremos acceder desde distintos lugares del rbol de directorios si as lo deseamos. En este sentido, podremos crear dos tipos distintos de enlaces a ficheros: enlaces duros y enlaces simblicos. El comando ln nos servir para crear ambos tipos de enlaces. ENLACES DUROS (HARD LINKS) Si utilizamos el comando ln sin especificar ninguna opcin, por defecto crearemos un enlace duro. La sintaxis es la siguiente: ln <fichero> [nombre del enlace] ln <fichero1> <fichero2> ... <ficheroN> <nombre de directorio> Obviamente, el fichero o ficheros para los que deseamos crear un enlace duro debern existir. As mismo, si el ltimo argumento es el nombre de un directorio que existe, crearemos un enlace duro a cada fichero, dentro del directorio, y con el mismo nombre de fichero. Si solamente especificamos el fichero que queremos enlazar, y no indicamos ningn nombre para el enlace, ste se crear con el mismo nombre que el fichero a enlazar. Los cambios que realicemos en el fichero enlazado o en el enlace, se reflejarn en el resto, ya que todos tendrn el mismo nmero de inodo, y por lo tanto hacen referencia al mismo conjunto de informacin. La ventaja de utilizar enlaces duros radica en que el comando rm nicamente borrar aquel fichero que le indiquemos. La informacin solamente se borrar por completo cuando borremos todos los enlaces a un inodo. La desventaja con respecto a los enlaces simblicos es que slo permite crear enlaces dentro del mismo sistema de ficheros. Los directorios . y .. son enlaces duros al directorio actual y a su directorio padre respectivamente. Ejemplo: 1 Creamos el fichero pruebaln con la orden cat. $cat > pruebaln hola CTRL+ D 2 Creamos un enlace a pruebaln que se llame penlace. $ln pruebaln penlace 3 Veamos las caractersticas de estos ficheros con la orden ls. Utilizamos la opcin i para ver el nmero de inodo. Ambos tendrn el mismo nmero de inodo con dos enlaces. $ls i pruebaln penlace 4 Modificamos pruebaln y comprobamos si tambin se modifica penlace. 16

$cat >>pruebaln adios CTRL+ D $cat pruebaln $cat penlace 5 Modificamos penlace y comprobamos si tambin se modifica pruebaln. $cat >>penlace otra vez hola CTRL+ D $cat penlace $cat pruebaln 6 Eliminamos pruebaln y comprobamos si penlace permanece y contiene la informacin correspondiente. $rm pruebaln $cat penlace 7 Si utilizamos la orden ls i, vemos que penlace sigue con el mismo nmero de inodo, que ahora solamente tendr un enlace. ENLACES SIMBLICOS Si utilizamos la opcin s con el comando ln, es decir ln s, crearemos un enlace simblico. La sintaxis en este caso es la misma que utilizamos para crear enlaces duros. Podemos encontrar una similitud entre este tipo de enlaces y los accesos directos que estamos acostumbrados a crear con los sistemas Windows. En el caso de los enlaces simblicos, cada fichero tendr un nmero de inodo distinto. Sin embargo, al igual que con los enlaces duros, todos los cambios que se realicen en uno de los ficheros se vern reflejados en el resto. Si borramos el fichero enlazado, el enlace simblico perder toda la informacin, puesto que su inodo apunta a un nmero de inodo que ya no existe. Sin embargo, podremos crear enlaces simblicos a ficheros de otros sistemas de archivos. Ejemplo: 1 An tenemos el fichero penlace. Creamos un enlace duro a penlace que se llame pruebaln. $ln penlace pruebaln 2 Con la orden ls li vemos que ambos tienen el mismo inodo, y que este inodo tiene dos enlaces. $ls -li pruebaln penlace 3 Creamos un enlace simblico a penlace que se llame penlacesim. $ln s penlace penlacesim 4 Con la orden ls li vemos que tienen distinto nmero de inodo. Adems, el inodo de penlacesim slo tiene un enlace, y el inodo de penlace sigue teniendo dos. En la

17

lnea correspondiente a penlacesim vemos que aparece el fichero al que apunta, y la letra l (ele) al inicio. $ls -li pruebaln penlace penlacesim 5 Cambiamos penlace y comprobamos si cambia penalcesim. $cat >>penlace otra vez adios CTRL+ D $cat penlacesim 6 Por ltimo borramos penlace. Comprobamos que pruebaln permanece y que no podemos ver el contenido de penlacesim, el sistema nos dir que no existe. Para que desaparezca totalmente tenemos que borrarlo. $rm penlace $cat pruebaln $cat penlacesim $rm penlacesim $rm pruebaln

8.5. Agrupacin y compresin de ficheros: Comandos tar y gzip/gunzip

Tanto el comando tar como gzip son ampliamente empleados para la difusin de programas y ficheros en Linux. tar Este comando agrupa varios ficheros en uno solo o archivo, mientras que el segundo los comprime. En conjunto estos dos programas actan de forma muy similar a programas como Winzip. Su sintaxis es: tar [opciones][ficheros] El modo en el que se escriben las opciones de tar es un poco especial. El guin inicial, por ejemplo, no es necesario. Las opciones ms comunes para tar son: -c -x -v -t -f creacin de archivadores nuevos. extraccin de archivos de un archivador existente. muestra los archivos mientras se agregan o se extraen. muestra el contenido de un archivo tar. el siguiente argumento es el archivador a crear, del que queremos extraer archivos o mostrar un listado. Para crear un nuevo archivo se emplea: tar cvf nombre_archivo.tar fichero1 fichero2 donde fichero1, fichero2 etc. son los ficheros que se van a aadir al archivo tar. Si se desea extraer los ficheros se emplea:

18

tar xpvf nombre_archivo.tar fichero1 Veamos algunos ejemplos: # tar cvf escritorio.tar Desktop #tar xvf escritorio.tar Desktop/Floppy.desktop #tar xvf escritorio.tar #tar tvf escritorio.tar empaqueta el contenido de Desktop en un archivador nuevo escritorio.tar extrae del archivo escritorio.tar el fichero indicado extrae todo el contenido del archivo escritorio.tar muestra un listado largo del contenido del archivo escritorio.tar Hay que tener en cuenta, a la hora de extraer el contenido de un archivador (al fichero tar resultante se le suele llamar as), si el archivador se cre conservando el nombre del directorio de origen. Es posible que se sobrescriba el contenido de los ficheros originales. Ejemplo: Nos situamos en el directorio raz como root. Si archivamos los ficheros / etc/group y /etc/passwd: #tar cvf backup.tar /etc/group /etc/passwd estamos conservando los nombres del directorio al que pertenecen. Por lo tanto, para extraer estos ficheros nos tendremos que situar en el directorio raz: #cd / #tar xvf backup.tar /etc/group /etc/passwd Sin embargo, si archivamos los ficheros group y passwd estando en /etc: #tar cvf /backup.tar group passwd no guardamos la ruta, por lo que para extraer los ficheros tendremos que situarnos en ella: #cd / #cd /etc #tar xvf /backup.tar group passwd gzip/gunzip Al contrario que tar que agrupa varios ficheros en uno, gzip comprime un nico fichero con lo que la informacin se mantiene pero se reduce el tamao del mismo. El uso de gzip es muy sencillo: gzip [opciones] fichero con lo que se comprime fichero (que es borrado) y se crea un fichero con nombre fichero.gz. La opcin ms comn es: -1 a 9 -d grado de compresin, mnimo y mximo respectivamente. descomprimir el fichero .gz gzip d fichero.gz recuperando el fichero inicial.

Si lo que se desea es descomprimir un fichero se emplea entonces:

19

Otra posibilidad sera utilizar el comando gunzip para la descompresin, de la siguiente forma: gunzip fichero.gz Como se ha comentado al principio es tpico emplear tar y gzip de forma consecutiva, para obtener ficheros con extensin tar.gz o tgz que contienen varios ficheros de forma comprimida (similar a un fichero zip). El comando tar incluye la opcin z para estos ficheros de forma que para extraer los ficheros que contiene: tar zxf fichero.tar.gz

8.6. Cambio de modo de los ficheros: comandos chmod, chown y chgrp

Aunque ya lo vimos en el primer tema de Linux, recordemos en primer lugar las categoras de usuarios y los tipos de permisos. Cada usuario es dueo de su directorio personal y ser dueo tambin de los archivos que incluya en l. Un usuario en Linux podr configurar permisos en sus archivos. Por ello, distinguiremos por un lado tres categoras de usuarios, y por otro los tipos de permisos que cada uno de ellos puede tener sobre un archivo y/o directorio. Categoras de usuarios

Dueo del archivo (u). Grupo dueo (g), formado por todos los usuarios que son miembros de un grupo asociado al archivo. Resto de usuarios (o), todos los usuarios que no son ni el dueo ni miembros del grupo dueo.

Tipos de permisos

Lectura (r de Read, leer): para un archivo permite leer su contenido, para un directorio permite que se muestren los archivos que contiene. Escritura (w de Write, escribir): para un archivo permite que se modifique su contenido, para un directorio permite agregar y quitar archivos. Ejecucin (x de eXecute, ejecutar): para un archivo permite su ejecucin, para un directorio permite que el usuario lo recorra (que entre y pase por l) si no tiene permiso de lectura, aunque pueda entrar no podr ver el contenido. Cuando ejecutamos el comando ls l, podemos ver la configuracin de permisos de los

archivos: El primer carcter indica el tipo de archivo: d si es directorio, - si es un archivo regular, l si es un enlace simblico. Los siguientes nueve caracteres indican los permisos para el dueo, el grupo dueo y otros (rwxrwxrwx); si aparece un guin, indica que el permiso correspondiente no est habilitado.

20

El siguiente nmero indica el nmero de vnculos. Nombre del dueo y nombre del grupo dueo. Tamao en bytes. Fecha de la ltima modificacin. Nombre del archivo.

chmod Para cambiar los permisos de un fichero se emplea el comando chmod, que tiene el formato siguiente: chmod [quien] oper permiso files donde: quien Indica a quien afecta el permiso que se desea cambiar. Es una combinacin cualquiera de las letras u para el usuario, g para el grupo del usuario, o para los otros usuarios, y a para todos los anteriores. Si no se da el quien, el sistema supone a. oper Indica la operacin que se desea hacer con el permiso. Para dar un permiso se pondr un +, y para quitarlo se pondr un -. Si quiero dar exactamente unos permisos, pondremos =. permiso files Indica el permiso que se quiere dar o quitar. Ser una combinacin cualquiera de las letras anteriores : r,w,x,s. Nombres de los ficheros cuyos modos de acceso se quieren cambiar.

Por ejemplo, para quitar el permiso de lectura a los usuarios de un fichero llamado fichero.txt el comando a utilizar es: chmod a -r fichero.txt Los permisos de lectura, escritura y ejecucin tienen un significado diferente cuando se aplican a directorios y no a ficheros normales. En el caso de los directorios el permiso r significa la posibilidad de ver el contenido del directorio con el comando ls; el permiso w da la posibilidad de crear y borrar ficheros en ese directorio, y el permiso x autoriza a buscar y utilizar un fichero concreto. chown Por otra parte, el comando chown se emplea para cambiar de propietario (change owner) a un determinado conjunto de ficheros. Este comando slo lo puede emplear el actual propietario de los mismos. Los nombres de propietario que admite Linux son los nombres de usuario, que estn almacenados en el fichero /etc/passwd. La forma general del comando chown es la siguiente: chown newowner file1 file2 ... chgrp

21

Anlogamente, el grupo al que pertenece un fichero puede ser cambiado con el comando chgrp, que tiene una forma general similar a la de chown, chgrp newgroup file1 file2... Los grupos de usuarios estn almacenados en el fichero /etc/group.

9. GESTIN DE USUARIOS Y GRUPOS 9.1. Introduccin

Ya sabemos que Linux es un sistema multiusuario y por lo tanto distingue diferentes usuarios. Cada usuario recibe una cuenta que incluir toda la informacin necesaria (nombre de usuario, directorio inicial, etc.). Adems de las cuentas dadas a personas, existen cuentas especiales definidas por el sistema que tienen privilegios especiales. La ms importante es la cuenta raz (administrador), con el nombre de usuario root. Normalmente, los usuarios normales estn restringidos, de forma que los permisos de los ficheros en el sistema estn preparados para que no puedan borrar o modificar ficheros en directorios compartidos por todos los usuarios. Estas restricciones desaparecen para root. El usuario root puede leer, modificar o borrar cualquier fichero en el sistema, cambiar permisos y pertenencias, etc. Por lo tanto, podemos deducir que la gestin de los usuarios solamente puede realizarla el usuario root.

9.2. Conceptos de gestin de usuarios La informacin que el sistema mantiene acerca de cada usuario es la siguiente: Nombre de usuario: es un identificador nico dado a cada usuario del sistema. Es la cadena de caracteres con la que el usuario se identifica al entrar en el sistema. Se pueden utilizar letras, dgitos y los caracteres _ (guin bajo) y . (punto). Ejemplo: simmd. User ID o UID: es un nmero nico dado a cada usuario del sistema. Su nmero debe ser mayor que el del ltimo usuario creado en el sistema. Group ID o GID: nmero identifica el grupo al que pertenece el usuario. El nmero ha de ser el mismo para todos los usuarios que formen el grupo. Cada usuario puede pertenecer a uno o ms grupos definidos por el administrador del sistema. Aunque la importancia real de las relaciones de grupo es la relativa a los permisos de ficheros. Clave: el sistema almacena la contrasea del usuario encriptada. El comando passwd nos permitir asignar y cambiar las claves de los usuarios. Nombre completo: puede ser el nombre real del usuario, su nmero de telfono, su direccin, etc. Es decir, guarda informacin real sobre el sistema. Directorio inicial: es el directorio al que accede el usuario al entrar en el sistema. Cada usuario debe tener su propio directorio inicial, normalmente situado bajo /home. En principio

22

ser el nico directorio en el que el usuario podr guardar su informacin personal, programas, etc. Ejemplo: /home/simmd. Intrprete de inicio: es el intrprete de comandos que arranca para el usuario cuando se conecta al sistema. Ejemplos: /bin/bash, /bin/tcsh. El fichero que contiene toda esta informacin relativa a los usuarios es el fichero / etc/passwd. Este fichero contiene una lnea por cada usuario del sistema, y su estructura es la siguiente: nombre:clave encriptada:UID:GID:nombre completo:directorio de inicio:intrprete Ejemplo: simmd:x:501:501:simmd:/home/simmd:/bin/bash En el caso de los grupos, la informacin sobre ellos se encuentra en el fichero / etc/group. Hay varios grupos definidos en el sistema (root, bin, sys, mail, etc) que se utilizan para permisos de ficheros del sistema. Los usuarios no deben pertenecer a ninguno de estos grupos. El formato de cada lnea del fichero /etc/group es el siguiente: nombre del grupo:clave:GID:otros miembros La clave del grupo no suele utilizarse. En /etc/passwd cada usuario tiene un GID. Sin embargo, como los usuarios pueden pertenecer a otros grupos, podemos aadir su nombre de usuario en el campo otros miembros (separados unos usuarios de otros por comas) de todos aquellos grupos no definidos por el sistema a los que queremos que pertenezca. Podemos conocer a qu grupos pertenece un usuario utilizando la orden groups. (El grupo con GID 100 suele ser el grupo users). 9.3.Aadir nuevos usuarios y borrar usuarios

Podemos aadir usuarios al sistema de varias formas. La ms engorrosa de todas es hacerlo a mano. Es decir, aadimos al fichero /etc/passwd la lnea correspondiente al usuario. Seguidamente le asignamos una clave con la orden passwd y finalmente establecemos el dueo, grupo dueo y permisos para el directorio /home/usuario que deberemos crear. Adems, debemos actualizar /etc/shadow con pwconv. Sin embargo, existen varias utilidades que nos permiten crear usuarios de una forma mucho ms cmoda e intuitiva: a) Servidor Xwindow. Entorno KDE Iniciamos una sesin como root en el entorno grfico. Seleccionamos: Men K Configuracin Usuarios Crear usuarios (variar segn la distribucin) Aparecer un cuadro de dilogo con los usuarios normales que hay creados en el sistema y toda la informacin correspondiente a cada uno de ellos. Desde aqu podremos aadir, borrar y modificar usuarios y grupos. Una vez realizados los cambios oportunos debemos guardarlos, como si de un documento se tratase. 23

b) Entorno linuxconf: Desde una sesin en modo consola podemos escribir la orden linuxconf para acceder a un entorno que nos permite gestionar todo Linux, y por lo tanto la gestin de usuarios. Entramos en Users, User accounts (cuentas de usuario), y podremos ver todas las cuentas de usuario que estn definidas en el sistema. Para aadir una nueva cuenta, con el tabulador seleccionamos el botn Add. Escribiremos el Login, Full name, group, Home directory, User ID, por ejemplo un cero en Must deep # days y siete en Warm # days before expiration. Con el tabulador nos posicionamos en el botn Accept. Para salir de linuxconf pulsamos el botn Dismiss y Quit. c) Useradd/Adduser Las rdenes useradd y adduser tambin nos permiten aadir nuevas cuentas de usuario desde el modo consola. Podemos crear un usuario con las caractersticas por defecto: #useradd usuario #adduser usuario Habremos creado un usuario sin contrasea. Para habilitar su cuenta comprobamos si en el campo clave de los ficheros /etc/passwd y /etc/shadow existen signos de admiracin cerrada ( ! ), en ese caso debemos borrarlos. Posteriormente establecemos una contrasea si lo deseamos. Si queremos crear un usuario a nuestra medida utilizaremos la siguiente sintaxis:
#useradd/adduser r <nombre usuario> -p <clave> -u <UID> -g <GID> -c <informacin> -d <direct. Inicial> -s <shell>

Lo nico que nos quedar por hacer ser crear el directorio /home del usuario y establecer los permisos pertinentes. Para borrar un usuario desde el modo consola: #userdel [-r] usuario Si utilizamos la opcin r tambin eliminaremos el directorio home del usuario o directorio inicial. Una forma de deshabilitar una cuenta de usuario sin tener que borrarla es escribir ! en el campo clave del usuario en el fichero /etc/shadow o /etc/passwd.

9.4. Otras rdenes para la gestin de usuarios y grupos

chfn: permite cambiar el nombre completo del usuario: #chfn f <nuevo nombre> <usuario> groups: muestra todos los grupos a los que pertenece el usuario. groupadd: permite aadir un nuevo grupo. Sintaxis: #groupadd [-g GID] [-f] <nombre del grupo>

24

-f

obliga al sistema a informar si se producen errores (por ejemplo cuando el grupo que queremos crear ya existe).

Si no especificamos un GID, el sistema asigna el menor GID que corresponde a este grupo. groupdel: borra el grupo cuyo nombre indiquemos junto a la orden. groupmod: permite modificar el GID y el nombre del grupo. Sintaxis: #groupmod [-g <nuevo GID>] [-n <nuevo nombre>] <nombre actual> id: muestra UID y GID del usuario y los grupos a los que pertenece el usuario conectado al sistema. Sintaxis: #id #id usuario

10. REDIRECCIONAMIENTO Y TUBERAS 10.1. Introduccin

Muchos comandos de Unix toman su entrada de la ENTRADA ESTNDAR (stdin) y envan su salida a la SALIDA ESTNDAR (stdout). El intrprete de comandos configura el sistema de forma que la stdin es el teclado y la stdout la pantalla. Veamos al gunos ejemplos que ilustren esta cuestin: Ejemplo 1: Si al comando cat no le pasamos argumentos, actuar mostrando en pantalla todo lo que hayamos tecleado antes de un Intro. Para indicarle al sistema que queremos finalizar la ejecucin de cat, pulsamos la combinacin de teclas CTRL+ D. $cat hola hola CTRL+ D $ Ejemplo 2: El comando sort acta de forma parecida. Si lo ejecutamos e introducimos un conjunto de lneas desde la stdin, cuando pulsemos la combinacin CTRL+ D devolver a la stdout las mismas lneas pero de forma ordenada. $sort mndez luque rodrguez CTRL+ D luque mndez rodrguez $ fin de entradas lo que recibe de la stdin lo que devuelve a la stdout fin de cat

25

10.2. Redireccionamiento de la entrada y la salida

Al igual que en MS-DOS, podemos utilizar los caracteres > y < para redireccionar la salida y la entrada estndar respectivamente. Para redireccionar la stdout podemos utilizar:

a.

Redireccin destructiva: crea un nuevo fichero, o sobrescribe el contenido de uno que ya existe, con aquella informacin que el comando recibe de la stdin. $comando >fichero

b.

Redireccin no destructiva: crea un nuevo fichero o aade al final del contenido de uno que ya existe la informacin que el comando recibe de la stdin. $comando >>fichero

Veamos algunos ejemplos: Ejemplo 1 $cat >pruebacat hola adios CTRL+ D $cat pruebacat hola adios $cat >>pruebacat otra vez hola otra vez adios CTRL+ D $cat pruebacat hola adios otra vez hola otra vez adios $ Ejemplo 3 $cat >pruebasort 3 2 1 Ejemplo 2 $sort >pruebasort 3 2 1 CTRL+ D $cat pruebasort 1 2 CTRL+ D $cat pruebasort 3 2 1 $sort pruebasort >pruebacat $cat pruebacat 1 2 3 $sort >>pruebasort 6 5 2 CTRL+ D $cat pruebasort 1 2 3 2 5 6 $

26

3 $

Ejemplo 4 (redireccin de stdin) $cat >pruebasort 3 2 1 CTRL+ D $sort <pruebasort 1 2 3 $cat pruebasort 3 2 1 $

Para redireccionar la stdin utilizamos el carcter <. Con cat no tiene mucho sentido, ya que el resultado que se obtiene es igual al que produce sin utilizar este redireccionamiento. Con sort, mostrar en pantalla el contenido del fichero que le indiquemos de forma ordenada. (Ver el ejemplo 4 anterior).

10.3. Tuberas (pipes)

Hemos visto que el comando sort, aunque simple, acta como filtro, devolviendo a la salida lo que recibe desde la entrada de forma ordenada. Las tuberas pueden ser utilizadas para combinar comandos, de forma que la salida del primero es enviada a la entrada del segundo y as sucesivamente. De esta forma, podemos aplicar un filtro a la stdout del comando ls envindola a la stdin de sort. Lo que conseguimos es conectar una cadena de comandos en una tubera. Para crear las tuberas utilizamos el carcter | (barra vertical, carcter de canalizacin). Ejemplos: $ls /usr/bin |more $ls |sort -r $ls |sort -r |head -1 muestra el contenido de /usr/bin por pantallas. muestra un listado del directorio actual ordenado alfabticamente de mayor a menor. veremos el primer fichero de un listado del directorio actual ordenado alfabticamente de mayor a menor.

11. LA EDICIN DE TEXTO. EL EDITOR vi 11.1. Introduccin

27

En Linux existen muchos editores de texto disponibles (vi, Emacs, joe), sin embargo ser el visual editor (vi) el nico que encontraremos en cualquier sistema Unix. vi fue el primer editor de pantalla completa que existi y, aunque no es fcil de usar, es una herramienta extremadamente potente. La versin proporcionada con Mandrake es una versin mejorada de vi (vim VI iMproved). Para comenzar con vi y editar un fichero de texto emplearemos la sintaxis: $vi <nombre de fichero> En la pantalla, de 24 lneas, aparecer una columna de ~ que indican el final del fichero. En la parte inferior veremos el nombre del nuevo fichero. En un principio no podremos insertar texto, ya que vi arranca en el modo rdenes, uno de los tres posibles modos de operacin: modo rdenes, modo insercin, modo ltima lnea. En modo rdenes o modo comandos no podremos insertar texto. Nos permitir usar ciertas rdenes de edicin de ficheros o cambiar a otros modos.

Al modo de insercin, que nos permitir escribir y desplazarnos por el archivo, se accede desde el modo comando por ejemplo con la orden i. Para volver al modo comando pulsamos la tecla Esc.

El modo ltima lnea, o modo ex, proporciona ciertas rdenes extendidas a vi, como por ejemplo salir de vi guardando o sin guardar los cambios realizados en el archivo (:wq :q!). Para acceder a este modo, tecleamos : desde el modo comando. Para salir de l ejecutamos una orden o borramos todo, incluidos los dos puntos.

11.2. Insertar texto

Si estamos en modo rdenes podemos pasar al modo de insercin de varias formas:

Tecla i: para insertar texto desde la posicin en la que se encuentra el cursor. Tecla a: para insertar texto comenzando detrs de la posicin actual del cursor. Tecla A: para insertar texto comenzando al final de la lnea actual. Tecla I (i mayscula): para insertar texto comenzando al inicio de la lnea actual. Tecla o: para insertar texto debajo de la lnea actual. Tecla O: para insertar texto por encima de la lnea actual.

En la parte inferior de la pantalla aparecer la cadena INSERTindicndonos que estamos en el modo de insercin. Podremos borrar y suprimir texto, adems de movernos por el archivo con las flechas del cursor.

11.3. Borrar texto

28

Adems de las teclas de retroceso y suprimir, podemos utilizar otras rdenes para borrar desde el modo comando:

Tecla x: borra el carcter en el que se encuentra situado el cursor. Tecla X: borra el carcter que est a la izquierda del cursor. Teclas dd: borra la lnea en la que se encuentra el cursor. Tecla dw: borra la palabra en la que se encuentra el cursor. Tecla o: para insertar texto debajo de la lnea actual. Tecla O: para insertar texto por encima de la lnea actual.

11.4. Modificar texto

Desde el modo comando podemos reemplazar o sustituir parte del texto:

Tecla r: permite sustituir el carcter en el que se encuentra el cursor. Tecla R: en la parte inferior de la pantalla aparecer la cadena REPLACE--, que nos indica que podemos reemplazar el texto hasta que pulsemos la tecla Esc. Es decir, R es similar al modo de insercin, con la diferencia de que en lugar de insertar texto lo sobrescribe.

Teclas :r <fichero>: inserta en el fichero que estamos editando el contenido del fichero que indicamos. Tecla ~: cambia de maysculas a minsculas, o viceversa, el carcter en el que se encuentra el cursor (F10 cambia uno, F11 cambia tres, F12 cambia cuatro).

11.5. rdenes de desplazamiento

Adems de las flechas del cursor, podemos movernos por el documento desde el modo comando utilizando una serie de rdenes:

Tecla h: un carcter a la izquierda. Tecla j: un carcter abajo. Tecla k: un carcter arriba. Tecla l (ele minscula): un carcter a la derecha. Tecla e: al final de la palabra actual. Tecla b: al inicio de la palabra actual. Tecla w: al inicio de la palabra siguiente. Tecla 0 (cero): al inicio de la lnea actual.

29

Tecla $: al final de la lnea actual. /<cadena>: desplaza el cursor hacia delante hasta que encuentra el texto cadena. ?<cadena>: desplaza el cursor hacia atrs hasta que encuentra el texto cadena. Tecla H: va al comienzo del archivo. Tecla G: va al final del archivo. CTRL+ f: avanza una pantalla. CTRL+ b: va una pantalla hacia atrs.

Cada uno de los comandos de movimiento puede estar precedido por un nmero, de forma que tenemos la posibilidad de movernos a una palabra, lnea o carcter arbitrarios. Adems, podemos asociar rdenes de desplazamiento con otras rdenes como por ejemplo borrar. Ejemplos: 10G: va a la lnea 10 del fichero. dG: borrar todo, desde la posicin del cursor hasta el final del fichero. d$: borrar todo desde la posicin del cursor hasta el final de la lnea. 3e: mover el cursor tres palabras hacia delante. d3b: borrar tres palabras hacia atrs. d/<cadena>: borra todo desde la posicin del cursor hasta que encuentra el texto cadena. d0: borra todo hasta el inicio de la lnea actual. 11.6. Cortar, copiar y pegar

Utilizaremos las rdenes y (Yank) y d (Delete) para copiar y cortar texto respectivamente. Combinaremos estas dos rdenes con las de desplazamiento para copiar o cortar conjuntos de caracteres, lneas, palabras. Para pegar el texto que hemos copiado o cortado utilizaremos las rdenes p (para insertar el texto despus del cursor) y P (para insertar el texto antes del cursor). Ejemplos: y?<cadena>: copiar todo desde la posicin del cursor hacia atrs, hasta que encuentre el texto cadena. d15l: y$: cortar 15 caracteres desde la posicin del cursor hacia la derecha. copiar todo desde la posicin del cursor hasta el final del prrafo actual. 11.7. Guardar y salir

Para salir sin guardar los cambios escribimos :q!.

30

Para salir guardando los cambios escribimos :wq o ZZ o :x. Para guardar los cambios sin salir escribimos :w.

11.8. Editar otros ficheros

Si estamos editando un fichero con vi, podemos editar otro escribiendo :e <fichero> desde el modo comando. Para poder utilizar esta orden tendremos que indicarle a vi si queremos guardar o no los cambios del primer fichero; es decir, utilizaremos :w y luego :e, o bien :e! Directamente si no queremos guardar los cambios. Dejaremos de editar el primero y pasaremos al segundo.

11.9. Ejecutar comandos del intrprete

Podemos insertar, en el fichero que estamos editando, la salida de un comando. Para ello utilizamos la orden :r! y a continuacin el comando que queremos ejecutar. Por ejemplo, :r! ls i inserta un listado del directorio actual con nmeros de inodo al final del prrafo actual. Tambin podemos ejecutar una orden desde vi y volver al editor una vez que sta finalice. Utilizaremos la orden :!. Por ejemplo, :! ls i mostrar en pantalla el mismo listado que en el ejemplo anterior, aunque en este caso los resultados no se insertarn en el fichero. Incluso podemos dejar temporalmente vi e iniciar el intrprete de comandos para ejecutar otras rdenes. Para salir del intrprete y regresar a vi utilizamos la orden exit. Para iniciar el intrprete usamos la orden :shell. Por ejemplo, es posible que queramos consultar la pgina de manual de vi y guardarla en un fichero.

31

También podría gustarte