9. Mi vieja amiga la Consola


9.1. ¿Qué es una orden o comando?

9.2. Comandos básicos: sudo, cd, ls, cp, mv, rm, mkdir, rmdir, man, more, clear.

9.3. Diversión en la consola

9.4. Ejecución en segundo plano.

9.5. Editando archivos de texto.

9.6. Sé vago I: Terminación de palabra.

9.7. Sé vago II: Utiliza el histórico de comandos.

9.8. Sé vago III: Cortar y pegar selecciones.

9.9. Personalizando la consola: fuentes, tamaños, esquemas, etc.

9.10. Otras consolas.

9.11. Comodines, Redireccionamiento, Tuberías y Variables de entorno.

9.12. Realizando distintas tareas en la consola.

9.1. ¿Qué es una orden o comando?

Puedes entender una orden o comando (no es quizás la traducción más conseguida de command) como una llamada a un programa que nos permite dialogar con el sistema operativo para obtener información o realizar una determinada tarea.

¿Cómo puedes acceder a la consola?

Existen muchas formas de acceder a la consola:

* En Ubuntu desde el menú Aplicaciones, Accesorios, Terminal y en Kubuntu mediante la secuencia K, Sistema, Konsole.

* En Kubuntu, también, desde K, Ejecutar comando y escribir Konsole. Puedes acceder a Ejecutar comando con las teclas rápidas lt + F2, tanto en Kubuntu como Ubuntu, en este último caso la instrucción a ejecutar es gnome-terminal.

* Crear un lanzador a ella en el escritorio o en un panel.

* GNU/Linux viene predefinido con seis consolas virtuales en modo texto a las que se puede acceder mediante las teclas Ctrl + Alt + F1. Puedes sustituir la tecla F1 por F2, F3 hasta F6. Para volver al modo gráfico se utiliza la combinación Control + Alt + F7.


La utilidad de estas consolas radica entre otras razones, en que si el sistema gráfico se nos cae o el sistema se bloquea, podemos matar a los procesos desde una de estas consolas virtuales, reinstalar el gestor de ventanas, reiniciar el sistema, etc.

¿Por qué necesitas los comandos? ¿Por qué utilizar la consola?

Existen varias razones para utilizarlos. La primera razón es que a veces es más cómodo utilizarlos que ignorarlos. Imagínate que quieres lanzar un programa que no sabes dónde está o no quieres ponerte a buscarlo, simplemente tecleas en la consola el programa y se lanza. Por ejemplo en la consola teclea gedit y tendrás inmediatamente un editor de textos.

Para realizar algunas tareas repetitivas (hacer una copia de seguridad, un escaneo de los discos para detectar virus, etc.) es más cómodo utilizar órdenes que interfaces gráficas, sobre todo cuando puedes programarlas para que el sistema realice una determinada tarea a intervalos regulares de tiempo sin tu intervención.

Además distintos gestores de ventanas usan diferentes programas (por ejemplo en KDE contamos con K3B, Kopete, Konqueror y GNOME tiene sus equivalentes en Brasero, Gaim, Nautilus), quizás estés familiarizado con una interfaz de tipo texto que es común a ambos, que resuelve una tarea de forma sencilla, funciona sin errores y no precisas de nada más.

Otra razón es que existen algunos programas que siguen utilizando la interfaz de línea de comandos e incluso algunos ofrecen las dos interfaces (la gráfica y la de texto).


Existen por tanto ciertas tareas que sólo se pueden realizar desde línea de comandos y para otras es más cómodo y práctico utilizar la consola.

Un ejemplo lo encontramos en ffmpeg (el paquete a instalar tiene el mismo nombre) que nos permite convertir o transformar un fichero entre distintos formatos multimedia, tanto de vídeo como de audio. Así si queremos convertir de wma a mp3 escribimos en la consola:


ffmpeg -i nombreFicheroEntrada.wma -f mp3 –ab 192 nombreFicheroSalida.mp3

* -i nombreFicheroEntrada.wma: i Input File, es decir, fichero de entrada.

* -f mp3: expresa el formato al que queremos convertir el fichero anterior.

* –ab 192: indicamos el bitrate de audio –Audio Bitrate- en kbit/s, por defecto es 64.

* nombreFicheroSalida.mp3: fichero resultante de la ejecución de la instrucción.

Dentro de la filosofía de GNU/Linux encontramos que muchos programas se adaptan a un modelo en dos capas.

Una primera capa, el back-end es la que realiza el trabajo propiamente dicho, si hablamos de un ajedrez sería el motor de ajedrez, por ejemplo GNUChess, HoiChess, Phalanx, etc.

El front-end tiene como función principal mostrar una interfaz más amigable y agradable, en nuestro ejemplo podría ser glChess. A nadie le gusta tener que indicar las coordenadas para mover un peón si puede arrastrar y soltar el mismo por el tablero.


