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 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:
[reina@localhost reina]$ su # Ingrese la contraseña de root; (No aparecerá en la pantalla) Password: # exit (o Ctrl-D) lo devolverá a su cuenta de usuario no privilegiado [root@localhost reina]# exit [reina@localhost reina]$
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
A continuación veremos algunos comandos básicos que son muy útiles
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:
$ su - # 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 tecleando exit y presionando la tecla Intro (o simplemente 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 la ruta a 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 ingresando el comando 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 # This file is edited by fstab-sync - see 'man fstab-sync' for details /dev/hda2 / ext3 defaults 1 1 /dev/hdc /mnt/cdrom auto umask=0022,user,iocharset=utf8,noauto,ro,exec,users 0 0 none /mnt/floppy supermount dev=/dev/fd0,fs=ext2:vfat,--,umask=0022,iocharset=utf8,sync 0 0 none /proc proc defaults 0 0 /dev/hda3 swap swap defaults 0 0 $ cd /etc $ cat modprobe.preload # /etc/modprobe.preload: kernel modules to load at boot time. # # This file should contain the names of kernel modules that are # to be loaded at boot time, one per line. Comments begin with # a `#', and everything on the line after them are ignored. # this file is for module-init-tools (kernel 2.5 and above) ONLY # for old kernel use /etc/modules nvidia-agp $ cat shells /bin/bash /bin/csh /bin/sh /bin/tcsh
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.
-h
:
si se muestra el tamaño del archivo, se muestra en un formato
más legible, junto a cada archivo. Esto significa que verá que
los tamaños de los archivos usan sufijos como “K”,
“M” y “G”, por ejemplo
“234K” y “132M”. Por favor, note
también que los tamaños se muestran como potencias de 2, y no
como potencias de 10. Esto significa que 1K es en realidad 1024
bytes en vez de 1000 bytes.
-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 última modificación.
-i
:
muestra el número de i-nodo (el número único del archivo en el
sistema de archivos, consulte Capítulo 4, 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 -ih 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 formato más legible.
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
Mandriva Linux: 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. 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).
Teclear 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 teclear 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 Ctrl-Z y luego ingrese el comando bg.
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.