La más rápida y eficiente forma de realizar cambios en la configuración de tu computadora, instalarle software o trabajar en una máquina remota, es la línea de comandos. Mucha gente se espanta de la interfaz de línea de comandos (CLI) porque tienen la costumbre de utilizar la interfaz gráfica (CGI). Si nunca haz utilizado una CLI puede ser un poco desalentador aunque con un poco de práctica puedes encontrarlo mucho mas fácil.
La clave está en tomarlo con calma y practicar lo que vas aprendiendo. No intentes recordarlo todo, sólo utiliza lo que sabes y extiende tu conocimiento cuando sea necesario. Todo llega a su tiempo.
La línea de comandos es la manera mas poderosa de interactuar con Linux, pero si no la haz usado tu ruta de aprendizaje puede ser un poco difícil. La mejor estrategia es utilizar únicamente comandos básicos. No intentes de pronto hacer todo tu trabajo desde la línea de comandos. Aprende unos pocos comandos, úsalos y aumenta paulatinamente tu entendimiento de lo que puedes hacer para que luego extiendas tu vocabulario de comandos cuando lo necesites. En seguida apuntamos algunos comandos básicos con los que puedes comenzar.
No intentes aprenderlos todos de una sola vez. Elige algunos cuantos y practicalos.
| man |
| ls |
| cd |
| mkdir |
| mv |
| rm |
| locate / slocate |
| ping |
| cp |
| pwd |
| tab |
| ldconfig |
| ./configure |
| make |
| make install |
| tar |
| more |
| whereis |
Ahora vamos a echarle un vistazo a cada uno. Sientete libre de experimentar con estos comandos. Ten un poco de cuidado con lo que haces porque se pueden dañar tus archivos, folders y hasta el sistema operativo. Si existe alguna posibilidad de que accidentalmente puedas destruir algo con los siguientes ejercicios, te lo haremos saber.
Este es un buen comando para empezar porque nos permite ver y estudiar las páginas de ayuda de Linux. man es la abreviación de manual y si lo tecleas seguido de un espacio y luego el nombre de cualquier otro comando obtendrás una página de ayuda en la terminal que te mostrará una descripción de ese comando. Por ejemplo teclea esto:
[d:b] ~ # man ls [Enter]Lo anterior te mostrará en la terminal la información relacionada con el comando ls. Aunque el formato de esta página de ayuda puede parecerte un poco confusa, navégala con calma y no te preocupes, lo que necesitas estudiar bien es la descripción del comando, es decir, lo que hace. Para ver el resto de la página del manual presiona la barra espaciadora y para salir presiona la tecla q.
Intenta leer las páginas man de los otros comandos que enlistamos antes. Existe otra manera de ayuda en el sistema que funciona de la misma manera. En vez de teclear 'man', teclea info y luego el comando del que quieras obtener más información, tal y como se muestra a continuación:
[d:b] ~ # info ls [Enter]!Ahora puedes experimentar!
ls es el comando que puedes usar para listar el contenido del directorio en el que estás. Teclea este comando en una ventana de terminal y mira lo que obtendrás. Una de las características de los comandos de Linux y que es algo muy simple de hacer, es que puedes agregarles varios parámetros para refinar la manera en que utilizas cada comando. Usualmente estos parámetros se agregan al comando colocando un guión intermedio ( - ) directamente después del comando seguido del nombre del parámetro o su abreviación. Por ejemplo si yo tecleo lo siguiente
[d:b] ~ # ls -l [Enter]estoy pasándole el parámetro l al comando ls. El parámetro 'l' es la abreviación de 'long list' (lista extendida) y se refiere al tipo de formato en que la información se debe desplegar: de esta manera es que este parámetro ofrece más detalles que tan solo teclear el comando ls. Intenta estas dos formas y compara las diferencias.
Quizá ahora te preguntarás: ¿cómo sé cuales son los parámetros para cada comando?. La respuesta la puedes encontrar en las páginas 'man' para cada comando tal y como vimos antes.
Para el caso del comando ls, sugiero que te familiarizes con el formato usando solamente ls y también usando ls -al, ls -l, y ls -lh. !Continúa experimentando!
cd significa Change Directory (Cambiar Directorio) y es el comando más utilizado para navegar en el sistema de archivos de tu computadora. Para probarlo, teclea 'ls' para obtener la lista de todos los archivos y folders del directorio en el que estás ubicado. Luego intenta teclear 'ls' seguido del nombre de uno de los archivos de la lista; por ejemplo si existiera un archivo llamado 'mio.txt' puedo teclear:
[d:b] ~ # cd mio.txt [Enter]¡Esto muestra un error! ¿Porqué? Porque no puedes aplicar el cambio de directorio a un archivo. Es bueno intentar esto para que puedas entender que no puedes dañar nada si cometes errores usando el comando 'cd'. Para cambiarte o ir a un directorio tecleas 'cd' seguido del nombre del directorio al que quieres navegar. Si existiera un directorio llamado 'src' que apareciera listado cuando intentamos el comando 'ls', podríamos teclear:
[d:b] ~ # cd src [Enter]
Si esto fue exitoso, entonces la terminal no te mostrará ningún error. Intentalo con un directorio verdadero de tu computadora. Si te falla puede ser debido a que no tienes los permisos para entrar a ese directorio, escribiste mal el nombre del directorio, o que el directorio simplemente no existe.
Ahora unas palabras acerca del sistema de archivos de Linux. Si el sistema fue dispuesto adecuadamente para tí, generalmente estarás trabajando en tu directorio personal (home), el cual está localizado normalmente en su lugar correspondiente dentro del sistema de archivos de Linux. Para encontrar tu directorio personal teclea lo siguiente:
[d:b] ~ # cd / [Enter]Esto te ubicará en el directorio superior del sistema de archivos de tu computadora.
Como sabes, si ahora tecleamos 'ls' nos mostrará la lista de directorios de la computadora en su nivel más superior del sistema de archivos.
Aquí existen varios directorios importantes de los cuales el comando man hier te ofrecerá una descripción de su significado. Pero ahora tu necesitas estar mas interesado con el que se llama home. Para dirigirte a ese directorio podemos usar el comando 'cd' que aprendimos antes:
[d:b] ~ # cd home [Enter]Si tecleas ahora 'ls' obtendrás una lista de más directorios y quizá alguno de estos tenga el mismo nombre de tu nombre de usuario. Este es tu directorio personal o /home/ al cual hemos navegado usando un posicionamiento relativo. Es decir, si estoy en el directorio superior y tecleo 'cd home' entonces me ubicaré en el directorio donde se guardan todos los directorios personales de todos los usuarios.
Si yo estuviera en cualquiera otro lugar del sistema de archivos y tecleara 'cd home' obtendría un error. Si lo necesitas puedes usar rutas absolutas para dirigirte al directorio que quieras. Por ejemplo, si yo estuviera en alguna esquina oscura de mi sistema de archivos y necesitara rápidamente ir al directorio home, debería teclear:
[d:b] ~ # cd /home [Enter]Si necesito entrar a un directorio ubicado dentro del directorio home (digamos por ejemplo que tengo un directorio llamado 'juana'), podría teclear:
[d:b] ~ # cd /home/juana [Enter]
Este comando es la abreviación de Make Directory (Hacer Directorio) y lo utilizas para crear nuevos directorios. Para hacer eso, simplemente teclea 'mkdir' seguido del nombre del directorio que quieres crear:
[d:b] ~ # mkdir bliop [Enter]El comando anterior creará un directorio nuevo llamado 'bliop' en el directorio en el que estoy ubicado. Si ya existiera un directorio con este nombre, obtendría un error y la computadora no sustituiría el directorio existente. Experimenta creando algunos directorios.
Si estas perdido y no sabes en que lugar del sistema de archivos te encuentras, siempre puedes teclear pwd y el sistema te dirá donde estás ubicado. Este comando te muestra la ruta absoluta hacia donde estás. Por ejemplo, si estoy en mi directorio personal 'juana', la salida del comando pwd será:
[d:b] ~ # /home/juana [Enter]Experimenta cambiando los directorios con cd y luego tecleando pwd para ver donde estás.
Este comando es corto para Move (Mover) y como suena, te permite mover archivos dentro del sistema. Este comando es como las acciones de cortar y pegar de Mac y Windows. Para usar este comando tecléalo seguido del archivo que quieras mover (en su ruta absoluta o relativa incluyendo el nombre del archivo) y luego coloca el lugar hacia donde quieres mover el archivo (en su ruta absoluta o relativa). Por ejemplo, si quiero mover el archivo 'mio.txt' desde mi directorio actual hacia el directorio '/usr/bin' debería teclear lo siguiente:
[d:b] ~ # mv mio.txt /usr/bin [Enter]
Nota: No tengo que teclear el nombre del archivo en la ruta hacia donde lo voy a mover a menos de que además de moverlo de lugar quiera cambiarle el nombre. Si por ejemplo quiero mover el archivo 'mio.txt' y quiero cambiarle el nombre a 'tuyo.txt' debería teclear:
[d:b] ~ # mv mio.txt /usr/bin/tuyo.txt [Enter]Si solo quiero renombrar un archivo y no moverlo puedo usar también el comando 'mv' para cambiar el nombre del archivo sin moverlo:
[d:b] ~ # mv mio.txt tuyo.txt [Enter]
Observa que cuando usas el comando 'mv' estás moviendo y no copiando el archivo, por lo tanto el archivo será desplazado y no existirá en el lugar desde donde lo moviste. También tienes que tener cuidado con sustituir archivos accidentalmente: si por ejemplo yo muevo un archivo hacia un directorio que contiene otro con el mismo nombre, entonces el archivo que estoy moviendo sustituirá o sobre-escribirá a este archivo, y quizá podrías estar en problemas... por lo tanto tienes que ser cuidadoso con lo que tocas.
Por otra parte, tenemos este comando con el que deberías tener mucho cuidado. 'rm' significa Remove (Remover) y sirve precisamente para borrar un archivo o un directorio (y sus contenidos). Se utiliza tecleando 'rm' seguido del nombre del archivo que quieres eliminar; si quieres remover un directorio puedes usar el mismo comando utilizando el parámentro -R como se indica a continuación:
[d:b] ~ # rm -R nombre-del-directorio [Enter]donde 'nombre-del-directorio' es por supuesto el nombre del directorio que deseas remover. Para hacer esto puedes usar también 'rmdir' (que significa remove directory). Tienes que ser EXTRAMADAMENTE cuidadoso con estos comandos porque usarlos imprudentemente puede provocar el fin de tu sistema operativo.
Este comando te ayuda a encontrar archivos en tu sistema. La ubicación de todos los archivos en tu sistema se almacena en una base de datos que se actualiza periódicamente usando el comando updatedb. Para encontrar un archivo simplemente teclea 'locate' seguido de una parte del nombre del archivo o directorio que busques. Por ejemplo, si estoy buscando el archivo icecast.conf debería teclear:
[d:b] ~ # locate icecast.conf [Enter]Si no obtengo ningun resultado significa que el archivo no existe en mi sistema o que existe pero mi base de datos no sabe donde está. En este ultimo escenario podría teclear 'updatedb' y volverlo a intentar.
Con locate no puedes destruir nada así que experimenta tanto como quieras. Algunas veces updatedb puede tomar un poco de tiempo para ejecutarse si no lo has ejecutado recientemente o si tienes una máquina lenta. Este comando consume bastante recursos del CPU en máquinas lentas así que nunca lo uses si estás realizando alguna 'misión crítica'.
También disfrutarás experimentar con whereis, which y find para buscar y encontrar archivos en tu sistema.
Este es corto para... ¿adivinaste?.. copiar. Se usa como 'mv' con la única diferencia de que crea una copia dejando el archivo original sin cambios.
Normalmente no se incluye en los 10 comandos que mas necesitas conocer pero es muy útil si necesitas saber si estás en línea. El comando ping envía una petición a una computadora de la red y si esta computadora está conectada entonces responderá. Teclea 'ping' seguido de alguna URL que conozcas, por ejemplo sería buena idea intentar los siguiente:
[d:b] ~ # ping www.dyne.org [Enter]
Si la computadora recibe la petición obtendrás alguna información de regreso en la terminal, la cual se desplegará hasta que detengas el proceso ping tecleando ctrl + c.
Si no obtienes ninguna respuesta de ping entonces probablemente estás desconectado. Sin embargo hay que saber que algunas máquinas no responden a las peticiones ping por seguridad u otras razones, así que asegúrate saber si realmente la máquina a la que estás enviando las peticiones responde a ping.
También es que algunas conexiones a internet no permiten tráfico ping... por ejemplo mientras Jaromil estaba escribiendo la versión en inglés de este manual, se econtraba en un café internet en Riga donde tenían una conexión rápida pero no podía ejecutar ping; esto era debido quizá a que pensaban que sólo los hackers malvados usan ping y por lo tanto tenían algunas medidas paranoicas de seguridad que no le permitían hacer todas las cosas utiles en la red...
Tab no es un comando sino mas bien un atajo de teclado... cada teclado tiene una tecla tab y es muy útil en GNU/Linux. Quizá utilizaste alguna vez esta tecla para alinear palabras y aunque en GNU/Linux la podrás seguir utilizando para hacer eso, al utilizar tab en una terminal Linux ahorras tanto tiempo que cuando la domines la usarás todo el tiempo.
Básicamente la tecla tab sirve para completar automáticamente lo que escribes en la consola. Si por ejemplo qiero mover hacia algún lado el archivo 'dsjkdshdsdsjhds_ddsjw22.txt' mediante el comando 'mv' puedo teclear cada una de las letras del estúpido nombre de este archivo, o puedo teclear 'mv' (para 'moverlo') seguido de las primeras letras del nombre del archivo y luego presionar la tecla 'tab' que mágicamente completará el resto del nombre del archivo. Si el nombre del archivo no se completa significa que existen varios archivos (o directorios) que empiezan con estas pocas letras que he tecleado, por lo que podría teclear algunas letras mas del nombre del archivo y teclear tab nuevamente o ayudarme tecleando dos veces 'tab' y así me mostrará una lista de los archivos que comienzan con estas letras.
Tab es tu amigo, hay que usarlo mucho.
Al principio de este capítulo dijimos que existen algunos 'otros' comandos que es recomendable conocer, estos son:
| ldconfig |
| ./configure |
| make |
| make install |
| tar |
| more |
| whereis |
More se usa si quieres tener un mayor control de la salida en terminal de cualquier comando. Si por ejemplo estoy en un directorio que contiene 1000 archivos y tecleo 'ls' la salida del comando no se ajustará agradablemente a la pequeña ventana de mi terminal que la desplegará tan rápidamente que no me sirve. Para desplegarlo mas lentamente y poder leer la salida incluimos 'more', de esta manera:
[d:b] ~ # ls | more [Enter]Si yo uso esto en mi directorio con 1000 archivos obtengo como salida una página a la vez, para ver la página siguiente presiono la barra espaciadora; presionando 'q' termina 'more'. Muy bien, seguramente te estás preguntando qué es esa curiosa linea delgada en el comando anterior... bueno, pues eso es conocido como el comando pipe.
Pipe te permite combinar comandos para controlar el tipo de salida que obtienes, normalmente se utiliza para refinar un comando tal y como lo hacen los parámetros de comando. Por lo tanto cuando obtengas fluidez con estos comandos puedes escribir cosas que parecen ecuaciones pero que realmente son maneras de usar comandos generales... y pipe es fundamental para perfecionar tu eficiencia.