TEMA 1

El int´rprete de comandos e

1.1.

¿Qu´ es un int´rprete de comandos? e e

Si bien manejarse en Linux es cada vez m´s f´cil, debido a la proliferaci´n de escritorios, los a a o comienzos no siempre fueron as´ de f´ciles. De hecho, puede ocurrir que nos encontremos con una ı a emergencia en el que no nos quede m´s remedio que trabajar con comandos. a Un int´rprete de comandos tiene el aspecto de una pantalla llena de letras, generalmente con e fondo negro y letras blancas1 , y que en la ultima l´ ´ ınea inferior, se suele ver lo siguiente: [cila@gulic]$ En este entorno es donde introduciremos los comandos con los que trabajaremos, y coloquialmente diremos que estamos trabajando en una consola. Estos comandos pueden ser de diferentes clases: Programas ejecutables. Scripts (guiones) del int´rprete. e Scripts (guiones) de lenguajes de script como Python, Perl, Tcl, etc. Macros del int´rprete. e Todos tienen en com´n que son ficheros: al cargar un programa en Linux, se ordena al int´rprete u e que busque el fichero con el nombre del programa y una vez encontrado, lo ejecute si el usuario tiene permisos de ejecuci´n. o Los comandos tienen el siguiente aspecto:
1 Aunque

inicialmente eran de fondo negro con letras de color naranja o verde.

1

[cila@gulic]$ fdisk [cila@gulic]$ lsmod [cila@gulic]$ ls Tambi´n funcionan con opciones: e [cila@gulic]$ fdisk -v [cila@gulic]$ ls -a -l [cila@gulic]$ ls -al Y con par´metros: a [cila@gulic]$ fdisk /dev/hda [cila@gulic]$ ls /tmp [cila@gulic]$ ls *.txt Con opciones y par´metros: a [cila@gulic]$ rpm -qpl joe-1.0.3.rpm [cila@gulic]$ gcc -o suma suma.c [cila@gulic]$ ls -al /tmp Al ser Linux un sistema multitarea y multiusuario, se aportan ventajas que se agradecen incluso en un sistema PC monousuario. Una de estas ventajas es que se puede trabajar con seis consolas virtuales, que es como si pudi´ramos trabajar con varias sesiones simult´neas, entendiendo por e a sesi´n el tiempo de trabajo desde que el usuario entra tras identificarse en el login de entrada o hasta que abandona el sistema. Lo que significa realmente que el mismo usuario puede entrar varias veces al mismo tiempo. Para alternar entre estas consolas virtuales, basta con pulsar las combinaciones de la teclas A-F1 a A-F6. NOTA: En lo sucesivo usaremos esta nomenclatura: A-F1 ⇒ Alt y F1. C-F1 ⇒ Control y F1. S-F1 ⇒ Shift y F1. Donde Shift es la tecla de las may´sculas. u

Si se quiere acceder a una consola desde un entorno gr´fico, entonces se pulsan las combinaciones a C-A-F1 a C-A-F6 2