Esta filosofía tiene la gran ventaja de ser extremadamente flexible. GNU/Linux nos ofrece la posibilidad de poder cambiar ambos a placer, así podemos sustituir por ejemplo el front-end por otro que incorpore efectos 3D más vistosos. Sin embargo, a veces no toda la funcionalidad del back-end es implementada en el front-end, por lo que para determinadas tareas tenemos que recurrir a la tan socorrida consola.

También está indicada la consola, para máquinas de recursos muy limitados o cuando precisamos acceder a la red (local o Internet) y la línea no va a la velocidad que quisiéramos.

Por último, no podemos olvidar que normalmente cuando estemos trabajando directamente con servidores, éstos, por razones de rendimiento, no suelen tener instalados los gestores gráficos como GNOME o KDE por lo que se hace imprescindible el uso de la consola.

Resumiendo podemos realizar cualquier tarea en modo consola con programas para todas las necesidades: editores de textos (vi, joe, pico, etc), calculadoras (bc), gestores de archivos (mc), navegadores (lynx), reproductores (mplayer), acceso remoto (ssh), etc.


9.2. Comandos básicos: sudo, cd, ls, cp, mv, rm, mkdir, rmdir, man, more, clear.

Veamos sin más dilaciones los comandos más elementales y útiles.

Todos los comandos son abreviaciones de palabras inglesas que explican su función, es útil conocerlas para simplificar la memorización de las órdenes. Por ejemplo cd, significa change directory, cambiar el directorio actual, ls list directory, listar o mostrar el contenido del directorio y cp indica copy, es decir sirve para copiar ficheros y directorios.

Una orden en GNU/Linux tiene la siguiente sintaxis:

orden opciones argumentos

Los nombres de las órdenes se escriben en minúsculas, las opciones deben ir precedidas de un guión y pueden eventualmente agruparse después de un guión simple. Una opción adapta la orden a nuestras necesidades, cambia en cierto modo el comportamiento habitual de la orden.

Un ejemplo de opciones lo encontramos con ls, por ejemplo si queremos listar el contenido de un directorio en formato largo (una línea por fichero o directorio indicando permisos, propietario y grupo, tamaño y fecha de modificación) utilizamos la opción l de long y para mostrarnos los archivos ocultos incluimos la opción a de all (que nos muestre todos los ficheros y directorios). Por consiguiente, nuestra instrucción sería:

ls -la

Los argumentos pueden ser ficheros y/o directorios y deben estar separados por espacios en blanco.

GNU/Linux es un sistema multiusuario, lo que significa que está diseñado para ser utilizado por más de una persona. En particular, cuando normalmente accedes a GNU/Linux, accedes mediante una cuenta con “privilegios reducidos”. Existen básicamente dos cuentas básicas: la del usuario con la que sueles entrar (joe) y la del administrador.

Cuando abres una consola estás por defecto en /home/joe donde joe es el usuario con el que has iniciado la sesión. Es decir, cuando ejecutas una orden en consola debes tener en cuenta:

* La ORDEN propiamente dicha.

* QUIÉN eres en un momento dado (joe, administrador, etc.). Así por ejemplo algunas órdenes requieren privilegios de administración: reboot, kill, halt, mount, etc.

* DÓNDE estás en el sistema de archivos, por ejemplo si quieres copiar un archivo a una carpeta y el sistema te da un mensaje de error, quizás sea simplemente porque no estás en el lugar en el que deberías estar y donde se encuentra dicho fichero.

Si quieres por ejemplo acceder a una carpeta llamémosla MiCarpeta situada en el directorio de joe, bastará con escribir:

cd MiCarpeta

Aquí queremos que tengas en cuenta lo siguiente:



El sistema de archivos es un “árbol”, donde el nodo raíz se identifica con la barra vertical /. A partir de este directorio se encuentran un conjunto de directorios de primer nivel: bin, home, var, etc. Todo directorio, excepto el raíz, tiene un solo directorio padre pero puede tener 0, 1 o más directorios hijos.

En la siguiente ilustración puedes observar el árbol de directorios genérico de GNU/Linux:

El directorio de nuestro usuario “joe”, “/home/joe”, de segundo nivel, cuelga de la carpeta home, a partir de aquí podemos crear directorios (p.e. MiCarpeta) y ficheros. Si estamos en el directorio de joe y queremos hacer referencia a un determinado fichero (por ejemplo a un fichero llamado MiOtroFichero situado en MiCarpeta) debemos indicar la ruta o el camino (path en inglés) a dicho fichero, de una de las dos formas siguientes:

a) Absoluta, indicando todos los directorios intermedios desde el directorio raíz hasta llegar a dicho fichero: /home/joe/MiCarpeta/MiOtroFichero.

b) Relativa al directorio donde nos encontramos en este momento. Recuerda que hemos dicho que nos encontrábamos en el directorio del usuario joe, luego sería: MiCarpeta/MiOtroFichero.

cp /home/joe/MiFichero.txt /home/joe/MiCarpeta

Usando rutas absolutas (indicando el camino desde el directorio raíz).

