Sistemas Operativos‎ > ‎GNU/Linux‎ > ‎

El intérprete de comandos

[Este artículo es un borrador]

¿Qué es el Intérprete de comandos o Shell ?

Según la Wikipedia  (La Enciclopedia Libre: ww.wikipedia.org) una shell es:
“Parte fundamental de un sistema operativo encargada de ejecutar las órdenes básicas para el manejo del sistema. También se denomina shell. Suelen incorporan características tales como control de procesos, redirección de entrada/salida y un lenguaje de órdenes para escribir programas por lotes o (scripts)”.
 
Vaalee...... Pues en cristiano, es un sitio donde tú pones unas instrucciones, que son luego interpretadas por el interprete de comandos (ya va encajando todo :-P)  y que te permiten realizar determinadas tareas, ya sea por ejemplo borrar un archivo o instalar un programa. Esta claro ¿no?
Para ver una shell cuando estamos en un escritorio, debemos utilizar una de las diferentes terminales que tenemos. A mi personalmente me gusta más el “GNOME-Terminal”. Esto lo digo porque, por ejemplo, para copiar y pegar algo, simplemente tienes que seleccionar con el ratón, presionar cntrl+shift (la flechita)+C, y luego para pegar cntrl+shift+v. Otras terminales, como la de KDE para copiar y pegar tienen un sistema en mi opinión más incomodo, y para una persona que viene de WS le será mas fácil pulsar una tecla más (shift) para hacer lo mismo que hacía antes(es decir, cntrl+C y cntrl+V).
Una cosa muy importante a tener en cuenta es que los sistemas Linux son “Case-Sensitive”, es decir, que diferencian entre mayúsculas y minúsculas. Por lo tanto, no es lo mismo un archivo llamado “hola.txt” que “Hola.txt” que “HoLa.TxT”. Recordad bien esto, porque el olvidarlo os puede provocar muchos dolores de cabeza, creedme 

Esto es un “shell prompt” 



es decir, una “solicitud de comandos”. Vamos, el sitio donde nos está pidiendo que le demos órdenes (instrucciones). El prompt está compuesto por “nombre de usuario”, @ “nombre de la máquina”, “:” y en caso de ser un usuario normal “$”, pero si eres root pues “#”. La “~” significa que estás en el directorio “home” de tu usuario. Antes dije que utilizar la línea de comandos es como mantener una conversación, pues bien, aquí es donde el ordenador te esta diciendo “Dime, que te escucho”
Otra cosa a tener en cuenta es que a los comandos que se ponen en la shell, se les pueden añadir opciones. La manera de hacer esto es mediante un guión (“-”) y una letra. La letra representará la opción. Podemos saber las opciones que tiene un comando ya sea bien consultando la documentación (“man comando”) o escribiendo el comando y “-h” o “--help), con lo que casi siempre se nos enseñará un resumen del man.
Por supuesto, lo que hacemos en una shell lo podemos hacer en el entorno gráfico (escritorio), pero a mi por lo menos algunas tareas me resultan más fáciles utilizando la shell, y seguro que a ti también una vez te acostumbres, ya que creo que a todos nos es más fácil decir “Ordenador, instálame el messenger” que tener que abrir 4 ventanas para instalarlo y darle a “Siguiente, S
iguiente, Siguiente”.

Comandos Comunes en una Shell

A continuación os voy a poner los comandos más comunes y una explicación breve


cd


Nos permite cambiar directorio (Change Directory). Así por ejemplo si estamos en “/” y queremos movernos a la carpeta “home”, ponemos “cd home”. Imaginemos que en “home” tenemos las carpetas “pedro”, “juan” y “pepe”. Si estuviéramos en “/” para movernos hasta “juan” deberíamos hacer “cd home” y luego “cd juan”.

Para ahorrarnos esto, podemos utilizar nombres absolutos, es decir, la ruta completa desde “/”. Por lo tanto, si estamos en “/” y queremos ir a “juan”, pues hacemos “cd /home/juan”. 
Para movernos hacia atrás, se utiliza “cd ..”. Si estamos en “/home/juan” y queremos volver a “/home”, pues escribiremos “cd ..”, así de fácil.

ls

