La línea de comandos es la manera más directa de enviar comandos a la máquina. Si usa la línea de comandos de GNU/Linux, rápidamente verá que es mucho más potente y tiene más capacidades que los prompts que puede haber usado con anterioridad. La línea de comandos de GNU/Linux ofrece acceso directo a miles de utilitarios que no tienen equivalentes gráficos. La razón de esto es que tiene un acceso directo, no sólo a todas las aplicaciones X, sino también a los miles de utilitarios en modo consola (en oposición al modo gráfico) que no tienen su equivalente gráfico, o nunca será posible mostrar en forma de menús y botones todas las opciones y combinaciones posibles.
Pero, admitámoslo, hace falta un poquito de ayuda para poder empezar. Para eso es este capítulo. La primera cosa a hacer, si está en el modo gráfico, es iniciar un emulador de terminal. Si usa KDE, en el panel tiene un icono que identifica claramente a la terminal (Figura 2-3).
Lo que obtiene en realidad al iniciar este emulador de terminal es un shell. Este es el nombre del programa con el cual Ud. interactúa. Ud. se encontrará frente al prompt:
[juan@localhost] ~ $ |
Esto supone que su nombre de usuario es juan y que el nombre de su máquina es localhost (que es el caso usual si su máquina no es parte de una red existente). Todo lo que aparece después del prompt es lo que Ud. tiene que teclear. Note que cuando Ud. es root el signo $ del prompt cambia por un signo #. (Todo esto es válido para la configuración predeterminada ya que Ud. puede personalizar todos los detalles). El comando para "volverse" root cuando inició un shell como usuario no privilegiado es su:
# Enter the root password; it will not appear on the screen [reina@localhost] ~ $ su Password: # exit will make you come back to your normal user account [root@localhost] exit [reina@localhost] ~ $ |
En el libro, en general el prompt será representado simbólicamente con un signo $, sea Ud. un usuario no privilegiado o root. Cuando tenga que ser root para ejecutar un comando se la avisará, así que, no se olvide del comando su que mostramos antes. Un signo # al comienzo de una línea de código representará un comentario.
Cuando Ud. lanza el shell por primera vez normalmente se encontrará en su directorio personal. Para mostrar el directorio en donde se encuentra en este momento, ingrese el comando pwd (que significa Print Working Directory, Imprimir el directorio de trabajo):
$ pwd /home/juan |
Hay unos comandos básicos que veremos ahora, y pronto se dará cuenta de que le serán indispensables.
El comando cd es exactamente el mismo que en DOS, con algunas funcionalidades extras. Hace justo lo que su acrónimo indica, cambia el directorio de trabajo. Ud. puede usar . para referirse al directorio corriente y .. para referirse al directorio padre del directorio corriente. Si ingresa cd sólo, será llevado de vuelta a su directorio personal. Si ingresa cd - será llevado al último directorio en el cual estuvo. Y, finalmente, puede especificar el directorio personal del usuario pepe ingresando ~pepe (~ solo o seguido de / significa el directorio personal suyo). Note que, como usuario no privilegiado, normalmente no puede ir a los directorios personales de otros usuarios (a menos que esos usuarios lo hayan autorizado explícitamente o esa sea la configuración predeterminada del sistema), excepto si Ud. es root, así que, seamos root y practiquemos:
$ pwd /root $ cd /usr/doc/HOWTO $ pwd /usr/doc/HOWTO $ cd ../FAQ $ pwd /usr/doc/FAQ $ cd ../../lib $ pwd /usr/lib $ cd ~juan $ pwd /home/juan $ cd $ pwd /root |
Ahora, vuelva a ser un usuario no privilegiado.
Los procesos tienen sus variables de entorno y el shell le permite verlas directamente con el comando echo. Algunas variables interesantes son:
HOME Esta variable de entorno contiene una cadena que representa su directorio personal.
PATH Esta variable contiene la lista de todos los directorios en los cuales el shell busca los ejecutables cuando Ud. ingresa un comando. Note que predeterminadamente, a diferencia de DOS, el shell ¡no buscará los comandos en el directorio corriente!
USERNAME Esta variable contiene una cadena que representa su nombre de conexión.
UID Contiene su identificador de usuario
PS1 Contiene el valor de su prompt. Generalmente, es una combinación de secuencias especiales. Puede leer la página man de bash para más información (man 1 bash).
Para hacer que el shell muestre el valor de una variable, debe anteponer al nombre de la misma un $. Aquí, el comando echo lo ayudará:
$ echo Hola Hola $ echo $HOME /home/reina $ echo $USERNAME reina $ echo Hola $USERNAME Hola reina $ cd /usr $ pwd /usr $ cd $HOME $ pwd /home/reina |
Como puede ver, el shell substituye el valor de la variable antes de ejecutar el comando. De no ser así nuestro cd $HOME no hubiese funcionado. De hecho, el shell primero ha reemplazado $HOME por su valor, /home/reina, por lo que la línea se convirtió en cd /home/reina, que es lo que queríamos. Lo mismo vale para echo $USERNAME y así sucesivamente.
No hay mucho más que decir, este comando simplemente hace eso: mostrar el contenido de uno o más archivos en la pantalla:
$ cat /etc/fstab /dev/hda5 / ext2 defaults 1 1 /dev/hda6 /home ext2 defaults 1 2 /dev/hda7 swap swap defaults 0 0 /dev/hda8 /usr ext2 defaults 1 2 /dev/fd0 /mnt/floppy auto sync,user,noauto,nosuid,nodev 0 0 none /proc proc defaults 0 0 none /dev/pts devpts mode=0620 0 0 /dev/cdrom /mnt/cdrom auto user,noauto,nosuid,exec,nodev,ro 0 0 $ cd /etc $ cat conf.modules shells alias parport_lowlevel parport_pc pre-install plip modprobe parport_pc ; echo 7 > /proc/parport/0/irq #pre-install pcmcia_core /etc/rc.d/init.d/pcmcia start #alias car-major-14 sound alias sound esssolo1 keep /bin/zsh /bin/bash /bin/sh /bin/tcsh /bin/csh /bin/ash /bin/bsh /usr/bin/zsh |
Su nombre es un juego de palabras relacionado al primer pager existente bajo Unix, que se denominaba more[1]. Un paginador es un programa que permite al usuario ver archivos largos página por página (o, más precisamente, pantalla por pantalla). Hablamos más de less que de more porque su uso es mucho más intuitivo. Utilice el comando less para ver archivos grandes, que no entran en una pantalla. Por ejemplo:
less /usr/doc/HOWTO/PCMCIA-HOWTO
Para navegar por el archivo, use las teclas de las flechas para arriba y para abajo. Utilice q (por quit, salir) para salir del programa. En realidad, less puede hacer mucho más que eso. De hecho, simplemente presione h para la ayuda (en inglés) y eche un vistazo. Pero de todas formas, el objetivo de esta sección es que Ud. sea capaz de leer archivos largos, y ya está cumplido :-)
Este comando es equivalente a dir de DOS, pero puede hacer mucho más. De hecho, esto se debe en gran parte al hecho de que los archivos también pueden hacer más :-) La sintaxis del comando ls es la siguiente:
ls [opciones] [archivo|directorio] [archivo|directorio...] |
Si no se especifica archivo o directorio alguno en la línea de comandos, ls imprimirá la lista de los archivos del directorio corriente. Sus opciones son muy numerosas y sólo citaremos algunas de ellas:
-a Listar todos los archivos, incluyendo los archivos ocultos (en Unix los archivos ocultos son aquellos cuyo nombre comienza con un .); la opción -A lista "casi" todos los archivos, lo que significa que se mostrarán todos los archivos que mostraría la opción -a excepto "." y "..";
-R Listar "recursivamente", es decir, todos los archivos y sub-directorios del directorio que se menciona en la línea de comandos.
-s Muestra el tamaño en kilobytes junto a cada archivo.
-l Muestra información adicional sobre los archivos.
-i Muestra el número de i-nodo (el número único del archivo en el sistema de archivos, ver el capítulo El sistema de archivos de Linux: ext2fs (EXTended 2 FileSystem)) junto a cada archivo.
-d Muestra los directorios como archivos normales en vez de mostrar su contenido.
Algunos ejemplos:
ls -R lista "recursivamente" el contenido del directorio corriente;
ls -is images/ .. lista los archivos en el directorio images/ y en el directorio padre, e imprime, para cada archivo, su número de i-nodo y su tamaño en kilobytes.
ls -al images/*.gif lista todos los archivos (incluso los archivos ocultos) del directorio images/ cuyo nombre termina con .gif. Note que esto también incluye al archivo .gif si es que existe uno.
Esta sección presentará algunas de las muchas secuencias de tecleo que están disponibles y le harán ganar tiempo. Esta sección asume que Ud. está utilizando el shell predeterminado provisto con Linux-Mandrake, Bash, pero estas secuencias de tecleo también deberían funcionar con otros shells. En esta sección, C-<x> significa Ctrl+<x> (presione la tecla Ctrl, manténgala presionada, presione la tecla <x>, suelte ambas teclas).
Primero: las teclas de las flechas. Bash mantiene un historial de los comandos que ingresó previamente, el cual puede verse con las teclas de las flechas para arriba y para abajo. Ud. puede remontarse hasta un número de líneas definido en la variable de entorno HISTSIZE. Es más, el histórico es persistente de una sesión a otra, por lo que no va a perder los comandos que ingresó en una sesión previa.
Las teclas de las flechas izquierda y derecha mueven el cursor hacia la izquierda y hacia la derecha en la línea corriente, por lo que puede editar sus comandos de esta forma. Pero hay más en materia de edición: C-a y C-e, por ejemplo, lo llevarán al comienzo y al final, respectivamente, de la línea corriente. Las teclas Backspace [2] y Supr funcionan como se espera. Un equivalente de Backspace es C-h y un equivalente de Supr es C-d. C-k borrará toda la línea desde la posición del cursor hasta el final de la misma, y C-w borrará la palabra delante del cursor.
Ingresar C-d en una línea en blanco le hará cerrar la sesión corriente, lo cual es mucho más corto que tener que ingresar exit. C-c interrumpirá el comando en curso de funcionamiento, excepto si se encuentra en el proceso de edición, en cuyo caso interrumpirá la edición y lo devolverá al prompt. C-l borra la pantalla.
Finalmente, están C-s y C-q: estas secuencias de teclas sirven, respectivamente, para suspender y reanudar el flujo de caracteres sobre una terminal. No son muy usadas, pero sin embargo, puede ocurrir que ingrese C-s por error. Entonces, si presiona las teclas pero no ve aparecer carácter alguno en la terminal, primero intente C-q y preste atención: aparecerán en la pantalla todos los caracteres juntos que ingresó desde el C-s no deseado.
[1] | "less" significa "menos", y "more" significa "más" |
[2] | Backspace es la última tecla de la fila que contiene las teclas de los números |