cp MiFichero.txt MiCarpeta

Aquí tenemos en cuenta que nuestra situación actual, “donde estamos ahora” es /home/joe/. Es decir, empleamos rutas relativas.

Un resultado parecido obtendríamos si utilizáramos la orden “mv, con la única diferencia de que sólo conservaríamos una copia (en vez de dos) del fichero MiFichero.txt, la que se almacenaría en MiCarpeta. Lo que hacemos realmente es mover el fichero de lugar en el sistema de archivos (mv move, mover).

Una opción interesante de la orden “cp” es la posibilidad de copiar no sólo ficheros, sino el contenido de un directorio completo, para ello se utiliza la opción -R de recursivo.

Obviamente, también podemos borrar ficheros con “rm” (remove) o directorios (“rm –r”), con el parámetro r de recursivo. Cuando deseamos borrar una carpeta o fichero el sistema operativo nos va a preguntar si estamos seguros. Si queremos borrar una carpeta con decenas de documentos, se puede tornar en una tarea tediosa porque nos va a hacer una pregunta por cada documento contenido en dicha carpeta. Una solución es utilizar el parámetro f (force). Luego:

rm -rf MiCarpeta

eliminaría la carpeta MiCarpeta y todo su contenido sin solicitar ninguna confirmación.

Para crear carpetas utilizamos la orden “mkdir” de make directory, la orden inversa seria “rmdir” de remove directory que borra directorios vacíos. Veamos ahora algunos ejemplos que ilustren todo lo explicado.

1. Creamos MiCarpeta con mkdir

mkdir MiCarpeta

2. Nos movemos a la carpeta recién creada con cd, mediante el uso de rutas relativas.

cd MiCarpeta

3. Creamos un fichero de texto con gedit y escribimos en él.

gedit miFichero.txt

4. Visualizamos con cat el fichero de texto.

cat miFichero.txt

5. Realizamos un listado de todos los archivos (incluidos los archivos ocultos) de la carpeta en formato largo (con la máxima información posible)

ls -la

6. Copiamos miFichero.txt de /home/joe/MiCarpeta a /home/joe. Ahora tenemos dos copias de miFichero.txt.

cp miFichero.txt ..

7. Nos vamos al directorio home y eliminamos el fichero miFichero.txt

cd ..

rm miFichero.txt

8. Eliminamos la carpeta MiCarpeta

rm –rf MiCarpeta

A continuación te mostramos una tabla con los comandos más utilizados que pueden ser útiles:

Archivos.

Comando.

Descripción.

ls

Listado de directorio.

man

Permite consultar las páginas del manual, la documentación por excelencia de GNU/Linux.

cat

Visualización del contenido de ficheros de texto.

cd

Cambio de directorio.

mkdir

Creación de directorios.

rmdir

Borrado de directorios.

gedit

Editor de textos sencillo.

cp

Copiar archivos.

rm

Borrar archivos.

mv

Mover archivos.

tar

Compresor de archivos.

ln

Creador de enlaces.

pwd

Informa del directorio en el que nos encontramos.

wc

Cuenta las palabras, líneas y caracteres del fichero que se le indique como argumento.

sort

Muestra ordenadamente, es decir, alfabéticamente, las líneas de un fichero.

find

Permite buscar un fichero en el sistema de archivos a partir de ciertos patrones de búsqueda. Por ejemplo: find . –name “nombreFichero” busca nombreFichero a partir del directorio actual indicado por el punto “.”.

locate


Para una búsqueda más rápida y sencilla simplemente teclea locate nombreFichero. Como paso previo debes actualizar la base de datos interna que utiliza con sudo updatedb (tardará un ratito).

grep

Busca patrones de textos en ficheros.

head

Permite mostrar solo las primeras líneas del fichero pasado como argumento.

tail

Muestra las últimas líneas de un fichero.

Sistema:

date

Muestra la fecha del sistema.

time

Visualiza la hora del sistema.

df


Muestra información sobre el espacio de nuestros discos: ocupado y libre. Utiliza df –H para una interpretación más sencilla de la salida (H Human Readable, para ser leído por las personas).

who


Enumera los usuarios que están en el momento actual en el sistema.

whoami

Informa qué usuario somos en un momento determinado (téngase en cuenta que podemos en una sesión ser por ejemplo joe y en ciertas ocasiones cambiar a root)

finger

Nos da información sobre un usuario del sistema.

reboot

Reinicia el sistema.

halt

Apaga el sistema.

hostname

Muestra el nombre de la máquina.

uptime

Hora actual, cantidad de tiempo trascurrido desde que se arrancó el sistema, la cantidad de usuarios trabajando en el sistema y la carga actual.

uname -a

Información sobre el sistema.

free -tm

Información sobre la cantidad de memoria disponible y usada.

ps

Muestra los procesos que el usuario está ejecutando. Utiliza ps aux para ver todos los procesos del sistema desde consola.

top

Información sobre el uso de cpu y memoria de los procesos del sistema.

cat /proc/cpuinfo