.1./ y representa al directorio padre. mientras que el segundo es . que define su localizaci´n dentro del ´rbol de directorios./ que representa al propio directorio. o a Todos los directorios de un sistema UNIX contienen al menos dos subdirectorios. que a su vez se guardan en directorios. Este ultimo fichero tiene la ruta absoluta ´ /home/usr2/trabajo. o el propio usr2.1. 1. que es el padre de los directorios usr1 y usr2. ız cuelgan otros directorios. Directorios y nombres de ficheros Trabajar con directorios. el directorio . 1.2.1 podemos observar como del directorio ra´ / ız. como es el caso de home. En dicho esquema diferenciamos los directorios de los ficheros.txt.txt. Tambi´n pueden contener algunos ficheros.1.1: Estructura en ´rbol de directorios en sistemas UNIX a Todos los ficheros y directorios de un sistema UNIX cuelgan de un directorio principal llamado ra´ que se representa como /. su directorio padre. En el mismo esquema vemos como algunos directorios a pueden contener otros directorios.1 podemos ver una ejemplo de dicha estructura en ´rbol. En la Figura 1. im´genes. que es el padre de e dsp. como etc o home. bases de datos o informaci´n para la configuo a o raci´n del sistema) se almacena en ficheros.. como es el caso de dev. El primero es ./ dentro de /home/usr1 es /home. complementando el final del nombre de los primeros con el car´cter /. Por ejemplo. En la Figura 1. 3 . Con todas o las herramientas y programas existentes se puede acceder a estos ficheros para ver su contenido o modificarlo./ dentro de /home/usr1 es el propio /home/usr1. a Figura 1. mientras que el directorio .2. Estructura del ´rbol de directorios a Toda la informaci´n (ya sean textos. que es el padre de trabajo.1.2. es decir.

particiones y dem´s a elementos de almacenamientos son asociados a un directorio del directorio ra´ A este proceso se lo ız. D:.1 el directorio /home podr´ estar en una partici´n diferente en un disco duro distinto al ıa o que contiene a / o a /etc. Cuando entro como el usuario cila. e lo que quiera en el directorio /home/pepe. para los prop´sitos de este curso. Comandos sobre el ´rbol de directorios a Para movernos por el ´rbol de directorios emplearemos el comando cd (Change Directory) a [cila@gulic]$ cd /etc Es decir. ¿Significa eso que puede existir un usuario “dios” en Linux que puede hacer totalmente cualquier cosa en Linux? S´ ´se es el usuario root.En los sistemas UNIX todo son ficheros. ¿C´mo s´ yo en qu´ directorio me encuentro? Basta con escribir el comando pwd (Print Work o e e Directory). esto ser´ igual que escribir a cd /home/cila o cd. ¿Por qu´? Pues por la sencilla raz´n de que Linux tiene e o un sistema de permisos que concede o restringe libertades sobre los directorios y ficheros que hay en Linux. en donde tengo libertad absoluta para a hacer lo que quiera con mis ficheros y directorios ubicados ah´ Sin embargo no podr´ hacer todo ı.2. e o s´lo nos remitiremos a la cuenta de trabajo del usuario cila. en el momento de entrar me encontrar´ en e ´ el directorio /home/cila. o 1. denomina montaje. Durante el arranque del sistema. Linux “env´ al usuario a su o ıa” directorio de trabajo. en los sistemas UNIX no se reparten los directorios en funci´n de si est´n en una unidad f´ o a ısica o en otra (C:. etc. ı. Por ejemplo. [cila@gulic cila]$ pwd /home/cila/ Y la salida que obtendr´ es: e /home/cila En caso de querer listar los ficheros y subdirectorios de un directorio dado escribimos ls nombre directorio.). es decir. nos vamos al directorio /etc Si simplemente escribimos cd sin especificar el nombre del directorio. Nada en el esquema o en el trabajo con el sistema nos permite apreciar la diferencia. en la Figura 1.1 vemos el fichero /dev/dsp que suele corresponderse con la tarjeta de sonido instalada en el sistema. Sin embargo.2. A diferencia de los sistemas MS-DOS/Windows. y no s´lo es revesible sino que es completamente configurable. o Hay que destacar que cuando el usuario accede a una sesi´n. tal y como har´ ıamos en MS-DOS. no tiene sentido escribir en la consola C:.1. 4 . Solamente debemos dirigirnos al directorio asociado a esa partici´n que para MS-DOS es C:. Por tanto. cada uno los archivos representativos de los diferentes discos duros. Este ser´ mi directorio personal. Por ejemplo. Dispositivos como discos duros. en o la Figura 1. me env´ a mi propio directorio de trabajo (que es como irse ıa a casa). scanners o disqueteras se representan como archivos especiales en el directorio /dev.

txt comandos. --ignore-backups no muestra la entradas que terminan con ~ -c con -lt: ordena por ctime y muestra ctime (fecha de ´ltima modificaci´n del fichero) u o con -l: muestra ctime y ordena por nombre en cualquier otro caso: ordena por ctime -C muestra las entradas por columnas --color[=CU´NDO] A especifica si se usar´ color para distinguir los a tipos de ficheros.. --author print the author of each file -b.. [FICHERO]. -l a [cila@gulic]$ ls -a -l [cila@gulic]$ ls -al [cila@gulic]$ ls -la Obs´rvese que ambas formas de escribir los par´metros son igualmente v´lidas.[cila@gulic]$ ls /home/cila/apuntes/apuntes/ Apuntes_CILA_2001. 5 .sgml internet. --dired genera el resultado para el modo ‘dired’ de Emacs -f no ordena.sgml final. long -l. A ‘always’ o ‘auto’ -d.estado El comando ls admite par´metros tales como -a.sgml editores. o Ordena las entradas alfab´ticamente si no se especifica ninguna de las e opciones -cftuSUX ni --sort. e a a o si queremos ver que par´metros se pueden utilizar en un comando. utiliza -aU. Como anotaci´n. -A. no utiliza -lst -F. Los argumentos obligatorios para las opciones largas son tambi´n obligatorios e para las opciones cortas -a.sgml resumen_temario.sgml matematicas. O Muestra informaci´n acerca de los FICHEROs (del directorio actual por defecto). CU´NDO puede ser ‘never’. horizontal -x. commas -m.sgml sobre. --directory muestra las entradas de los directorios en lugar de sus contenidos -D..sgml recursos.sgml Apuntes_CILA_2001. --almost-all do not list implied . and . [cila@gulic]$ ls --help Modo de empleo: ls [OPCI´N]. --all do not hide entries starting with .dvi CVS/ programando. --classify a~ade un indicador (uno de */=@|) a las entradas n --format=PALABRA across -x.sgml xwindow.sgml introduccion.sgml LEEME cabecera. --escape print octal escapes for nongraphic characters --block-size=TAMA~O N utiliza bloques de TAMA~O bytes N -B.. normalmente basta con escribir a nombre comando --help..sgml presentacion.sgml compila* temario.sgml Makefile graficos.

-m -n. shell-always. -S single-column -1. -N. -R. 1K 234M 2G) --si an´logo.ej. access -u. en bloques n ordena los ficheros por tama~o n --sort=PALABRA extension -X. access.e. use -u --time=PALABRA muestra la fecha seg´n PALABRA. -I. size -S. -o -p -q. -h. verbose -l. -i. -r. -s. -H. pero no muestra el grupo --file-type a~ade un indicador (uno de /=@|) a las entradas n --hide-control-chars imprime ? en lugar de los caracteres no gr´ficos a --show-control-chars muestra los caracteres no gr´ficos tal y como a son (predeterminado a menos que el programa sea ‘ls’ y la salida sea un terminal) --quote-name encierra los nombres de las entradas entre comillas --quoting-style=PALABRA utiliza el estilo de cita PALABRA para los nombres de las entradas: literal. pero no muestra el propietario --no-group no muestra la informaci´n del grupo o --human-readable muestra los tama~os de forma legible n (p. locale. vertical -C como -l --time-style=full-iso como -l. use. shell. a no de 1024 --dereference-command-line sigue los enlaces simb´licos en la l´nea de o ı ´rdenes o --indicator-style=PALABRA a~ade un indicador con estilo PALABRA a los n nombres de las entradas: none (predeterminado). pero muestra los UIDs y GIDs num´ricos e --literal muestra los nombres literalmente (no trata p. en lugar de la u fecha de modificaci´n: o atime. utiliza o --full-time 6 . version -v status -c. -k -l -L.-g -G. file-type (-p) --inode muestra el n´mero de nodo-i de cada fichero u --ignore=PATR´N O no lista las entradas que coincidan (encajen) con PATR´N de shell O como --block-size=1K utiliza un formato de listado largo --dereference al mostrar la informaci´n de un fichero para un o enlace simb´lico. ctime ´ status. none -U. time -t. en su caso --recursive muestra los subdirectorios recursivamente --size muestra el tama~o de cada fichero. atime -u. pero utilizando potencias de 1000. time -t. c. -Q. muestra la informaci´n del o o fichero al que apunta el enlace en lugar de la del propio enlace rellena el ancho con una lista de entradas separadas por comas --numeric-uid-gid como -l. los caracteres de control de forma especial) como -l. escape --reverse invierte el orden. classify (-F).

Z. Por defecto. Para consultar con detenimiento esta ayuda. el autor recomienda usar ls --help | more. y para salir. si FORMATO es FORMATO1<nueval´nea>FORMATO2.000.000. no se emplea color para distinguir los tipos de ficheros. usaremos mkdir nombre directorio. +FORMATO FORMATO se interpreta como en ‘date’. T. FORMATO1 se ı aplica a los ficheros no recientes y FORMATO2 a los ficheros recientes -t ordena por la fecha de modificaci´n o -T. --tabsize=COLS establece los topes de tabulaci´n a cada COLS o en lugar de 8 -u con -lt: ordena por atime y muestra atime (fecha de ´ltimo acceso al fichero) u con -l: muestra atime y ordena por nombre en cualquier otro caso: ordena por atime -U no ordena. -a) y otra larga e a (--all. y que seg´n se avanza con la informaci´n. Y.org>. locale. se pulsa la barra espaciadora. Usar la opci´n --color sin el argumento opcional o CU´NDO equivale a usar --color=always. [cila@gulic]$ mkdir pepe 7 . --help). s´lo se muestran A o los c´digos de color si la salida est´ndar est´ conectada a un terminal (tty). Para crear un directorio.024. muestra las entradas en el orden del directorio -v ordena por versi´n o -w. Obs´rvese que se pueden escribir los par´metros de dos formas: una corta (-l. iso.000. posix-iso. o a a Comunicar bichos a <bug-fileutils@gnu. se pulsa la tecla u o q.048. MB 1. K 1. E.la fecha especificada como clave de ordenaci´n o si --sort=time --time-style=PALABRA muestra la fecha utilizando el estilo PALABRA: full-iso. Esto equivale a usar --color=none. --width=COLS establece el ancho de la pantalla en lugar del valor actual -x muestra las entradas por l´neas en vez de por ı columnas -X ordena alfab´ticamente por la extensi´n de la e o entrada -1 muestra un fichero por cada l´nea ı --help muestra esta ayuda y finaliza --version muestra la versi´n y finaliza o TAMA~O puede ser (o puede ser un entero seguido opcionalmente por) uno N de los siguientes: kB 1. y as´ ı en adelante para G.576. M 1. P. Con --color=auto.

2. o [cila@gulic]$ rmdir pepe [cila@gulic]$ rm -rf tmp Obs´rvese que los comandos anteriores borran los subdirectorios pepe y tmp del directorio e actual.txt. a [cila@gulic]$ mkdir /home/cila/pepe [cila@gulic]$ rmdir /home/cila/pepe 1.txt juan.txt deja de existir f´ ısicamente. que copiamos el fichero pepe. podemos crear y destruir un directorio dando su ruta completa o s´lo su nombre o si nos encontramos en el directorio que lo contiene. podemos emplear rutas absolutas para crear o borrar un directorio cualquiera del ´rbol de directorios.2.txt en juan. En caso de que haya otro usuario dentro.2.txt juan. que copiamos el fichero pepe. el sistema avisar´ con un mensaje de e a error y desistir´ todo intento de eliminaci´n.txt en juan. Como hemos comentado.1. Trabajando con ficheros Comandos sobre el ´rbol de ficheros a El comando para copiar un fichero es cp fichero origen fichero destino.txt.txt 8 . [cila@gulic]$ mv pepe. pero pepe. es decir.2.txt El comando para mover o renombrar un fichero es mv fichero origen fichero destino. En caso de querer borrar de un s´lo golpe un o directorio y todo su contenido disponemos del comando rm con las opciones -rf. a o Evidentemente. NOTA: El directorio que se quiere eliminar debe estar vac´ y no debe haber nadie trabajando en ıo ´l en ese momento. NOTA: Mucho cuidado con borrar directorios enteros sin comprobar lo que se hace.[cila@gulic]$ mkdir tmp Mientras que para eliminarlo usaremos rmdir nombre directorio. [cila@gulic]$ cp pepe. es decir. porque ´sta e es una operaci´n irreversible. 1.

Por ejemplo. Mientras que. Asimismo.3.txt o pepa. Utilizaci´n de comodines o En ocasiones el nombre de los directorios o ficheros sobre los que estamos trabajando contienen partes comunes que podemos utilizar con ayuda de comodines para facilitarnos el uso de la interfaz de comandos. [cila@gulic]$ rm pepe. a [cila@gulic]$ cp *txt* tmp/ copiar´ los ficheros que contengan la cadena txt en el nombre al directorio tmp. Sistema de permisos A la hora de trabajar con ficheros.2. es necesario entender el sistema de permisos de los ficheros y directorios. mV y MV. En caso de que deseemos borrar definitivamente un fichero podemos emplear el comando rm nombre fichero. a o a [cila@gulic]$ mv pepe?.txt juan. Si escribimos ls -l. ni que PEPE. En general el car´cter * al indicar el nombre de un fichero o directorio es sustituido por un a n´mero indeterminado de cualquier combinaci´n de caracteres. a 1. a El car´cter ? al indicar el nombre de un fichero s´lo representa a un car´cter cualquiera.txt tmp/ El ejemplo anterior mover´ archivos como pepe.txt.NOTA: El int´rprete de comandos S´ distingue en may´sculas y min´sculas.txt al directorio tmp.TXT. Esto significa que el comando mv es totalmente diferente a Mv.txt no es el mismo fichero que Pepe.2.txt 1. u o [cila@gulic]$ rm pe* borrar´ cualquier ficheros que empiecen por pe en el directorio actual.2. tanto en el caso de los e I u u comandos como en el de los ficheros y directorios. nos encontramos con la siguiente salida: [cila@gulic]$ ls -l total 468 -rw-rw-r-1 cila cila Apuntes_CILA_2001.dvi -rw-rw-r-1 cila cila Apuntes_CILA_2001. el fichero pepe.2.2.sgml 163004 oct 29 10:05 119151 oct 29 10:05 9 . etc.

txt 4662 oct 28 22:17 sobre.estado 7417 oct 27 23:10 xwindow. r. escritura y ejecuci´n unicamente para el usuario proıa o ´ pietario del fichero. o n El siguiente ser´ un fichero de lectura. ¿Y por qu´ son tres grupos? Pues porque las tres primeras letras se o e refieren al propio usuario que es el due˜o de esos ficheros. si leemos: − rw− rw− r − − u g o vemos que se trata de un fichero (-) con permisos de lectura y escritura para el usuario y el grupo al que pertenece. Despu´s nos encontramos con tres grupos de tres letras (rwx). que seg´n est´n activados (la e u e propia letra. o d rwx rwx r − x u g o 10 . el segundo grupo se refiere al grupo de n usuario que pertenece ese usuario.sgml 2816 oct 28 21:51 internet.sgml 13329 oct 29 10:05 comandos. y de lectura y ejecuci´n para el “extra˜o”.sgml 12 oct 27 23:10 final. Por n tanto. y de s´lo lectura para un “extra˜o”. -) nos concede o deniega permisos de lectura (r).w. el permiso o n de ejecuci´n es equivalente a permiso para “ejecutar” los programas que hay en el directorio. − rwx − − − − − − u g o Este ultimo ejemplo es un directorio (d) con permisos de lectura. escritura y ejecuci´n para el ´ o usuario y el grupo.sgml 1320 oct 25 13:35 resumen_temario.sgml 652 oct 28 21:56 presentacion.sgml 5247 oct 28 22:19 temario.-rw-rw-r--rw-rw-r--rwx-----drwxrwxr-x -rw-rw-r--rw-rw-r--rw-rw-r--rw-rw-r--rw-rw-r--rw-rw-r--rw-rw-r--rw-rw-r--rw-rw-r--rw-rw-r--rw-rw-r--rw-rw-r--rw-rw-r--rw-rw-r--rw-rw-r-- 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 cila cila cila cila cila cila cila cila cila cila cila cila cila cila cila cila cila cila cila cila cila cila cila cila cila cila cila cila cila cila cila cila cila cila cila cila cila cila 1617 oct 28 22:15 cabecera.sgml 34797 oct 28 21:56 programando.sgml La primera letra a la izquierda de cada l´ ınea nos indica si se trata de un fichero (“-”) o un directorio (“d”). y el tercero a los usuarios “extra˜os“ o ”ajenos” al usuario.sgml 23308 oct 28 23:05 introduccion. En el caso de directorios.sgml 47 oct 28 21:56 recursos.sgml 33 oct 29 00:32 compila* 4096 oct 28 23:20 CVS/ 17250 oct 28 12:11 editores. o escritura (w) y ejecuci´n (x).sgml 157 oct 27 23:10 graficos.sgml 402 oct 27 23:10 LEEME 2295 oct 28 22:19 Makefile 13087 oct 28 17:30 matematicas.x) o desactivados (un gui´n.

e usaremos el par´metro u. w.txt En algunos sistemas no se puede cambiar el propietario de un fichero bajo ciertas condiciones: $ ls -l hola -rw-r--r-1 miguev 108 $ chown frodo hola chown: hola: Operaci´n no permitida o 0 ago 10 20:27 hola Esto es normal en sistemas donde hay cuotas de usuario. usaremos las letras r. ahora pasa a ser de miguel. x. y el segundo es el nombre del grupo. [cila@gulic]$ chmod ug+r-x compila O quitar el permiso de ejecuci´n a todos los usuarios sin que se vean afectados los otros tipos o de permisos: [cila@gulic]$ chmod -x probar 11 . usaremos chgrp. que casualmente coincide con el nombre del usuario. ya que podr´ usarse este cambio para ocupar la cuota de otro usuario. y queremos que sea del grupo de los estudiantes. el de grupo ser´ g y el ajeno ser´ o. escritura o ejecuci´n respectivamente. usaremos los s´ ımbolos “+” y “-”: [cila@gulic]$ chmod u+rwx pepe.txt era de cila.txt si antes. El de la primera columna se refiere al usuario propietario. (de otros). De igual forma. pepe. e Si queremos que un fichero cambie de propietario. para cambiar los permisos de un fichero. u ıa Finalmente. s´lo habr´ que escribir lo siguiente: o a [cila@gulic]$ chgrp estudiantes pepe. Si pepe.txt era del grupo de los profesores. para cambiarlo de grupo. Para indicar el usuario propietario. u o Y para conceder o denegar.txt Este ejemplo sirve para dar todos los permisos al usuario. lo haremos con chmod. NOTA: Debemos tener en cuenta que jam´s podremos eliminar un fichero o retocarlo si a no tenemos permisos de escritura sobre ´l. con chown: [cila@gulic]$ chown miguel pepe. pero no o de escritura sobre el fichero compila.En el ejemplo del listado anterior vemos dos veces el nombre de “cila”. Si este mecanismo est´ activo no se permite a los usuarios cambiar el propietario de a ning´n fichero. Las cuotas son un mecanismo de limitaci´n para que los usuarios no puedan ocupar m´s de un determinado volumen (su cuota) o a en el disco. indicando a que tipo de usuario queremos asignarlos y sobre qu´ permisos. lo haremos. En el siquiente ejemplo daremos permisos de lectura y ejecuci´n al usuario y al grupo. Para indicar el tipo de a a a permiso. seg´n sean de lectura.

En caso de que no sepa darnos una respuesta por haber varias soluciones disponibles podemos pulsar nuevamente para que nos muestre una lista de las mismas. La a n ´ mayor parte se apoyan en el uso de un historial de los ultimos comandos ejecutados. Sin a a embargo. 1. a a 12 .2. 1. y la salida de error est´ndar para mostrar los mensajes de los errores a producidos durante la realizaci´n de la misma. o En general la entrada est´ndar suele estar asociada a la entrada por teclado.txt En realidad los comandos de la consola de GNU/Linux no entienden la salida por pantalla y la entrada por teclado de la misma forma que la entendemos nosotros. La interfaz de comandos nos lo indicar´ con una se˜al sonora si no hay ninguna soluci´n posible.1. a n o S-Re. La interfaz de comandos nos ayudar´ completando el nombre en la a medida de lo posible. C-l Limpiar la pantalla de la consola. Las flechas hacia la izquierda y hacia la derecha nos permiten movernos por la l´ ınea de comandos para editarla.3. a [cila@gulic]$ cat pepe. y S-Av. a En todo caso la carater´ ıstica de la interfaz de comandos que nos interesa es aquella que permite redirigir la salida est´ndar de un comando a la entrada est´ndar de otro. Linux nos proporciona mecanismos para que cualquiera de estas entrada/salidas pueda ser redirigida a un fichero. Pag. Dicho comando encadena los archivos a a especificados y los imprime por pantalla uno detr´s de otro. Teclas especiales La interfaz de comandos est´ llena de atajos de teclado dise˜ados para facilitarnos la vida. o podemos guardar la salida de un comando en un fichero para su posterior an´lisis. Comandos b´sicos para sobrevivir a A parte de los comandos para el manejo de ficheros y directorios existen algunos otros que conviene conocer puesto que simplifican notablemente nuestro quehacer diario. De la misma manera. C-r Buscar comandos en el historial. mientras que la a salida est´ndar y la salida de error est´ndar suelen estar sociadas a la salida por pantalla. utilizan la salida est´ndar para mostrar a a los resultado de su trabajo. TAB Si mientras escribimos el nombre de un comando o el de un fichero tenemos alguna duda podemos pulsar TAB. Estos son ´ algunos de los atajos m´s importantes: a Teclas del cursor Las flechas hacia arriba y hacia abajo nos permiten elegir un comando de entre los almacenados en el historial de la interfaz de comandos.3. La mayor parte de los comandos toman toda o parte de la informaci´n que necesitan para realizar su trabajo de lo que o se denomina la entrada est´ndar. De esa manera la entrada a un comando puede haber sido almacenada previamente. Nos permiten movernos por el b´ffer de pantalla de la consola para u ver texto que en condiciones normales no podemos observar puesto que el desplazamiento vertical lo ha dejado fuera de la misma.txt juan.3. Pag. Imprimir en la salida est´ndar a Uno de los comandos m´s pr´cticos y utilizados es cat.1.

txt ordenado a alfab´ticamente. las ordena. [cila@gulic]$ sort -r pepe.[cila@gulic]$ cat pepe.txt) a la entrada del comando sort. [cila@gulic]$ man bash Omitimos la informaci´n de salida ya que puede ser muy extensa e invita al lector a que lo o pruebe ´l mismo.4. En general los comandos que hemos estudiado son programas de consola como otros cualesquiera.txt 1. Pag. el contenido del fichero pepe. Muchas son las caracter´ ısticas de less. a 1. e incluso en muchos casos disponen de opciones de l´ ınea de comandos. o continuar una ya iniciada. Un comando mucho m´s potente pero con una utilidad similar a more es less. a [cila@gulic]$ ls -l | less El comando less nos permite utilizar las teclas del cursor.txt | sort [cila@gulic]$ ls -l | more En el ejemplo anterior utilizamos el metacar´cter | para redirigir la salida del comando cat a (es decir.3. y Av. Por lo tanto pueden ser llamados directamente. en el tema ?? estudiaremos este comando con m´s detenimiento. El comando gzip El comando gzip nombre fichero comprime un fichero utilizando el algoritmo Lempel-Ziv. e En cualquier caso. El comando sort toma las l´ ıneas de texto que provienen de la entrada est´ndar. Re. Tambi´n podemos iniciar una b´squeda. para avanzar y retroceder por el texto. con e u las teclas / y n respectivamente. El comando man El comando man es muy util. el ejemplo muestra por pantalla el contenido de pepe. Por lo tanto. utilizando la barra espaciadora para avanzar por el mismo. aunque nos conformaremos con saber que con h podemos consultar la ayuda del comando mientras que con q salimos del mismo. e En el mismo ejemplo redirigimos la salida de ls al comando more.txt b´squeda u 13 . [cila@gulic]$ gzip pepe. En esos casos more nos permite ver el texto pantalla a pantalla.3. ya que nos dar´ mucha informaci´n sobre la mayor´ de los ´ a o ıa comandos con los que vamos a trabajar.3. El comando more resulta muy util cuando el contenido de un fichero o la salida de un comando es lo suficientemente grande ´ como para no caber completamente en la pantalla. Pag.txt [cila@gulic]$ less pepe. y las muestra por su a salida est´ndar.

Por regla general el fichero desaparece y en su lugar se crea otro comprimido y con el mismo nombre m´s el sufijo . o [cila@gulic]$ tar -xf fichero.gz [cila@gulic]$ tar -ztf fichero. Entre esa informaci´n se encuentran las fechas de acceso y modificaci´n. .gz Debido a la incomodidad de tener que comprimir/descomprimir para poder acceder a la informaci´n son muchos los comandos que cuentan con versiones especialmente dise˜adas para manipular o n archivos comprimidos directamente. Es el caso de bzip2 y de los comandos bzless. Por ello se han creado comandos compatibles. El comando tar El comando tar permite la manipulaci´n de ficheros de archivo en formato TAR.gz. etc. bzcat. bzmore. zmore. . en cuanto a opciones de la o l´ ınea de comandos.gz pepe. Es importante destacar que. los o o permisos. pero que implementan esos otros algoritmos. .3. [cila@gulic]$ tar -zcf fichero.txt y juan. el archivo comprimido desaparece para dejar en su lugar la versi´n descomprimida. Puesto que eso resulta poco pr´ctico es habitual utilizar la opci´n -f seguida del a a o nombre del fichero de destino. el grupo.gz 14 .txt juan. o [cila@gulic]$ gzip -d pepe. con gzip. zgrep.tar [cila@gulic]$ tar -zxf fichero. En general el archivo TAR resultante se vuelca a la salida est´ndar. En la actualidad no es sino una forma de empaquetar en un unico archivo ´ pedazos concretos del ´rbol de directorios de nuestro sistema. Dichos ficheros o est´n dise˜ados para almacenar uno o m´s ficheros y/o directorios y toda la informaci´n relacionada a n a o con los mismos. mientras que para verificar o la integridad del archivo sin tener que desempaquetarlo se utiliza la opci´n -t. El origen del comando tar se remonta al uso de dipositivos sencuenciales (como por ejemplo cintas magn´ticas) para almacenar copias de seguridad de los e archivos del sistema. a La descompresi´n se realiza utilizando la opci´n -d.tar. Por ello es habitual utilizar a las opciones -z o -j para que tar pase el fichero por gzip o bzip2 respectivamente. al igual que o o antes. etc. Es el caso de zless. 1.txt /bin Para recuperar los ficheros originales se sustituye la opci´n -c por -x.tar.txt /bin En el ejemplo anterior fichero. Pese a lo extendido del uso de gzip en la actualidad hay muchos otros algoritmos con ratios de compresi´n mayores.tar pepe. [cila@gulic]$ tar -cf fichero. cuando termine de empaquetar los ficheros.tar. el propietario.txt. .txt como el contenido del directorio /bin. a Para crear un archivo TAR basta con que utilicemos la opci´n -c seguida por la lista de ficheros o y/o directorios que queremos empaquetar.5. etc. Los datos almacenados en los ficheros TAR no est´n comprimidos. bzgrep.tar almacena tanto los ficheros pepe. zcat.

o Puede parecer una tonter´ pero si una persona entra en dos sesiones. regenerando la a pantalla. Puesto que alguno de los caracteres de u la cadena de texto a buscar pueden tener alg´n significado especial para la interfaz de comandos u dicha cadena suele ir entrecomillada.7. o 15 . En general grep es sensible a may´sculas y min´sculas. si no se sabe qui´n es en ese momento. Otros comandos clear Limpia la pantalla de la consola (tecla C-l) locate Es la orden de b´squeda m´s r´pida y sencilla para localizar un archivo. Es decir. en una como root y en ıa. Dicho comando requiere que se especifique la cadena de texto a buscar seguida del nombre de los ficheros en los que realizar la b´squeda. dentro de nuestra cadena de texto podemos utilizar caracteres con un significado especial con los que podemos buscar casi cualquier tipo de expresi´n entre nuestros archivos. que indica que e este comando es capaz de informarnos del nombre de usuario con que se entr´ en esa consola.6. Puesto que las expresiones regulares se o salen completamente del alcance de este tema recomendamos consultar el tema correspondiente.1.txt Como se puede observar. El comandos grep nos permite utilizar expresiones regulares. top Muestra los procesos que se ejecutan en el momento actual. otra como usuario normal. Tambi´n podemos pedir que nos indique d´nde NO o e o est´ la cadena indicada utilizando la opci´n -v. Con esto forzamos unos valores por defecto. Si queremos eliminar dicho comporu u tamiento podemos emplear la opci´n -i. en el primer ejemplo estamos buscando la cadena de texto ’cila’ dentro de todos los ficheros del directorio actual. informando de los recursos que se est´n consumiendo.3. [cila@gulic]$ grep ’cila’ * [cila@gulic]$ grep ’CaSa’ pepe. podr´ ocurrir accidentes e ıan catastr´ficos. puede ser a que alguna aplicaci´n en modo texto haya finalizado bruscamente no restaurando los valores o est´ndar de la consola al salir. Por otro lado las b´squedas pueden extenderse a o u por directorios y subdirectorios utilizando la opci´n -r. a whoami El curioso nombre de este comando proviene Who am I? (¿Qui´n soy?). u a a reset Si observamos que escribimos en pantalla y no aparece el texto pero al pulsar Enter realmente se est´ escribiendo. o En realidad grep no s´lo nos permite utilizar simples cadenas para buscar dentro de los ficheros o indicados. o que los colores o los textos de la consola se corrompen.3. El comando grep Cuando deseamos localizar un cadena de texto dentro de uno o varios ficheros solemos recurrir al comando grep. [cila@gulic]$ man grep 1.

lo cual no le har´ gracia a a nadie. el directorio en el que lo queremos montar. a aunque se puede cambiar a voluntad (si somos root). el administrador (root) suele indicar todos o estos par´metros en el fichero fichero. En nuestro caso el se˜or root ha determinado que los usuarios s´lo podemos montar n o la disquetera en el directorio /floppy. Para montar un disco utilizamos el comando mount indic´ndole como par´metros el dispositivo a a al que queremos acceder. Pobre de quien saque el disquete sin desmontarlo. y los usuarios tienen que conformarse montar lo que root a les permita. ¿Por qu´? Pues por tres razones: e 1. Sin embargo. al menos hasta que se reinicie el ordenador o u a el root tenga tiempo para forzar el que la unidad sea desmontanda. 2. root puede mosquearse con quien lo haga.1. Para desmontar el disquete simplemente utilizamos el sencillo comando umount: $ umount /floppy Como ultimo ejemplo. Existe el riesgo de que perdamos la informaci´n que hayamos grabado en el disquete. al CD-ROM el directorio /cdrom o a la grabadora de CDs el directorio /grabata. Unidades de disco Como hemos dicho anteriormente. en Linux no existen las unidades como A: o C:. root. . [cila@gulic]$ mount /dev/fd0 /floppy mount: only root can do that [cila@gulic]$ mount /floppy Una vez montado el disquete en el directorio /floppy ya podemos acceder y manipular sus ficheros y subdirectorios como m´s nos convenga. Desde la perspectiva del usuario no hay ninguna a diferencia entre trabajar en ese directorio y trabajar en otro cualquiera. Por ejemplo. o Ning´n otro usuario podr´ usar la disquetera. El Sr. Normalmente los directorios para la disquetera y el lector de CD-ROM est´n ya asignados desde el momento de instalar el sistema. hagamos lo siguiente: ´ $ mount /floppy $ cd /floppy $ umount /floppy 16 3.4. podemos asignar a la disquetera el directorio /floppy. y el sistema de archivos utilizado para ordenar la informaci´n. y a nadie le conviene tener mosqueado al Sr. esto es asignarle un lugar dentro del ´rbol de directorios a del sistema. Para acceder a un disco es necesario primero montarlo.

y el disquete /dev/fd0 est´ montado en el directorio /floppy.5.5. Por ejemplo. hasta nuestro directorio de trabajo actual. el siguiente comando copia el archivo TEST1. o [cila@gulic]$ df -h Filesystem /dev/hda2 euler:/home euler:/usr/soft /dev/fd0 Size 1. por lo que recomendamos utilizar / con el fin de evitar problemas. Unidades de disco con mtools En general.7G 0% /usr/soft 758k 665k 53% /floppy Aqu´ vemos que la segunda partici´n del primer disco duro /dev/hda2 est´ montada en el diı o a rectorio /.9G 1. la mayor parte de los disquetes que usamos est´n en formato DOS/Windows.4M 3. 1. a como el CD-ROM. Los nombres de directorio pueden emplear como separador / o \.conf sea correcto). Por tanto. con el nombre de archivo test2.4M Used Avail Use% Mounted on 1. Recordemos que estamos en un sistema multiusuario y puede ocurrir que m´s de una persona acceda a la disquetera o a otro dispositivo desmontable.1. a Cuando disponemos de uno esos disquetes podemos acceder a su contenido de forma sencilla con las mtools. mtools es suficiente para dar acceso a sistemas de archivos DOS/Windows. con mtools se puede cambiar de disquete sin tener que desmontar y montar. a que nos informa sobre los sistemas de ficheros que est´n montados y su estado de almacenamiento. los directorios /home y /usr/soft del servidor euler est´n montados en sus equivalente a locales. Las rutas de ficheros en el sistema de archivos DOS/Windows se componen de: una letra de dispositivo seguida de dos puntos.txt.9G 20G 3. hemos de asegurarnos que no hay nadie.8G 80M 96% / 3. Gracias a todo ello. Nombres de ficheros Muchas de las herramientas de mtools requieren que se especifiquen nombres de archivo en el sistema de archivos DOS/Windows al que estamos accediendo. Para comprobar en un momento dado si el disquete est´ montado podemos usar el comando df.¿Verdad que no funciona? Esto se debe a que en el momento de desmontar la disketera.2G 16G 17% /home 5. 17 . a La opci´n -h nos muestra las cantidades en cifras humanas. mtools es una colecci´n de herramientas de dominio p´blico que permite a sistemas UNIX o u manipular ficheros en un sistema de archivos DOS/Windows (t´ ıpicamente un disquete). Los nombres de ficheros que no van precedidos de una letra de dispositivo se consideran ficheros del sistema UNIX.TXT desde el directorio TEST del primer dispositivo de disquete (A:). ´rdenes como o mdir a: funcionan en el disquete A: sin ning´n montaje preliminar ni otro procedimiento de inicio u (suponiendo que el /etc/mtools. no debe haber NADIE dentro de ese directorio. El uso del separador \ requiere que los nombres se entrecomillen para protegerlos. un subdirectorio y un nombre de fichero. Por ejemplo. a 1.

u la unidad B: es la segunda unidad de disquete.TXT tal y como lo hicimos anteriormente (p´gina 17). a A diferencia de los sistemas DOS/Windows.2.5.TXT’ test2. Lista de comandos A continuaci´n presentamos algunos de los comandos m´s utilizados de las mtools. mattrib Se emplea para cambiar los atributos de ficheros DOS/Windows de forma semejante a como lo hace el comando ATTRIB del MS-DOS. 1.5. com´nmente la unidad A: es la primera unidad de disquete. o a 1. Por ejemplo.TXT test2. 18 .txt que es completamente equivalente a: $ mcopy a:/TEST/TEST1.1. Sin embargo. mcd informa de la unidad y directorio de trabajo actuales.2.conf. En cuanto a las letras de dispositivo. $ mcd <directorio_dos> Sin argumentos.5. con mtools s´lo hay un directorio de trabajo actual o para todas las unidades.2. y no un directorio de trabajo diferente para cada unidad.2. la unidad J: es una unidad Jaz y la unidad Z: es una unidad Zip. mcd El comando mcd se emplea para cambiar el directorio de trabajo actual de mtools en los discos DOS/Windows.$ mcopy ’a:\TEST\TEST1. si permiten la utilizaci´n de comodines (como * o ?) tanto o cuando especificamos un nombre de archivo Linux.TXT test2. mcd cambia la unidad en curso y el directorio de trabajo relativos a un sistema de archivos DOS/Windows.txt Como es obvio las mtools no distinguen entre may´sculas y min´sculas en el acceso al sistema de u u archivos DOS/Windows.txt Copiar´ ıamos el archivo TEST1. como cuando hacemos lo mismo con nombres de archivo DOS/Windows. Sin embargo todo esto puede configurarse mediante el fichero de configuraci´n o /etc/mtools. si ejecutamos la siguiente secuencia de comandos: $ mcd a:/TEST $ mcopy a:TEST1. De otra forma. 1.

o no.2. La presencia. se supone como destino el directorio actual o a de trabajo en el sistema Linux. 1. mdel El comando mdel se emplea para borrar ficheros.5.3.5.6. $ mdir <directorio_dos> Por ejemplo: 19 . mdeltree El comando mdeltree se utiliza para borrar un directorio DOS/Windows y todos sus archivos y subdirectorios.4. Fuente y destino pueden ser ficheros de DOS o de Linux. Las formas de uso son: $ mcopy fichero_fuente fichero_destino $ mcopy fichero_fuente <fichero_fuente> directorio_destino $ mcopy fichero_fuente_dos El comando copia el fichero fuente al fichero destino.5.2.5. $ mdel fichero_dos Por ejemplo: $ mdel a:/TEST2.5.2. o copia m´ltiples ficheros al direcu torio de destino indicado.1. mdir El comando mdir se emplea para mostrar el contenido de un directorio DOS/Windows. del indicador de letra del dispositivo es el que determina qu´ ficheros son de DOS y cu´les e a de Linux. $ mdeltree directorio_dos 1.TXT 1. mcopy El comando mcopy permite copiar ficheros desde o hacia sistemas de archivos DOS/Windows.2. Si s´lo se suministra uno de los par´metros fuente.

mformat El comando mformat se utiliza para crear un sistema de archivos DOS/Windows vacio en la unidad indicada.$ mdir a: Volume in drive A has no label Volume Serial Number is 3E48-13E9 Directory for A:/ TRABAJO TXT 13838 11-01-1993 3:11 PROGRA~1 EXE 268232 12-14-2002 22:15 programinstall.7. mrd El comando mrd se emplea para borrar un directorio de un sistema de archivos DOS/Windows.exe TEST <DIR> 12-14-2002 22:13 3 files 282 070 bytes 1 174 528 bytes free 1.2. a $ mmd directorio_dos 1. Las formas de uso son: $ mmove fichero_fuente fichero_destino $ mmove fichero_fuente <fichero_fuente> directorio_destino $ mmove directorio_fuente directorio_destino 1.9. mmove El comando mmove se utiliza para mover o renombra un fichero o subdirectorio existente en un sistema de archivos DOS/Windows.5.2. $ mformat <unidad:> 1. El comando informar´ de un error si el directorio ya existe.5. El comando volver´ con un error si el directorio no existe o no est´ vac´ a a ıo.8.2. mmd El comando mmd se emplea para crear un nuevo directorio en un sistema de archivos DOS.5.2. $ mrd directorio_dos 20 .10.5.

mtype El comando mtype muestra el fichero DOS/Windows especificado.11.1.5. en la pantalla o en la salida est´ndar.2. ¡Feliz exploraci´n! o 21 . a $ mtype fichero_dos Con este cap´ ıtulo quedan explicados los rudimentos para saber moverse por Linux.