La línea de comandos es la manera más directa de enviar comandos a su 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 las invitaciones (prompts) que puede haber usado con anterioridad. 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 equivalente gráfico, o que no sería fácil acceder a todas las opciones y combinaciones posibles por medio de menús y botones.
Pero, admitámoslo, muchas personas necesitan un poquito de ayuda para poder empezar. La primera cosa a hacer, si está en el modo gráfico y todavía no está trabajando en modo consola, es iniciar un emulador de terminal. Acceda al menú principal de KDE, GNOME o cualquier otro administrador de ventanas que esté usando y encontrará una cantidad de emuladores de terminal en el submenú + . Elija el que desea, por ejemplo o . Dependiendo de su interfaz de usuario, también puede tener un icono que lo identifica claramente en el panel (ver Figura 1.2, “El icono de la terminal en el panel de KDE”).
Lo que obtiene en realidad al iniciar este emulador de terminal es un shell. Este es el nombre del programa con el cual Usted interactúa. Se encontrará frente a la invitación:
[reina@localhost reina]$ |
Esto supone que su nombre de usuario es reina y que el nombre de su máquina es localhost (este es el caso si su máquina no es parte de una red existente). Todo lo que aparece después de la invitación es lo que tiene que teclear. Note que cuando Usted es root el signo $ de la invitación cambia por un signo # (esto sólo es válido con la configuración predeterminada, ya que puede personalizar todos estos detalles en GNU/Linux). El comando para “volverse” root cuando inició un shell como usuario no privilegiado es su:
# Ingrese la contraseña de root; (No aparecerá en la pantalla) [reina@localhost reina]$ su Password: # exit (o Ctrl-D) lo devolverá a su cuenta de usuario no privilegiado [root@localhost reina]# exit [reina@localhost reina]$ |
En el libro, en general la invitación será representada simbólicamente con un signo $, sea Usted un usuario no privilegiado o root. Cuando tenga que ser root para ejecutar un comando se le avisará, así que no se olvide del comando su que mostramos antes.
Cuando Usted 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/reina |
Hay unos comandos básicos que veremos ahora, y ¡pronto se dará cuenta que no podrá vivir sin ellos!
El comando cd es exactamente el mismo que en DOS, con algunos extra. Hace justo lo que su acrónimo indica, cambiar el directorio de trabajo. Puede usar . y .., que significan respectivamente el directorio corriente y el directorio padre. Si ingresa cd solo, regresará a 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 peter ingresando cd ~peter (~ sólo o seguido de / significa el directorio personal suyo). Note que como usuario no privilegiado normalmente no puede ingresar 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 Usted es root, entonces sea root y practique:
$ pwd /root $ cd /usr/share/doc/HOWTO $ pwd /usr/share/doc/HOWTO $ cd ../FAQ-Linux $ pwd /usr/share/doc/FAQ-Linux $ cd ../../../lib $ pwd /usr/lib $ cd ~peter $ pwd /home/peter $ cd $ pwd /root |
Ahora, vuelva a ser un usuario no privilegiado ingresando el comando exit (o presionando las teclas Ctrl-D).
Todos 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 de caracteres que representa su directorio personal.
PATH: esta variable contiene la lista de todos los directorios en los cuales el shell busca los ejecutables cuando Usted 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.
PS1: determina cómo se mostrará la invitación, y generalmente es una combinación de secuencias especiales. Puede leer la página de manual de bash(1) (página Man) para más información tecleando man bash en una terminal.
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 ejemplo 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 ocurrió con el ejemplo echo $USERNAME.
No hay mucho más que decir, este comando simplemente hace eso: mostrar el contenido de uno o más archivos en la salida estándar, normalmente 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 modules.conf 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 char-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 paginador existente bajo UNIX®, que se denominaba more[2]. 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 /etc/termcap |
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) acerca de las varias opciones disponibles.
El comando ls (LiSt, LiStar) 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 mostrará la lista de los archivos del directorio corriente. Sus opciones son muchas y sólo citaremos unas pocas:
-a: lista 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: lista recursivamente, es decir, todos los archivos y subdirectorios del directorio que se menciona en la línea de comandos.
-l: muestra información adicional sobre los archivos tales como los permisos asociados al mismo, el dueño y el grupo dueño, el tamaño del archivo y la fecha de último acceso.
-i: muestra el número de i-nodo (el número único del archivo en el sistema de archivos, consulte Capítulo 9, El sistema de archivos de Linux) junto a cada archivo.
-d: trata a los directorios de la línea de comandos como si fueran archivos normales en vez de listar su contenido.
ls -R: lista recursivamente el contenido del directorio corriente;
ls -is images/ ..: lista los archivos en el directorio images/ y en el directorio padre del corriente, e imprime, para cada archivo, su número de i-nodo y su tamaño en kilobytes.
ls -l images/*.png: lista todos los archivos del directorio images/ cuyo nombre termina con .png, incluyendo al archivo .png si es que existe.
Hay una cantidad de atajos de teclado disponibles, cuya principal ventaja es que Usted ahorrará muchísimo tiempo de tecleo. Esta sección asume que está utilizando el shell predeterminado provisto con Mandrakelinux: bash, pero estas secuencias de tecleo también deberían funcionar con otros shells.
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. Se puede remontar 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. Pero hay más en materia de edición que simplemente moverse un caracter a la vez: Ctrl-A y Ctrl-E, por ejemplo, lo llevarán al comienzo y al final, respectivamente, de la línea corriente. Las teclas Retroceso[3] y Supr funcionan como se espera. Un equivalente de Retroceso es Ctrl-H y un equivalente de Supr es Ctrl-D. Ctrl-K borrará toda la línea desde la posición del cursor hasta el final de la misma, y Ctrl-W borrará la palabra delante del cursor (al igual que Alt-Retroceso).
Ingresar Ctrl-D en una línea en blanco le permitirá cerrar la sesión corriente, lo cual es mucho más corto que tener que ingresar exit. Ctrl-C interrumpirá el comando en curso de ejecución, excepto si se encuentra en el proceso de editar su línea de comandos, en cuyo caso interrumpirá la edición y lo devolverá a la invitación. Ctrl-L borra la pantalla. Ctrl-Z detiene temporalmente una tarea, la suspende. Este atajo es muy útil cuando Usted se olvida de teclear el caracter “&” luego de teclear un comando. Por ejemplo:
$ xpdf MiDocumento.pdf |
Por lo tanto no puede utilizar más el shell ya que la tarea en primer plano se asigna al proceso xpdf. Para poner esa tarea en segundo plano y restaurar su shell, simplemente teclee bg luego de haber presionado las teclas Ctrl-Z.
Finalmente, están Ctrl-S y Ctrl-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 teclee Ctrl-S por error (después de todo, S y D están muy cerca una de la otra en el teclado...). Entonces, si presiona las teclas pero no ve aparecer caracter alguno en la terminal, primero intente Ctrl-Q y preste atención: aparecerán en la pantalla todos los caracteres juntos que ingresó entre el Ctrl-S no deseado y Ctrl-Q.