Información sobre el microprocesador.

cat /proc/filesystems

Información sobre los sistemas de archivos compilados en el kernel.

cat /proc/interrupts

Información sobre las interrupciones en uso.

cat /proc/dma

Información sobre dma en uso.

last

Información sobre los últimos usuarios que han accedido al sistema.

lsmod

Muestra los módulos de kernel que están cargados.

lsof

Muestra los archivos que utiliza cada proceso.

Redes:

ping

Permite comprobar si la máquina (IP) pasada como argumento es accesible.

netstat

Información sobre la conexión de red.

traceroute

Muestra el camino que se necesita recorrer para llegar a otra máquina, necesitarás instalar el paquete del mismo nombre.

ifconfig

Configuración de las interfaces de red.

iwconfig

Configuración de las interfaces inhalámbricas de red

route

Gestión de rutas IP, nos permite visualizar y manipular las tablas de encaminamiento.

iptraf

Muestra en consola todo el tráfico de red. Para monitorizar el tráfico debes instalar el paquete iptraf.

tcpdump

Vuelca el contenido del tráfico de red. Permite conocer el tráfico con origen y/o destino a/desde cierta máquina y/o puerto, tráfico Web (TCP y puerto 80), etc.

Administración:

su

Cambiar a modo administrador.

adduser usuario

Registra y crea una cuenta de usuario.

userdel usuario

Borra una cuenta de usuario.

groupadd grupo

Crea un nuevo grupo.

groupdel grupo

Borra un grupo.

passwd

Cambia la clave de acceso para el usuario actual.

more /etc/group

Grupos registrados en el sistema

more /etc/passwd

Fichero de claves del sistema.

chmod

Cambia los permisos de archivos.

chown

Cambia el propietario de un archivo.

chgrp

Cambia el grupo de un archivo.

umask

Establece los permisos habilitados para los archivos y directorios nuevos.

Miscelánea:

history

Muestra el historial de comandos introducidos por el usuario.

cal y calendar