Lista los contenidos del directorio en el que estás (LiSt). Si estuvieras en “/home” y haces un “ls”, el resultado sería “juan pedro pepe”, es decir, lo que hay adentro de “/home”. Si en juan hubiera un directorio llamado “documentos” y un vídeo llamado “hola.mpg”, si hacemos un “ls” en “juan” obtendríamos este resultado: “Documentos hola.mpg”. Con esto quiero decir que nos enseña todo lo que hay, no solo los directorios (excepto los ocultos claro). 
Si somos un usuario normal, nos diferenciará entre directorios y otros ficheros mediante diferentes colores. Para ver los ocultos le pasamos el comando “-a”. 
Así, si tenemos un directorio oculto en “/home” llamado “.algo”, al hacer “ls” sin más no lo vemos, pero si hacemos “ls -a” nos muestra “.algo juan pedro pepe”.

cp


Copia archivos de un origen a un destino (CoPy). Se utiliza mediante la sintaxis “cp” + “opción” + “origen” + “destino” (“+” significa espacio”). 
Por ejemplo, para copiar el archivo “hola.mpg” a “/home/pedro” haremos “cp hola.mpg /home/pedro”. Como vemos, hemos utilizado un nombre absoluto. Si hubiéramos estado en “/home”, podríamos haber dicho “cp juan/hola.mpg pedro”, o desde el root (“/ “) “cp /home/juan/hola.mpg /home/pedro/”. 
En el proceso de copiar, podemos cambiarle el nombre al archivo destino. Así pues, si queremos cambiar “hola.mpg” a “hello.mpg” cuando esté en pedro, haríamos “cp /home/juan/hola.mpg /home/pedro/hello.mpg”. 

Para copiar un directorio, debemos poner la opción “-R” (nótense las mayúsculas, no es lo miso que “-r”). Por ejemplo, “cp -R /home/juan /home/pedro”, lo cual copiaría la carpeta “juan” adentro de “pedro” y todo lo que hubiera adentro de “juan”.

mv 

Renombra o mueve un archivo (MoVe). Es como el “cp” solo que no solo hace una copia, sino que también borra el origen. La segunda cosa que se puede hacer con este comando es renombrar un archivo (no me preguntéis por qué, porque me parece una ida de pinza de los programadores).
Así, si queremos renombrar el archivo “hola.mpg” a “hello.mpg” haríamos “mv hola.mpg hello.mpg”.

rm

Borra archivos o directorios (ReMove). Para borrar el archivo “hola.mpg” haríamos “rm hola.mpg” o podemos utilizar el nombre absoluto “rm /home/juan/hola.mpg”.
Para borrar un directorio le añadimos la opción “-r”. Así, para borrar el directorio “juan” haríamos “rm -r juan” o “rm -r /home/juan.

mkdir

Crea un directorio (MaKDIRectory). Para crear el directorio “fotos” haríamos “mkdir fotos” o “mkdir /home/juan/fotos”.

more

Este comando lista el contenido de un archivo página por página. Así por ejemplo si tuviéramos un archivo “.txt” (de texto) pues nos enseñaría página por página los contenidos, y nosotros presionando espacio iríamos pasando de forma que pudiéramos ver todo.

pwd

Este comando se utiliza para enseñar el path (camino, sitio) donde se encuentra un programa. Por ejemplo, que hemos instalado el amsn y ¿no sabemos donde está? No problem, “whereis amsn” y nos sale “amsn: /usr/bin/amsn”, por tanto, se encuentra en “/usr/bin/amsn”.

Las Pipes (tuberías) 

Como su propio nombre indica, las pipes son tuberías que sirven para enlazar un lado con otro (una entrada, y una salida). Es decir, que mediante las tuberías podemos enlazar, por ejemplo, la salida de un comando con la entrada de otro. De esta manera lo que salga del comando 1 se utilizaría como la entrada del otro comando:

ENTRADA COMANDO 1 --> SALIDA -->TUBERÍA--> ENTRADA COMANDO 2--> SALIDA

Espero que quede claro que la salida de un programa es la entrada del otro. Pues bien, diversos sistemas operativos entre los que se encuentra Linux proporcionan una herramienta para hacer esto: Las pipes (tuberías) cuyo símbolo es “|” (barra vertical, alt gr + 1 en un teclado español)

Por ejemplo: El comando “ls” nos lista todos los archivos de un directorio, y el comando “more” nos muestra página a página el contenido de un archivo. Por lo que si queremos unir los dos, es decir, que nos muestre la lista de todos los archivos de un directorio página a página, pues teclearíamos “ls | more”. 

Referencias


ą
braulio wiki,
9 oct 2010, 14:56
Comments