Banner principal

jueves, 2 de febrero de 2012

Terminal, ese espacio negro y vacio....



Hablando bash, o lo que es lo mismo manejar la temida terminal

Hace tiempo que no ponía nada, la verdad que con los pasos que he explicado, ya se puede empezar tranquilamente con Linux, ya lo tenéis casi todo resuelto.

Pero a veces, la podemos cagar y la liamos parda, para ello solemos recurrir a Internet a ver si en algún foro nos pueden ayudar. Y seguramente la encontraremos, y casi todo lo que tendremos que hacer sea en terminal, pero no os alarméis, será solo copiar y pegar, y resuelto.

Pero a veces, si nos gusta un poco la informática, nos gusta conocer un poco más profundamente el cacharro que tenemos delante, he ahí el motivo de creación de este post.

La terminal es la más poderosa herramienta de gestión de nuestro SO, con ella podemos hacer todo, TODO. Desde cargarnos el SO, hasta hacer nuestros propios y pequeños programas, y ante tal poder es normal sentir un poco de miedo. "Todo poder conlleva una responsabilidad" esta frase de Spiderman :P Tiene su claro significado aquí.
Los programadores de las distribuciones de Linux han pensado en todo y han puesto un par de seguros para que no te cargues el SO a la primera de cambio.

1.- Para hacer algo de administración has de ser "sudo" (superuser do), eso se hace escribiendo sudo en la terminal, nos pedirá la clave y una vez introducida seremos administradores TOTALES durante 15m (se puede cambiar).
2.- Al usar Linux nos daremos cuenta de que realmente solo deberíamos funcionar con la carpeta "home" que es la nuestra, y donde los programas instalarán las opciones, no donde se instalan si no donde puedes modificarlos sin quitarlos y que dejen de funcionar.

Y ya está, que como bien se dice ya somo mayorcitos.

* Recomendación, haceros una copia de seguridad de vuestra carpeta "home" en algún HDD (disco duro) externo. Por aquello de no perder la música, las fotos, documentos y como no el porno XD no vayamos a cargarnos el SO.

Al igual que como se explicó en otros posts que en Linux dispones de varios entornos gráficos (escritorios), lo mismo ocurre con las terminales, por norma general es casi toda distribución de Linux dispondremos de 4 terminales activadas y listas para funcionar. Control+Alt y una tecla de función (F1 a F4).

Una vez explicado esto, ya solo queda empezar con unas pequeñas directrices de la terminal.

La terminal, ese espacio negro en el cual está a la espera de nuestras órdenes. Muerto y sin vida, hay que decir que es muy quisquilloso.

- Diferencia entre mayúsculas y minúsculas, así que dos nombres pueden ser "fichero" y "Fichero", y ser completamente distintos.
- Errores de escritura, tales como que falte un carácter o algún error de falta de símbolo, nos dará "orden no encontrada"

Una vez dicho esto, ya sabemos que con Terminal hemos de fijarnos un poco en lo que escribimos.

Anteriormente puse que para poner comandos con categoría superusuario (administrador) solo había que poner "sudo" y después la clave. Esto está bien cuando realizamos cambios importantes en el sistema, o cuando pretendemos instalar/desisntalar algo. El porque lo hace después de una instalación/desinstalación es por que los programas cargan librerías que muchas se comparten y el quitarlas puede afectar al sistema. Para la mayoría de los programas (90%) no ocurre nada, y estos procesos no tienen ningún problema ya que incluyen sus propias librerías, así evitando que el resto se vean afectadas.

Para el resto de funciones que podemos usar, no nos pedirá que pongamos clave, sobre todo si trabajamos en "home".

Para abrir terminal, vamos al "dash" y:



Funciones de las más habituales en Terminal:

cd    Por ejemplo, cd /home/Softonic  Con este comando entras al subdirectorio Softonic dentro del directorio home. Con cd .. sales de Softonic y te quedas en /home, y con cd . actualizas el directorio, útil sobre todo en carpetas de red.

ls    Muestra el contenido de una carpeta o directorio con distintos colores, según sus propiedades. Obtendréis el mismo resultado con dir pero sin la combinación de colores.

rm    Ejemplo: rm softonic08.pdf  Elimina el archivo con ese nombre, siempre y cuando os encontréis en su carpeta correspondiente. También podéis escribir su ruta para borrarlo desde otra ubicación, como rm /home/softonic/softonic08.pdf

cp    cp softonic08.pdf /home/softonic/documentos/softonic08-2.pdf  Copia un archivo a otra ubicación. Si no especificáis la ruta de directorios y sólo escribís cp softonic08.pdf, creará una copia con ese nombre en la carpeta del original.

mv    Funciona igual que el comando anterior, pero moviendo el fichero en lugar de copiarlo.

rmdir    rmdir /home/softonic/carpeta2  Igual que rm, pero en este caso elimina un directorio o carpeta.

Una ayuda muy interesante, para no machacarnos a escribir lineas larguísimas de código es que con el tabulador podéis ahorraros el escribir el nombre completo. Si escribes sof y le das al tabulador, aparecerá softonic en caso que tengas una carpeta con ese nombre. Y así con los nombres de archivos.

kill    Si se os ha colgado una aplicación, podéis cerrarla desde el Terminal. Lo primero que necesitáis es averiguar su número PID con el comando ps aux. Os aparecerá una lista con todos los procesos. Una vez tengáis el número del proceso a cerrar, tecleáis kill y el número en cuestión y se cerrará su ventana. Esto mismo se puede hacer en entorno gráfico abriendo el "dash" y escribir monitor de sistema, es como el administrador de tareas de Windows.