Calendario (instalando el paquete ccal podemos tener un calendario más atractivo) y recordatorio de eventos (para algo más avanzado visita http://www.rainlendar.net).

fortune

Citas (instalando el paquete fortunes-es las dispondrás en español).

bc

Calculadora en modo texto.

whereis

Indica donde se encuentra el ejecutable, las fuentes y la página del manual de una orden.

Vemos en la figura un detalle a la izquierda de sendos calendarios con cal y ccal. A la derecha, hemos lanzado: uname –a (información del sistema), whoami (Who am I?, ¿Quién soy yo?, en el ejemplo, joe) y cat /proc/cpuinfo para que nos muestre información sobre las características de nuestro procesador, en el ejemplo un AMD Athlon Dual-Core.

En el ejemplo hemos utilizado una cuenta con el usuario joe, sin embargo, para determinadas operaciones (por ejemplo instalar o desinstalar programas, editar determinados ficheros de configuración, etc.) precisas tener permisos de administración.

Ubuntu nos permite que aunque sigamos siendo el mismo usuario (joe), podamos realizar una tarea administrativa usando el comando sudo. Imagínate que quieres editar el repositorio de paquetes, bastará con escribir en la consola sudo gedit (o kate) /etc/apt/sources.list, y en este momento nos pedirá nuestra contraseña.

Sin embargo, si esto te molesta en exceso (tener que teclear la contraseña para cada operación de administración), puedes evitarlo escribiendo en la consola export EDITOR=gedit (o kate) && sudo visudo. En la última línea que encuentres teclea: joe ALL=(ALL) NOPASSWD: ALL. Es más cómodo pero como imaginas mucho más inseguro.


9.3. Diversión en la consola

Bueno si te hemos abrumado con tantas órdenes prueba un tren en tu consola (sl) o la supervaca (apt-get moo). Estos son los famosos huevos de pascua.

Un huevo de pascua no es más que algo oculto y no documentado realizado por diversión o simplemente para dejar un sello o una marca personal.

Las órdenes cowsay y cowthink, muestra una vaca hablando (say) o pensando.

Debes instalar el paquete cowsay.

Observa que le hemos pasado como opción –f tux, esto índica que muestre en vez de una vaca un gracioso pingüino. Para conocer que dibujos puedes utilizar ejecuta cowsay –l: tortuga (turtle), dragon (dragon), etc.

Con fortunes podemos disponer de citas aleatorias. Precisas instalar el paquete fortunes, si las quieres en español fortunes-es y si no te importa que puedan ser ofensivas, fortunes-es-off. Así para mostrar un refrán en español basta con escribir fortune refranes.fortunes (consulta el directorio /usr/share/games/fortunes para saber cuantas galletas o cookies dispones, entiéndelo como repositorios de citas sobre distintos temas).

Para crear tus propias citas crea un fichero tuArchivoCookies con el formato:

Cita 1

%

Cita 2

%

..

Luego ejecuta strfile tuArchivoCookies y copias los ficheros (obtendrás otro fichero .dat) en /usr/share/games/fortunes. Existen páginas de Internet donde puedes descargar otras cookies por ejemplo:

http://www.splitbrain.org/_media/projects/fortunes/fortune-discworld.tgz http://www.splitbrain.org/_media/projects/fortunes/fortune-hitchhiker.tgz. Descomprime el archivo y copia discworld y discword.dat a /usr/share/games/fortunes, luego podrás invocarlo con: fortune discworld.

Observa que si después instalas el pez Wanda en el panel superior: Añadir al panel…, Pez, haciendo clic sobre él, obtendrás una de las galletas o cookies del sistema.

Si quieres tener una forma sencilla de controlar cumpleaños, citas o efemérides puedes utilizar calendar y/o birthday (requiere instalar el paquete birthday). La opción por defecto de calendar te muestra las efemérides del día y de los próximos días. Sin embargo, puedes añadir las propias desde /usr/share/calendar, eligiendo la que más se adapte a tus necesidades. Por ejemplo:

gedit /usr/share/calendar/calendar.computer y escribimos la línea: 03/05 Máximo y Javier comenzaron a publicar en Inforbook, 2007.

El formato de la línea es: mes/día efeméride, año. Para los cumpleaños, escribe en un fichero: gedit .birthdays, líneas con el siguiente formato:

Marta Núñez=18/05/2000, Marta Núñez nació el 18 de Mayo del 2000.

Si todo esto no te parece divertido, instálate el paquete bsdgames y podrás jugar en consola a:

1. hangman, el ahorcado.

2. tetris-bsd, el tetris en consola.

3. primes, listado de números primos.

4. go-fish, snake, trek y battlestar, juegos clásicos.

5. quiz, múltiples cuestionarios, por ejemplo, quiz male female, tienes que responder con el género femenino de la palabra que te planteen o quiz latin english, traducir una palabra del latín al inglés.

6. arithmetic es similar a quiz pero centrado en cálculos aritméticos sencillos.

7. Otros: pom (fases de la luna), boggle (sopa de letras), monop (Monopoly), etc.

Otra orden es figlet, su página oficial es http://www.figlet.org/, y el paquete a instalar es, como no podía ser de otra manera, figlet, podrás imprimir texto en letras grandes y con la tipografía seleccionada, así figlet -c -f digital Programa En Linux, muestra con la fuente digital (opción f, prueba también mini, lean, shadow, etc.) y centrado (opción c) el texto Programa en Linux.

Finalmente vamos a acabar con arte ASCII, instala el paquete bb y observa en la pantalla como se muestra sucesivas demos o imágenes generadas única y exclusivamente con caracteres ASCII.


9.4. Ejecución en segundo plano.

Cuando solicitamos una orden, el sistema la interpreta y la procesa, finalmente nos responde mostrándonos información o simplemente indicándonos el éxito de la operación. Durante todo este proceso, el terminal queda inutilizado a la espera de que el sistema operativo realice su función. Si esperamos que una tarea pueda demorarse en exceso, puede resultar cómodo realizar esa operación en segundo plano, lo que nos lleva a volver a tener la consola disponible para lanzar otra orden.

Un ejemplo clásico es buscar un archivo en el sistema de ficheros, bastaría con finalizar la orden con un ampersand “&”, así quedaría algo como:

find . -name ficheroPerdido.txt &

Busca un fichero con nombre “ficheroPerdido.txt” y devuelve el control al usuario.


Al ser GNU/Linux un sistema multitarea podemos ejecutar procesos en segundo plano. La sintaxis es la siguiente: orden &. Utiliza los procesos en segundo plano cuando no deseas esperar a que un programa acabe para lanzar otro.

Si utilizamos esta característica de GNU/Linux, la orden jobs nos resultará de gran utilidad pues nos permite conocer las órdenes lanzadas en segundo plano. Para matar un proceso en segundo plano que se acabe de lanzar basta utilizar la combinación: Ctrl + C, así como la orden:

kill -9 identificadorProceso


9.5. Editando archivos de texto.

Para editar ficheros en modo consola, podemos utilizar vi, vim, joe, nano o pico entre otros. Otra posibilidad para simplemente leer ficheros de textos son cat, more (permiten leer documentos en forma paginada, es decir nos lo presenta página a página, vamos avanzando con la tecla INTRO) o less (permite desplazarse hacia atrás y adelante con Avance Página y Retrocede Página). Si el archivo está comprimido podemos utilizar zcat, zmore o zless.

El editor vi es el editor por defecto que puedes encontrar en cualquier distribución de GNU/Linux. Para empezar a editar un fichero escribe la siguiente orden:

vi miFichero

Lo más importante a saber de vi es que tiene dos modos de trabajo:

* El modo de inserción que nos permite insertar texto.

* El modo de inserción de órdenes, para entrar en dicho modo pulsa la tecla Esc. Para volver al modo inserción se presiona la tecla I.

Veamos ahora las órdenes más importantes:

Comando

Descripción

:w

(Write). Guardamos los cambios.

:w miFichero

Guardar como miFichero.

:q

(Quit). Salir del editor.

:q!

Salir sin guardar los cambios.

:x

Equivale a guardar los cambios y salir.

x

Sin los dos puntos, borra el carácter sobre el que se encuentra el cursor.

dd

Borra la línea en la que se encuentra el cursor.

:número_línea

Salta a la línea que le indiquemos.

/cadena

Busca la cadena en el texto. Con n (Next) buscamos la siguiente ocurrencia de cadena.

El editor vi es difícil de aprender, pero como contrapartida es el editor más rápido que conocemos. Esto es muy práctico cuando el sistema va lento (“a pedales”) o cuando estamos accediendo remotamente a otro equipo y el ancho de banda no es el que quisiéramos.

Vim es una versión mejorada de vi, entre otras posibilidades permite trabajar con varios ficheros simultáneamente, por ejemplo podemos teclear:

vim -o miFichero1 miFichero2 miFichero3

Si quieres un tutor de Vim, instala el paquete vim-runtime y escribe en la consola vimtutor.

Véase en la figura, el uso de vim trabajando con varios ficheros simultáneamente:

Una aproximación distinta la tienes en emacs. Para instalarlo en Ubuntu precisas el metapaquete emacs y todas sus dependencias. Emacs tiene diferentes “modos” que permiten usar dicho editor para programar (C, C++, Python, Java, etc), enviar y recibir e-mails, crear una página Web, jugar, ejecutar comandos de shell, etc. Una buena referencia para emacs la encuentras en http://www.rpublica.net/emacs/emacs.html.

Para acceder al programa, escribe en la consola emacs miFichero, también lo puedes encontrar en K, Desarrollo (Kubuntu) o Aplicaciones, Programación (Ubuntu), Emacs 21 (X11).

Para cambiar por ejemplo al modo de edición HTML, presiona Alt y X simultáneamente (verás en el panel inferior M-x), escribe html-mode. Ahora podrás escribir código HTML, contando con la opción de coloreado sintáctico, accesos de menús y teclas rápidas para las etiquetas HTML, etc.

Observa que el menú ha cambiado contando con nuevas opciones en HTML y SGML que facilitan el diseño de nuestra página Web

Los diferentes elementos del código HTML tienen asignado distintos colores.

Además hemos lanzado la orden “ls” a través de Tools, Shell Command (véase el segundo panel).

Si no te gustan estos editores, la opción más sencilla de editar ficheros en GNU/Linux es escribiendo gedit (GNOME, Ubuntu) o kate (KDE, Kubuntu) miFichero. Estos editores son muy similares al bloc de notas de Windows.


9.6. Sé vago I: Terminación de palabra.

Ahora te comentaremos una serie de trucos que te resultarán de gran interés para no perder tiempo. El primero es que cuando estás escribiendo una orden, un fichero o una ruta puedes utilizar la tecla tabulador, Tab para completar la palabra. Además de la comodidad, te aseguras que el fichero está donde crees que está y que lo estás escribiendo correctamente.

A menudo cuando listas un fichero o realizas determinadas operaciones, la salida por consola es tan voluminosa, que sólo puedes ver la última parte de la información. Para subsanar este pequeño inconveniente puedes visualizar páginas anteriores mediante Shift (en otros teclados Mayús, Mayúsculas) + pgDn (RePág, Retrocede Página), así como volver a páginas posteriores mediante Shift + pgUp (AvPág, Avance Página).


9.7. Sé vago II: Utiliza el histórico de comandos.

Cada vez que escribimos una orden el sistema operativo guarda un histórico (como una lista de órdenes) de todas las últimas órdenes introducidas. Por lo que resulta muy cómodo en numerosas ocasiones tener acceso a ellas y no tenerlas que reescribir una y otra vez.

Para navegar por el histórico de comandos utilizamos las teclas que posicionan el cursor, las flecha arriba y abajo


9.8. Sé vago III: Cortar y pegar selecciones.

Si hay algo cómodo, sobre todo cuando hemos encontrado un truco o cualquier otra documentación por Internet, es copiar o cortar una selección desde nuestro navegador favorito (botón derecho del ratón, seleccionando Copiar) y tal cual pegarlo en la consola con el botón derecho del ratón, seleccionando Pegar o en el menú de la consola con Editar, Pegar.

¡La cantidad de líneas de código que nos hemos ahorrado escribir así!


9.9. Personalizando la consola: fuentes, tamaños, esquemas, etc.

La personalización de la consola es una tarea muy intuitiva, así en Ubuntu tenemos que seleccionar el menú Editar, opción Perfiles… Una vez aquí, puedes editar (Editar) los perfiles existentes, crear uno nuevo (Nuevo) o borrar uno existente (Borrar). En las figuras que te mostramos a continuación puedes ver estos detalles.

Observa como una vez elegido el perfil a editar dispones de una serie de pestañas para configurar el terminal a tu gusto: General, Título y comando, Colores, Efectos, etc.

Hagámosla por ejemplo transparente. Selecciona en la consola: Editar, Perfiles. Haz clic en Nuevo para crear un nuevo perfil. Dale un nombre, por ejemplo miTerminal y haz clic en Crear. Ahora puedes cambiar el tipo de letra, la forma del cursor (General), cambiar el título (Título y comando) o hacer la consola transparente (pestaña Fondo, opción Fondo Transparente). Por último, puedes hacer que este perfil sea el predeterminado. Te aconsejamos que tengas varios perfiles, a veces te interesará uno u otro en función del contexto.

En Kubuntu la consola denominada Konsole también tiene muchas opciones de configuración. Todas se encuentran en Preferencias. Así podemos modificar las fuentes en Preferencias, Fuentes (tipo de fuente, agrandar la fuente, etc.), el esquema (prueba por ejemplo blanco sobre negro), el tamaño de la consola, número de entradas en el historial, etc.

Una vez personalizado a nuestro antojo debemos hacer clic en Preferencias, Guardar como predeterminado. Así la próxima vez que ejecutemos el terminal tendremos la consola configurada a nuestro gusto.

Si instalamos el paquete mc, podemos seleccionar en el menú Sesión, Nuevo Midnight Commander. El programa mc es un gestor de archivos que permite realizar muchas operaciones de forma cómoda y sencilla, sobre todo si te habías habituado a él en los viejos tiempos del MS-DOS.

Podemos ver en la siguiente ilustración, un ejemplo de uso de mc:

Para profundizar en la personalización de la consola, tendrás que modificar el fichero .bashrc. Para ello debes editar el fichero /home/joe/.bashrc. Podrás por ejemplo cambiar el prompt.

El prompt es un texto que nos indica que el sistema operativo está listo para recibir órdenes y que aporta además información adicional, básicamente miUsuario@miMáquina:~$ en el ejemplo joe@joe-desktop: ~$.


Un simple vistazo al prompt nos aporta mucha información, nos permite conocer DÓNDE nos encontramos en el árbol de directorios (~ indica el directorio de joe, es decir /home/joe) y QUIÉN somos en un momento dado.

Para personalizar el prompt debemos modificar la variable de entorno PS1 de dicho fichero. El sistema operativo utiliza las variables de entorno para almacenar información que le es útil y necesaria para su funcionamiento.

Podemos cambiar las variables de entorno, por ejemplo el prompt en el fichero .bashrc, a algo como PS1="[\t]\u@\h:\w\$" y mostrará [hora_actual]usuario_actual@nombre_máquina:directorio_actual$.

Además vamos a añadir órdenes al final de dicho fichero. Estos comandos se ejecutarán cada vez que abras la consola, por ejemplo inserta al final del fichero la orden cmatrix (previa instalación del paquete del mismo nombre) y veremos cada vez que abramos la consola algo “tan chulo” como lo que se muestra en la figura. Con Ctrl + C lo paramos y podemos empezar a introducir órdenes.

Otra forma más útil de personalización de nuestra consola es utilizar alias. Un alias es una forma de renombrar una orden con determinada opciones y así adecuarla a tus preferencias. Por ejemplo, si quieres listar siempre en formato largo puedes crear un alias en dicho fichero de la siguiente forma: alias ll = 'ls -l'. Cada vez que teclees ll es como si escribieras ls –l. Por supuesto puedes hacer todas las combinaciones que desees de las órdenes y parámetros que uses con más frecuencia.


9.10. Otras consolas.

Por último, como no podía ser de otra manera, podemos utilizar distintas consolas. Existen en GNU/Linux muchas opciones: Yakuake, Tilda, Eterm, etc.

Yakuake cuenta con mucha aceptación por la comunidad de usuarios de GNU/Linux, está en el paquete yakuake, y se presenta con un estilo tipo Quake, es una consola que se despliega y pliega con la tecla F12. Otras opciones son: Tilda (alternativa en GNOME a Yakuake), Guake (permanece oculta hasta que pulsamos F12) y Terminator (permite dividir la consola en varias vistas: ratón derecho y selecciona Dividir horizontalmente). Precisas instalar los paquetes tilda, guake y terminator respectivamente.


9.11. Comodines, Redireccionamiento, Tuberías y Variables de entorno.

Los comodines nos permiten obviar cierta información que no conocemos o simplemente no la suministramos por comodidad. Por ejemplo si sabemos que existe un fichero que hemos llamando carta pero no sabemos su extensión podemos buscarlo utilizando la siguiente sintaxis:

find . -name carta*

El asterisco * sustituye a cualquier cosa o más técnicamente a un conjunto de 0 o más caracteres. El carácter interrogación “?” sustituye a un único carácter.

Por defecto las órdenes reciben la entrada del teclado y muestran los resultados en pantalla. Pero esto no tiene porqué ser siempre así, podemos redireccionar tanto la entrada estándar como la salida, incluso ambas simultáneamente.

Por ejemplo, si quieres visualizar los usuarios válidos del sistema ordenados alfabéticamente, bastará con la siguiente orden:

sort < /etc/passwd

La entrada a la orden sort no es el teclado sino el fichero passwd. Si queremos escribir en un fichero el calendario del año tecleamos:

cal -my > miCalendario

En este caso, la salida no se muestra por pantalla, se encuentra en miCalendario y puedes verla con cat miCalendario.

Por tuberías nos referimos a cuando la salida de una orden es la entrada a la siguiente orden. Un ejemplo clásico es cuando queremos saber el identificador de un proceso porque, por ejemplo, la aplicación ha dejado de responder y queremos matarla. Utilizamos dicho identificador para saber su identidad y poder así cazarla con:

kill -9 identificador

Bastará con teclear:

sudo ps -e | grep nombreAplicacion

Es decir buscamos con ps todos los procesos activos y mandamos esta salida no a la consola sino al comando grep, el cual mostrará por pantalla solo aquellas líneas (aquellos procesos) que tengan la cadena nombreAplicación.

Veamos algunos ejemplos más de lo que hemos aprendido:

1. Imagina que quieres que el terminal te diga hola (tienes que instalar el paquete festival, sintetizador de texto, alternativa libre al famoso Microsoft Agent), teclea:

echo “hola” | festival –tts

2. Solicitar un cálculo matemático por pantalla:

echo "(2+3)" / "(4-1)" | bc

echo "(2+3)" % "(4-1)" | bc

Devuelven 1 y 2, cociente y resto respectivamente de 5 y 3.

3. Otra opción de tubería es: fortune | cowthink, la salida de fortune, la galleta aleatoria, es el texto que mostrará nuestra simpática vaca.

Una variable se define en un lenguaje de programación, como una zona de memoria con nombre o identificador y un valor. Podemos utilizar variables también en GNU/Linux. El caso más interesante son las variables ya predefinidas por el sistema operativo. Algunas son:

* PATH, donde GNU/Linux busca los ejecutables.

* USER, usuario actual.

* EDITOR, editor por defecto.

* LANG, lenguaje.

* HOME, directorio del usuario actual.

* HOSTNAME, nombre de la máquina.

Para ver el valor de una variable de entorno se utiliza el comando:

echo $variable_de_entorno


9.12. Realizando distintas tareas en la consola.

Desde la consola podemos realizar todo tipo de tareas:

* Herramientas de compilación, depuración y gestión de proyectos: gcc, make, gdb, etc.

* Navegar por la Web: lynx, links, links2, w3c.

* Editar texto: vi, vim, joe, pico, nano, emacs, etc.

* Administrar archivos: mc.

* Reproducción de música: xmms2 o mplayer, así por ejemplo para escuchar la Cadena 100 escribe en la consola: mplayer -playlist http://www.cadena100.es/directo/directo.asx.



Habrá quien diga que estamos ya en el 2014 y que tenemos ordenadores lo suficientemente potentes como para que sigamos utilizando un reproductor multimedia en modo consola. Sin embargo, a menudo te será útil no desperdiciar recursos con programas gráficos, verdaderos devoradores de ciclos de reloj, mientras estás “picando código”. Estas herramientas son muy ligeras, flexibles y te permiten reducir la carga del sistema.

* Conversión de archivos multimedia: lame, mp32ogg (de mp3 a ogg), ffmpeg (p.e. ffmpeg –i videoYouTube.flv video.avi), timidity (consulta para más información la siguiente dirección: http://www.guia-ubuntu.org/index.php?title=Conversi%C3%B3n_de_formatos_multimedia).

* Visualizar documentos de Word o pdf: antiword, catdoc, pdftotext, pdftohtml.

* Acceso remoto: ssh, screen. Éste último permite atar y desatar conexiones remotas.

* Descarga de archivos: wget. Desde la consola escribe: wget direcciónFicheroRemoto y podrás descargarlo.

* Calendario personal: calendar y su evolución, remind.Escribe en /home/joe/.reminders una línea como: REM March 26 2009 MSG Tengo dentista a las 17.00. Significa que te recuerde el 26 de Marzo del 2009 que tienes consulta. Para simplificarnos la tarea podemos utilizar un front-end como wyrd (sudo apt-get install wyrd) para la consola o wxRemind. Obsérvese en la figura un detalle de wyrd.

Veamos como ejemplo una calculadora en consola, bc. Como has visto en el apartado anterior con bc podemos resolver cálculos sencillos. También puedes programar ejemplos más complejos, escribe sudo vi par.b para realizar un programa que solicite un número y nos diga si es par o impar.

print "Introduce un número\n"

numero=read()

if ((numero % 2) == 0)

print "Par"

if ((numero % 2) != 0)

print "Impar"

Para invocar dicho programa escribe en la consola: bc par.bc, puedes indicar con la opción q (quiet, silencioso) que no muestre la información de copyright o con l que utilice las librerías matemáticas predefinidas.