TEMA 7. Trabajar con la Shell
Volver Ver demostración Actividades del tema Imprimir Capítulo

7.2 IntroducciÓn al Bash.


Si observamos la barra de tareas encontraremos el icono de un monitor con una concha shell. Al pulsar sobre este icono se abrirá la ventana de la consola en la que puede introducir comandos. La ventana que aparece es un intérprete de comandos; normalmente se trata del intérprete Bash (Bourne again shell).

El Bash fue desarrollado en el marco del proyecto GNU y es, sin duda, el derivado más extendido de la Bourne Shell (sh). Cuando abra el Bash, verá sobre la primera línea el llamado Prompt (indicador de mandatos) que normalmente se compone del nombre de usuario, del nombre de la computadora, así como de la localización actual en el árbol de directorios (path). También puede ser configurado de forma individual. Cuando el cursor se encuentre detrás de este prompt, podrá introducir comandos directamente.

Comandos
Los comandos se componen de distintos elementos. En primer lugar se debe introducir siempre la palabra de comando y seguidamente los parámetros u opciones. Los comandos se ejecutan sólo cuando se presiona Return.

Hasta ese momento podrá editar la línea de comandos sin ningún problema, añadir cualquier opción o corregir fallos.

Uno de los comandos más utilizados es ls, que se puede usar sólo o con los llamados argumentos. Si sólo introduce ls en la consola, se le mostrará el contenido del directorio en el que se encuentra en ese momento. Las opciones van precedidas de un guión.

Si introduce el comando ls -l, podrá ver el contenido del mismo directorio, sólo que de forma detallada. Verá, además del nombre del archivo, la fecha en que se creó, el tamaño del archivo en bytes y otras características que se explicarán más adelante.

Una de las opciones más importantes que también están disponible para muchos otros comandos es --help. Si por ejemplo introduce ls --help, se visualizarán todas las opciones para el comando ls.

Con el comando ls puede ver también el contenido de otros directorios que no sean el actual. Introduzca, por ejemplo, ls -l Desktop y seguidamente verá el contenido del subdirectorio Desktop.

Archivos y directorios

Para trabajar de forma eficiente con la shell, debe conocer la estructura de archivos y de directorios en Linux. Los directorios son carpetas electrónicas en las cuales se pueden depositar archivos o programas tal como subdirectorios. El directorio de mayor jerarquía es el directorio raíz, que se representa por /. Desde este directorio podremos acceder a todos los demás.

El directorio /home como ya sabemos contiene los directorios personales en los que todos los usuarios dejan sus archivos.

Funciones del Bash

Dos funciones importantes de la shell le simplificarán enormemente su trabajo:

a) El historial: Si desea volver a ejecutar una orden que ya haya introducido previamente, basta con pulsar la tecla “flecha arriba” hasta que aparezca el comando deseado. Si el comando que busca se encuentra delante de su posición actual pulse la tecla “flecha abajo”. También puede editar la línea de comando si desea modificar la orden. Desplácese con ayuda de las teclas del cursor hasta el sitio deseado y corrija el error.

b) La función de expansión: Esta función completa el nombre de un archivo del cual sólo se han introducido las primeras letras, en caso de que éste pueda ser identificado de forma inequívoca. Para ello pulse la tecla Tab. En caso de que haya más de un archivo que empiece con esas letras, obtendrá una lista de todos estos archivos pulsando dos veces seguidas la tecla Tab.

Ejemplo: Trabajar con archivos

Ahora que ya sabemos cómo se estructura un comando, qué directorios existen en Linux y cómo puede simplificar un poco el trabajo con el bash, haremos un pequeño ejercicio para que pueda poner en práctica estos conocimientos:

1 Abrir una consola haciendo clic sobre el icono del monitor y la concha.

2 Introduzca el comando ls. Verá el contenido de su directorio privado.

3 Cree un nuevo subdirectorio con mkdir make directory de nombre prueba. Para ello introduzca: mkdir prueba (puede escribir md en vez de mkdir).