Man Necesitáis ayuda con algún comando?? Pues nada, escribes "man + comando" y te aparecerá un bonito manual de como se usa y los modificadores correspondientes, eso sí, en modo texto. Se pueden poner en castellano "sudo apt-get install manpages-es manpages-es-extra" teneís que activar repositorios Multiverse, eso se explica aquí (poner enlace a como cambiar los repositorios)

Find Es quizás la herramienta de búsqueda más potente que he visto, Para usar Find hay tres tipos de argumentos: opciones, tests y acciones. La primera nos permite modificar cómo va a buscar, la segunda qué va a buscar y la tercera qué va a hacer con lo que encuentre. No os asustéis, no es tan difícil como parece. Por ejemplo, si queremos buscar un archivo que se llame “pepito” en nuestro directorio HOME, el comando a usar sería find /home/usuario -name pepito. Después podemos complicarlo un poco más. Por ejemplo, podemos añadir -executable para que sólo muestre archivos con el bit ejecutable, -mtime -k para que sólo busque entre los que han sido modificados hace k días o menos, o -delete para que borre los archivos que encuentre.

Como decía antes, la terminal de Linux nos puede salvar de un apuro. Si se nos ha colgado el sistema gráfico y la combinación Control+Alt+Backspace no funciona, podemos reiniciarlo gracias a la consola.

El truco está en las consolas virtuales de Linux. Pulsando Control+Alt y una tecla de función accederéis a una terminal. Desde ahí podéis entrar con vuestro usuario y contraseña y tratar de resolver el problema. Por ejemplo, podéis guardar algunos archivos que no hubieseis guardado o cerrar el programa que creéis que está bloqueando el sistema. También podéis reiniciar el entorno gráfico matando el proceso X.org (killall Xorg) y volviéndolo a iniciar con kdm o gdm según estéis en KDE o GNOME.

Alguna vez os tocará. Un programa antiguo, no empaquetado para vuestra distribución… Tarde o temprano tendréis en vuestras manos un montón de archivos de código que tendréis que compilar para hacer funcionar el programa. Tranquilos, no os asustéis. Esto es tan fácil como ejecutar tres comandos en la terminal (normalmente).

Los comandos suelen ser ./configure && make && sudo make install. Así de sencillo. Aun así no os fiéis de esto y leed siempre el archivo INSTALL que viene en el código y que os dice cómo compilar el código.

Un resumen de los más usados.
cd directorio Ir al directorio.
ls Muestra los contenidos del directorio.
pwd Devuelve el directorio actual.
rm archivo Borra archivo.
rm -r carpeta Borra carpeta.
mv archivo destino Mueve archivo a destino.
cp archivo destino Mueve archivo a destino.
mkdir carpeta Crea una carpeta
nano archivo Edita archivo en la consola.
find directorio [opciones] [tests] [acciones] Busca en directorio archivos que cumplan [tests] y hace lo que indiquen [acciones]
man comando Muestra la ayuda e instrucciones de comando
comando --help Ayuda breve de comando.
killall nombredeproceso Mata a todos los procesos llamados nombredeproceso
comando1 && comando2 Ejecuta comando1 y si no da error, ejecuta después comando2
comando1; comando2 Ejecuta comando1 y después comando2.
comando1 | comando2 Manda la salida de comando1 a comando2.
comando1 | grep palabra Muestra sólo las líneas de salida de comando1 que contienen palabra.
comando > archivo Guarda la salida de comando en archivo
comando | tee archivo Guarda la salida de comando en archivo y la muestra por la terminal a la vez.
ifup -a / ifdown -a Habilita/deshabilita todas las conexiones de red (requiere root)
mount disco puntodemontaje Monta disco en puntodemontaje (requiere root).
umount disco/puntodemontaje Desmonta disco o puntodemontaje (requiere root).
sudo comando Ejecuta comando con permisos de administrador.
su / sudo -i Entra en modo root permanente.
Control+Alt+F x Salta a la terminal virtual X.
fuser archivo Muestra qué procesos están usando archivo.
fuser -k archivo Muestra qué procesos están usando archivo y los mata.
$( comando ) Se sustituye al ejecutar por la salida de comando.

Atajos de teclado para el Terminal

No todo son comandos en el Terminal de Linux. También pueden usarse combinaciones de teclas para introducir comandos de una manera más ágil. Estos son los más conocidos.

Ctrl + A = Mueve el cursor al principio de línea

Ctrl + E = Mueve el cursor al final de línea

Ctrl + C = Mata el proceso que se ha iniciado desde ese Terminal

Ctrl + U = Elimina la línea donde está el cursor

Alt + F = Mueve el cursor una palabra hacia adelante

Alt + B = Mueve el cursor una palabra hacia atrás

Ctrl + W = Elimina la palabra delante del cursor

Ctrl + L = Borra todo el contenido del Terminal

Shift + Ctrl + C = Copia el fragmento seleccionado al portapapeles

Shift + Ctrl + V (o Shift + Insert) = Pega en la línea de comandos el contenido del portapapeles

Flecha Arriba / Abajo = Recupera comandos escritos con anterioridad

Con esto ya podéis haceros una idea de la potencia de terminal, para el siguiente post, pondré el cómo administrar el SO desde entorno gráfico, un poco más lento que terminal, pero igual de efectivo.


Un ejemplo de lo chulo que puede quedar la terminal integrado en el escritorio.

Esta fuente se ha usado como inspiración para crear está entrada.

Saludos.