Tabla de contenidos
Resumen
Si bien es verdad que el entorno gráfico de usuario para Linux ha ganado en popularidad en los últimos tiempos, también es cierto que no todas las necesidades diarias pueden ser cubiertas con unos cuantos clics del ratón. En estos casos la línea de comandos nos ofrece una gran flexibilidad y eficacia. En la primera parte de este capítulo se le explicará cómo manejar la shell Bash y, a continuación, el concepto de derechos de usuario en Linux. El capítulo concluye con una lista de los comandos más importantes y una introducción al editor de textos vi.
La posibilidad de trabajar mediante programas basados en texto resulta muy importante sobre todo en el caso de ordenadores Linux antiguos, los cuales a menudo no disponen de recursos suficientes para satisfacer las necesidades de hardware de algunos entornos gráficos. En estos casos se utilizan las consolas virtuales. Dispone de seis consolas virtuales en modo texto entre las que puede navegar con las combinaciones de teclas Alt-F1 a Alt-F6. La séptima consola está reservada para X11.
En la barra de tareas encontrará 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 . Cuando abra el Bash, verá en la primera línea el llamado prompt o símbolo de espera de órdenes que normalmente se compone del nombre de usuario, nombre de ordenador y de la localización actual en el árbol de directorios (ruta o path). También puede ser configurado de forma individual. Cuando el cursor se encuentre detrás de este prompt, podrá introducir comandos directamente.
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 presiona Intro. 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
explicaremos más adelante. Una de las opciones más importantes que también
está 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.
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 así 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 contiene los directorios personales
en los que todos los usuarios dejan sus archivos.
La Figura 19.1, “Árbol de directorios bajo Linux” muestra el árbol de directorios
estándar de Linux con los directorios locales de los usuarios
xyz,
linux y
tux. El árbol de directorios está
ordenado por grupos funcionales según el estándar de jerarquía de sistemas
de archivos. La siguiente tabla resume los directorios más típicos de
Linux.
/el directorio raíz (root directory), que es el punto de partida del árbol de directorios.
/homelos directorios (locales) de usuario.
/devarchivos de dispositivos (device files) que representan componentes del hardware.
/etcarchivos importantes para la configuración del sistema.
/etc/init.dscripts de arranque.
/usr/bincomandos de acceso general.
/bin
comandos necesarios durante el arranque del sistema.
/usr/sbincomandos reservados para el administrador del sistema.
/sbincomandos reservados para el administrador del sistema y necesarios durante el arranque del sistema.
/usr/includearchivos de encabezamiento para el compilador de C.
/usr/include/g++
archivos de encabezamiento para el compilador de C++.
/usr/share/docdiferentes archivos de documentación.
/usr/share/manla ayuda en línea (manual pages).
/usr/srcfuentes del software del sistema.
/usr/src/linuxfuentes del kernel.
/tmp, /var/tmppara archivos temporales.
/usrcontiene todas las aplicaciones.
/var
archivos de configuración (por ejemplo enlazados desde
/usr).
/var/logarchivos de registro.
/var/admarchivos para la administración del sistema.
/liblibrerías compartidas (para programas enlazados dinámicamente).
/procel sistema de archivos de los procesos.
/sys(“system”) sistema de ficheros que alberga para el kernel toda la información sobre dispositivos.
/usr/localextensiones locales, independientes de la distribución.
/optsoftware opcional, paquetes grandes (por ejemplo KDE, GNOME, Netscape).
Dos funciones importantes de la shell le simplificarán enormemente su trabajo:
Si desea volver a ejecutar una orden que ya haya introducido previamente, basta con pulsar la tecla ↑ hasta que aparezca el comando deseado. Si el comando que busca se encuentra delante de su posición actual pulse la tecla ↓. 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 comience a editar el comando. Utilice Ctrl-R para buscar en el historial.
Esta función completa el nombre de un archivo del cual sólo se han introducido las primeras letras, en caso de que este 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.
Ahora que ya sabe cómo se estructura un comando, qué directorios existen en SUSE 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:
Abra una consola en KDE pulsando sobre el icono del monitor y la concha.
Introduzca el comando ls que le mostrará el contenido de su directorio local.
Cree un nuevo subdirectorio con mkdir
(make directory) llamado
prueba. Para ello introduzca: mkdir
prueba.
Inicie el editor Kate pulsando las teclas Alt-F2 e introduciendo kate 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.
Ahora mire nuevamente el contenido de su directorio. Pero esta vez, en
lugar de volver a introducir el comando ls, pulse
dos veces seguidas sobre la tecla ↑. A continuación
volverá a ver ls en la línea de comandos, y sólo
tendrá que pulsar sobre la tecla Intro 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.
Con el comando mv move, podemos ahora 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 Intro.
Si ahora ejecuta el comando ls, ya no se mostrará el Archivoprueba.
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 directory) siempre puede volver
a su directorio local.
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.
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. Además, puede dirigirse a su directorio personal (home) con
~. 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
presentada como ejemplo existía el usuario ficticio tux. Con el comando ls
~tux puede ver el contenido del directorio personal del usuario
tux.
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 superior del actual directorio; con ls ../.. se sube dos escalones en la jerarquía de directorios.
Este otro ejemplo le aclarará cómo moverse por la estructura de directorios de su sistema SUSE LINUX.
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.
Cambie de ubicación a prueba2 con el comando
cd prueba2 y cree allí un nuevo directorio de nombre
Subdirectorio. Cambie a este 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.
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.
Otra ventaja de la shell son los llamados comodines o wildcards.
Sustituye exactamente un carácter.
Sustituye una cantidad cualquiera de caracteres.
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.
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.
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 sólo
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 Re.
Pág. y Av. Pág. 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 la Sección 19.1.7, “Desvíos”.
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.
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
AltGr 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 archivos en ese directorio,
mientras que ls /dev | less permite visualizar todo.
Para grabar la salida de un comando en un archivo, el comando equivalente
sería: ls test > contenido. El resultado es un archivo
nuevo con el nombre contenido, que contiene el listado de los archivos y
directorios en prueba. Mediante less
contenido es posible visualizar el archivo.
Por otra parte es posible utilizar un archivo como entrada a un comando. Por ejemplo puede ordenar alfabéticamente las líneas que haya escrito en el archivo 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 comandosort 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 del comando. 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.
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:
-ccreate crear un archivo nuevo.
-ttable ver el contenido de un archivo.
-xextract descomprimir un archivo.
-vverbose ver todos los archivos en la pantalla durante el proceso de compresión.
-ffile 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
correo electrónico 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, para lo que puede añadir la
opción -z al comando tar. Sería de la siguiente manera: tar -xvzf
prueba.tar.gz. 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.
Los mtools son una serie de comandos con los que se puede
trabajar en un sistema de archivos MS-DOS. Esto es relevante sobre todo 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:
le muestra el contenido del disquete introducido en la disquetera
a:.
copia el archivo Archivoprueba al disquete.
borra Archivoprueba de 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.
a: será su directorio actual.
crea el subdirectorio prueba en el disquete.
borra el subdirectorio prueba del disquete.