4 Inicie el editor KWrite pulsando las teclas Alt + F2 e introduciendo kwrite en la casilla de texto, lo que provocará que se abra una nueva ventana. Escriba un par de letras y grabe el archivo con el nombre Archivoprueba con una A mayúscula, puesto que Linux diferencia entre mayúsculas y minúsculas.

5 Ahora mire nuevamente el contenido de su directorio. Pero esta vez, en lugar de volver a introducir el comando ls, presione dos veces seguidas sobre la tecla “flecha arriba”. A continuación volverá a ver ls en la línea de comandos, y sólo tendrá que pulsar sobre la tecla Return para volver a ejecutarlo. Ahora verá el nuevo subdirectorio prueba en color azul y el Archivoprueba en color negro, puesto que los directorios siempre vienen indicados en azul y los archivos en negro.

6 Ahora con el comando mv move, podemos mover el Archivoprueba al subdirectorio prueba. Para facilitar el trabajo, use la función expansión: escriba mv A y pulse la tecla del tabulador. Si no existe ningún otro archivo que comience con esa inicial, la shell le mostrará la cadena Archivoprueba; en caso contrario, debe introducir más letras y confirmar con la tecla del tabulador. Deje un espacio en blanco después de la primera secuencia (mv Archivoprueba), escriba prueba y pulse Return.

7 Si ahora ejecuta el comando ls, ya no se mostrará el Archivoprueba.

8 Para comprobar que se ha producido la modificación, vaya al directorio prueba con el comando cd prueba. Escriba ls; ahora debe aparecer el Archivoprueba. Con el comando cd change directorysiempre puede volver a su directorio privado.

9 Si necesita una copia del archivo, utilice el comando cp copy. Para copiar Archivoprueba en Archivoseguridad, escriba cp Archivoprueba Archivoseguridad. Para ver ambos archivos, ejecute ls.

Indicación de la ruta

