Qu es el Shell?
Cuando trabajamos en entornos grficos, la interfaz esta provista por ventanas, botones, barras, mens. Pero en un entorno de lnea de comandos la interfaz es brindada por un programa que interpreta los comandos, ejecuta las aplicaciones, gestiona la entrada y la salida. Este programa es llamado shell.
La lnea de comando
Es difcil lograr que el computador haga algo si no podemos interactuar con l y correr programas. Recuerdan que casi todo en mundo *nix es un archivo? Cada programa que intenten correr deber estar en algn lado dentro del disco duro. Para correr los programas debemos llamarlos por su nombre completo, es decir, hacer uso de la localizacin exacta del archivo dentro del filesystem (sistema de archivos) del computador a esto lo llamamos full path. Ahora la pregunta; Como es posible ejecutar aplicaciones y comandos tan solo colocando un nombre corto?
El PATH
La mayora de los comandos del sistema reposan en el directorio /bin ejemplo: /bin/su. Por qu no tenemos que usar todo el tiempo /bin/su para ejecutar el comando? Porque en la mayora de los shells existe una variable de entorno que indica un listado de posibles localizaciones para el programa que estemos pidiendo ejecutar. Existen dos PATHs (rutas) especiales . y .. El punto simboliza el directorio actual y el doble punto simboliza el directorio padre.
Los comodines
Facilitan las tareas administrativas, sobre todo para el trabajo en lotes. Ya que nos permiten referirnos a un conjunto de archivos de una forma fcil y rpida. ADVERTENCIA: Es necesario ser muy cuidadosos con ellos para no incluir casos no deseados.
Comodn: ?
? hace match (concuerda) con un caracter sencillo, si queremos por ejemplo buscar archivos de tres caracteres haremos:
nomar@minastirith:~$ ls ???
Comodn: *
Hace match con cualquier numero de caracteres incluyendo el caso vaco, es decir todo y nada. Si deseamos listar todos los archivos de un directorio haramos:
nomar@minastirith:~$ ls *
Si deseamos copiar todos los archivos con extensin txt al directorio /tmp haramos:
nomar@minastirith:~$ cp *.txt /tmp
Comodn: []
Permite acotar un conjunto de caracteres permitidos por ejemplo: [1-9] [1,2,4] [A,a] [a-z]. Para listar los archivos en directorio que comiencen con a A haramos:
nomar@minastirith:~$ ls [A,a]*
Si deseamos listar todos los archivos de logs syslog del 1 al 9 en el directorio /var/log hacemos:
nomar@minastirith:~$ ls /var/log/syslog.[1-9].gz
*http://www.linuxforums.org/forum/linuxprogrammingscripting/135009weirdnessbashwildcards.html
comando
nomar@minastirith:~$ ps aux | more nomar@minastirith:~$ ps aux | less La cosa comienza a ponerse buena cuando encadenamos
mltiple instrucciones!!!!
Variables de entorno
GNU/Linux es una bestia compleja. Con montones de programas que interactan los unos con los otros y con el usuario. Dichos programas requieren de opciones, muchas de las cuales ni siquiera estamos consientes de que existen. Y para ser honestos a nadie le gustara tener que estar pasando a cada programa un montn de opciones tales como: que tipo de terminal usamos, cmo se llama nuestra mquina, cmo debe lucir el prompt. Para mantener todas estas variables existe lo que se llama Entorno. El entorno mantiene guardadas estas opciones de manera que al ejecutar cualquier programa estas estn disponibles y de la misma forma el programa puede poner sus opciones dentro del entorno para que se mantengan a lo largo de la ejecucin.
Variables de entorno
Es posible ver las variables del entorno haciendo uso del comando set env. Para incluir una variable en el entorno debemos hacer lo siguiente:
nomar@minastirith:~$ VARIABLE=valor nomar@minastirith:~$ export VARIABLE=valor
Variables de entorno
Si deseamos ver el valor de una variable hacemos:
nomar@minastirith:~$ echo $VARIABLE
Terminales Virtuales
Suponga que esta en medio de la ejecucin de un programa y desea hacer algo mas. Como lo hace? Deja todo y se pone a hacerlo? Se supone que es un sistema multitareas, no? La idea tampoco es poner mas teclados, ratones y monitores. Bueno haciendo uso de las teclas Alt+F1 a Alt+F6 tenemos seis terminales virtuales con los cuales trabajar. Si estamos en entorno grfico le corresponde Alt+F7
Terminales Virtuales
Qu pasa si estamos conectados, digamos usando ssh? Perderamos la facilidad de los Alt+F'algo'? No, podemos hacer uso del programa llamado screen que nos provee de tantos terminales virtuales como necesitemos. Con el bono de que si la conexin se corta screen permanece activo y lo que hubisemos estado haciendo no se pierde en lo absoluto.
Terminales Virtuales
Algunos comandos de screen: Ctrl+A+C crea un nuevo terminal. Ctrl+A+P mueve el foco al terminal previo. Ctrl+A+N mueve el foco al siguiente terminal. Ctrl+A+D hace dettach de la sesin screen y dejar corriendo la sesin en el fondo. Si deseamos reanudar la sesin con screen -r podemos ver el listado de sesiones activas y con screen -r y el nmero de sesin continuamos con nuestro trabajo.
Consultar
http://www.slackware-es.com/
Captulo 8
http://www.debian.org/doc/manuals/debian-reference/