Para trabajar con archivos o directorios siempre debe indicar la ruta correcta. Para ello no siempre es necesario que indique la ruta completa (absoluta) desde el directorio raíz hasta el archivo deseado. Puede hacerlo desde el directorio en el que se encuentre actualmente. Esto significa que dispone de varias formas de mostrar el archivo Archivoprueba en el directorio prueba: ruta relativa con ls prueba/* o ruta absoluta con ls ~/prueba/*.

Para ver los directorios personales de otros usuarios, escriba ls ~ seguido del nombre de usuario. En la estructura de directorios mencionada aquí existía un usuario inventado tux. Con el comando ls ~Javier puede ver el contenido del directorio personal del usuario Javier.

El directorio actual se representa con un punto y el directorio inmediatamente superior, con dos. Así, escribiendo ls .. se le muestra el contenido del directorio madre del actual directorio; con ls ../.. sube dos escalones en la jerarquía de directorios.

Ejemplo: El trabajo con rutas

Este otro ejemplo le aclarará cómo moverse por la estructura de directorios de su sistema Linux.

1 Para estar seguro de que se encuentra en su directorio personal, introduzca cd en la consola. Aquí tiene el subdirectorio prueba. Ahora creará un subdirectorio adicional con el nombre prueba2. Introduzca para ello el comando mkdir prueba2.

2 Cambie de ubicación a prueba2 con el comando cd prueba2 y cree allí un nuevo directorio de nombre Subdirectorio. Cambie a éste utilizando la función expansión: es decir, escriba sólo cd Su y pulse la tecla Tab. El resto de la palabra será añadida automáticamente.

3 Ahora se encuentra en Subdirectorio. A continuación moveremos el archivo Archivoseguridad creado anteriormente a este directorio. Para ello, no hace falta que se desplace de nuevo al directorio prueba; bastará con introducir la ruta relativa al archivo deseado. Deberá introducir el siguiente comando: mv ../../prueba/Archivoseguridad . (no se olvide del punto final ya que de esa manera define el directorio actual como destino final para el comando mv). Con cada dos puntos accederá a un nivel superior en la estructura de directorios, por lo que en este caso ../.., hace referencia a su directorio personal.

Comodines

Otra ventaja de la shell son los llamados comodines o wildcards.

? : Sustituye exactamente un carácter.

* : Sustituye una cantidad cualquiera de caracteres.

[set] : Reemplaza sólo un carácter de los que forman la secuencia de caracteres

escrita entre corchetes, aquí representado con la cadena de caracteres set.

[!set] : Representa sólo un símbolo cualquiera, exceptuando los incluidos en la

cadena set.

Supongamos que tiene en su directorio prueba los archivos Archivoprueba, Archivoprueba1, Archivoprueba2 y archiPrueba. En este caso, con el comando ls Archivoprueba? se le mostrarán los archivos: Archivoprueba1 y Archivoprueba2. Con ls Archivo* se le enseñará también el archivo Archivoprueba.

Con ls *chi* obtendrá todos los archivos de prueba. Mientras que con el comodín set puede pedir que se muestre sólo los archivos que terminen por un número: ls Archivoprueba[1-9].

El más poderoso siempre es el comodín *. Con él se puede, por ejemplo, copiar todos los archivos de un directorio en otro, o bien borrarlos. Así, el comando rm *pru* borraría de su directorio prueba todos los archivos que contuvieran en su nombre la secuencia de caracteres pru.

Less y More

Dos pequeños programas le permiten visualizar archivos de texto directamente en la shell. Por tanto, no necesita abrir primero un editor si quiere leer, por ejemplo, un archivo llamado Leame.txt. Tan solo tiene que introducir el comando: less Leame.txt. De esa forma podrá visualizar el texto en la ventana de la consola. Con la barra espaciadora puede avanzar de página en página, y con las teclas de los cursores puede moverse en el texto hacia adelante y hacia atrás. Para terminar less utilice la tecla q.

El nombre less tiene su origen en el dicho a veces menos es más. El programa less no sólo se puede usar para ver archivos de texto, sino que también puede servir para ver cómodamente la salida de comandos . Esto se explicará en el siguiente punto.

Además de less puede usar también el programa more, algo más antiguo y que resulta un poco menos cómodo, ya que con él no puede hojear el texto.

Desvíos

Normalmente la salida estándar de la shell es la pantalla (o bien la ventana de la shell) y la entrada estándar es el teclado. Para desviar la salida de un comando a un programa como less, tiene que utilizar una tubería (pipe).

Para ver los archivos dentro del directorio prueba, introduzca el comando ls prueba | less. Para obtener el símbolo |, pulse simultáneamente Alt Gr y la tecla con el signo de exclamación (!) y el número uno (1).

Este procedimiento vale para la distribución de teclado de España y no necesariamente para el teclado latinoamericano. La consola muestra ahora el contenido del directorio prueba utilizando less. Esto sólo es razonable, si la lista del contenido del directorio no cabe en la ventana. Por ejemplo con el comando ls /dev sólo puede ver algunos de los ficheros en ese directorio, mientras que ls /dev | less permite visualizar todo.

Para grabar la salida de un comando en un fichero, el comando equivalente sería: ls test > contenido. El resultado es un fichero nuevo con el nombre contenido, que contiene el listado de los ficheros y directorios en prueba. Mediante less contenido es posible visualizar el fichero.

Por otra parte es posible utilizar un fichero como entrada a un comando. Por ejemplo puede ordenar alfabéticamente las líneas que haya escrito en el fichero de prueba mediante sort < Archivoprueba. La salida de este comando aparece en la pantalla y se ve el texto anteriormente escrito ordenado según las letras iniciales de cada línea. Esto sirve por ejemplo para ordenar una lista de nombres.

Para crear un archivo nuevo con la lista ordenada hay que desviar el resultado del comando sort a un archivo nuevo. Para realizarlo, puede crear en un editor una lista no ordenada y grabarla bajo el nombre lista en el directorio prueba. Entre al directorio prueba y ejecute el comando sort < lista > ListaOrdenada. Visualice la lista nueva con less.

La salida estándar de errores es igualmente la pantalla. Pero si quiere desviarla a un archivo con el nombre Error, escriba 2> Error a continuación de la orden. Si escribe >& Salida después de un comando, tanto la salida estándar como la salida de errores se guardarán en el archivo Salida. Si en lugar de un >, emplea dos >>, la salida se añadirá a un archivo existente.

Archivar y comprimir datos

Después de haber creado algunos archivos y directorios, veremos ahora el tema de archivar y comprimir datos. Supongamos que desea empaquetar todo el directorio prueba en un archivo, ya sea para guardarlo en un disquete como copia de seguridad o para enviarlo por correo electrónico. Para ello, use el comando tar tape archiver. Con tar --help puede ver todas las opciones de tar. A continuación, se aclararán las más importantes:

-c : create crear un archivo nuevo.

-t : table ver el contenido de un archivo.

-x : extract descomprimir un archivo.

-v : verbose ver todos los archivos en la pantalla durante el proceso de compresión.

-f : file con esta opción puede dar un nombre al archivo de empaquetamiento. Al comprimir, esta opción ha de introducirse en último lugar.

Para empaquetar ahora el directorio prueba con todos sus archivos y subdirectorios en un archivo con el nombre prueba.tar, necesitaremos en cualquier caso las opciones: -c y -f. Si queremos hacer un seguimiento del proceso de empaquetado usaremos también la opción -v. Con cd diríjase primero a su directorio personal, donde se encuentra el directorio prueba. Introduzca ahora el comando tar -cvf prueba.tar prueba.

Vea después el contenido del archivo empaquetado con: tar -tf prueba.tar. A propósito, el directorio prueba con todos sus archivos y directorios no sufre ningún cambio y sigue estando en su disco duro. Para desempaquetar por completo el archivo, introduzca el comando: tar -xvf prueba.tar. No haga esto aún ya que antes comprimiremos el archivo para ahorrar espacio.

Para ello, se aconseja utilizar el famoso programa gzip. Introduzca: gzip prueba.tar. Si ahora ejecuta ls, verá que el archivo prueba.tar ha desaparecido y en su lugar existe otro archivo de nombre prueba.tar.gz. Este archivo es mucho más pequeño, y por lo tanto más apropiado para ser enviado por e-mail o para que quepa en un disquete.

Ahora proceda a desempaquetar el archivo en el directorio prueba2 creado anteriormente. Para ello, copie el archivo en el directorio prueba2 con el comando cp prueba.tar.gz prueba2. Introduzca seguidamente cd prueba2. Para descomprimir un archivo .tar.gz utilice gunzip. La orden que se debe ejecutar es: gunzip prueba.tar.gz, con lo que obtendrá nuevamente un archivo prueba.tar.

Ahora sólo queda desempaquetar este archivo de la siguiente manera: tar -xvf prueba.tar. Con el comando ls puede comprobar que ahora tiene un nuevo directorio prueba con el mismo contenido que el directorio prueba que se encuentra en su directorio personal.

mtools Los mtools son una serie de comandos con los que se puede trabajar en un sistema de archivos MS-DOS. Esto es sobre todo importante para trabajar directamente con la disquetera. Como en MS-DOS, a la disquetera se la puede denominar a:

Los comandos reciben los mismos nombres que en MS-DOS, sólo que van precedidos de una m:

mdir a: : le muestra el contenido del disquete introducido en la disquetera a:.

mcopy Archivoprueba a: : copia el archivo Archivoprueba al disquete.

mdel a:Archivoprueba : borra Archivoprueba de a:

mformat a: formatea los disquetes a alto nivel; para ello el disquete tiene que ser

previamente formateado a bajo nivel con el comando
fdformat /dev/fd0h1440 o estar ya formateado.

mcd a: : a: será su directorio actual.

mmd a:prueba : crea el subdirectorio prueba en el disquete.

mrd a:prueba : borra el subdirectorio prueba del disquete.

Hacer limpieza

Para que nuestro directorio personal quede un poco más ordenado, puede borrar todos los directorios y archivos de prueba con los comandos rm y rmdir.

 
 
   
 
Copyright - © ANFORA, 2004. Todos los derechos reservados. Condiciones Legales.    
Subir al inicio de la página Página Web de ÁNFORA