20 octubre 2014

Introducción al Terminal.

   Muchas de las acciones o tareas que hasta ahora hemos realizado con el Gestor de software o Synaptic se pueden realizar de manera no gráfica, a través de comandos y desde el llamado Terminal.
   Linux Mint, Ubuntu, Kubuntu, Debian y el resto de las distribuciones que se os puedan ocurrir, disponen de la posibilidad de administrar el sistema a través de una interfaz no gráfica, de texto a través de comandos. El interprete de comandos, en ingles shell, es el programa encargado de leer los comandos, traducirlos a lenguaje máquina (interprete), para que el sistema lo entienda y ejecute las instrucciones. Es un interfaz que funciona en modo texto entre el núcleo de Linux y los usuarios o las aplicaciones, que también pueden enviar instrucciones al shell.



   Hay varios interpretes de comandos: dash (Debian Almquist Shell), csh (C Shell), y el que utilizamos nosotros, bash (Bourne Again Shell).
    El interprete de comandos (shell), funciona en un terminal. Espera a que escribamos los comandos, los interpreta, ejecuta y visualiza los resultados en el mismo lugar. Y para ello, para escribir los comandos y visualizar los resultados utilizamos un programa llamado Terminal. Podemos acceder a él haciendo clic en el icono que se encuentra en la parte inferior del panel:

    También podemos abrir Terminal con la combinación de teclas: Ctrl + Alt + T

Aquí lo tenemos:


   Puede ser que a algunos de vosotros no os aparezca la barra de menús de la ventana de Terminal. Tiene fácil solución:

 1º Abrimos terminal, haciendo clic en el icono del panel o pulsado las teclas Ctrl + Alt + T, aparecerá la ventana de Terminal.
2º Con el cursor sobre la ventana, hacemos clic con el botón derecho del ratón y aparecerá esta ventana desplegable:

   La primera línea que aparece, se denomina línea de comandos o prompt. Vamos a verla con más detenimiento:
  • jose: Es el nombre de conexión o login del usuario que actualmente está conectado al terminal
  • @:La arroba es un carácter de separación.
  • jose-Aspire-E1-572: El el nombre de la maquina.
  • ~: Este símbolo se denomina también virguilla, cuando estamos en el directorio /home/usuario, utiliza este símbolo como abreviatura.
  • $: El signo $ nos indica que como usuarios no tenemos privilegio alguno. Si estuviesemos actuando como administrador root aparecería el signo #, para indicarnos que disponemos de todos los privilegios del administrador root. Ser administrador root o superusuario entraña cierto peligro, ya que el sistema admitirá cualquier comando sin rechistar, no nos pedirá la clave para ejecutar, simplemente nos deja hacer y deshacer a nuestro antojo. Si no se tiene demasiada experiencia, es preferible actuar como usuario sin privilegios. 
   El rectángulo blanco que parpadea representa el cursor, conforme vayamos escribiendo se irá desplazando hacia la derecha.
   Con las teclas de cursor izquierda y derecha nos podemos mover por la línea que hemos escrito. La tecla Supr y Bacspace también funcionan como en un editor de texto, borrando caracteres.
   La línea de comandos guarda un histórico de los comandos que hemos utilizado en una sesión, con la tecla de cursor arriba, irán apareciendo los comandos que hemos introducido, desde el más reciente hasta el primero.
  
   Para introducir un comando tan sólo tenemos que escribirlo y una vez terminado pulsar la tecla Intro. A través de la misma ventana nos devolverá los resultados.
   Vamos a escribir el comando calendar:
   $ calendar   

   Como veís, al ejecutar el comando calendar, nos ofrece información histórica sobre los principales eventos ocurridos hoy (día 20 de octubre) y mañana (día 21 de octubre). 
   Si queremos limpiar la pantalla podemos utilizar el comando clear. Escribimos:
   $ clear  
    La información desaparecerá de la pantalla, quedando el prompt como la primera línea de la ventana.
   Si ahora pulsáis la tecla cursor arriba, veréis como aparece el histórico de los comandos que hemos utilizado.
   Para salir del terminal podemos cerrar la ventana, como en cualquier otra aplicación, o escribir el comando exit, Terminal cerrará su ventana.

   Este programa, Terminal, es un programa en modo gráfico, podéis ver que la ventana actúa como la de cualquier programa que utilicemos.
   Existe terminales en modo texto, abrirlos supone que nos salgamos del modo gráfico. Precisamente estos terminales son útiles cuando tenemos problemas con nuestro interfaz gráfico. Para pasar a estos terminales utilizaremos las teclas: Ctrl + Alt + (F1 al F6), lo que nos permite abrir hasta 6 terminales. Para volver al modo gráfico tendremos que hacerlo con la combinación:
Ctrl + Alt + F7 (puede ser, en ocasiones, F8). Al acceder a ellos nos pedirá el login (nombre de usuario) y a continuación la contraseña.
   Cuando trabajamos con Terminal (gráfico), podíamos salir de la aplicación con el comando exit, con estos terminales, al ejecutar el comando exit salimos de la sesión, nos volverá a pedir el login y la contraseña (password), pero continuaremos en ellos. Insisto, para volver al modo gráfico: Ctrl + Alt+ F7, es la combinación de teclas que hay que utilizar.
   Mi recomendación es que, si nada lo impide, utilicéis el programa Terminal.

   El sistema distingue entre mayúsculas y minúsculas. Si escribimos calendar el sistema ejecutará este comando, sin embargo si escribimos Calendar o CALENDAR, el sistema nos informará de que no ha encontrado la orden.

Sintaxis de los comandos

   El principal requisito es que el comando sea correctamente escrito, pero en muchas ocasiones el comando, para ejecutarse, requiere de más información. La sintaxis general para la escritura de estas instrucciones es:
comando [parámetros] [argumentos]
   Con un comando/instrucción puede darse:
  • Que el comando no tenga parámetros o argumentos, en ese caso se ejecutará por defecto, como está programado.
  • Que tenga parámetros y/o argumentos, y que pueda ejecutarse sin ellos, se ejecutará como en el punto anterior, como está programado por defecto.
  • Que tenga parámetros y/o argumentos y los requiera para ejecutarse. En este caso, si no los añadimos al comando se producirá un error.
   Los parámetros son opciones del comando que afectan al modo de ejecución del mismo. Dependiendo del parámetro utilizado el comando actúa de una forma determinada.
   Los argumentos definen sobre qué cosa debe ejecutar el comando su acción: un fichero, un dispositivo, un directorio, un número, etcétera.

   Para conocer los posibles parámetros y argumentos de un comando tenemos, curiosamente, el comando man (manual de instrucciones). Este comando nos documenta sobre la función que ejecuta un comando y sus posibles parámetros y argumentos.
   Anteriormente hemos utilizado el comando calendar, vamos a ver, utilizando el comando man, que otras posibilidades existen para este comando. Abriremos nuestro Terminal y ejecutaremos:
   man calendar
   Obtenemos este resultado:
  
   Aquí tenéis una descripción del comando y sus parámetros. El apartado DESCRIPTION, se describe como una utilidad que comprueba en el directorio especificado por variable CALENDAR_DIR un archivo llamado calendar y muestra líneas que comienzan con la fecha de hoy o de mañana. Lo viernes, se muestran eventos desde el viernes hasta el lunes.
    Efectivamente el comando calender, por defecto muestra los eventos que han sucedido en la fecha de hoy de mañana a lo largo del tiempo. Hoy, por ejemplo, 22 de octubre podemos comprobar que Franz Liszt nació en 1881, Pablo Casals murió en Puerto Rico, en el año 1973, Jose de San Martín, en 1821, declaró la libertad de imprenta en Perú, etcétera.
   Vemos también algunos ejemplos de parámetros, -A num, muestra la información de las líneas desde "hoy" hasta el número de días que indiquemos en num. Si escribimos el comando calendar -A3, si hoy estamos a 22 de octubre, mostrará la información de los tres días siguientes: 23, 24 y 25. El parámetr -B num, retrocede, desde el día actual, los días que indiquemos, mostrando información anterior a la fecha de hoy.
   Para movernos por la página que muestra man calendar podemos utilizar las teclas de cursor hacia arriba/abajo. Os recomiendo ver todas las opciones que explica el manual y trabajar con ella. Resulta muy interesante ver los tipos de calendarios disponibles, música, fiestas paganas, etcétera.
    Para salir del manual, en la parte inferior nos lo indica, tenemos que pulsar tecla q.
   Decíamos que hay comandos que quieren de parámetros y argumentos, de no existir provocan un error. Un ejemplo es el comando que nos permite copiar archivos: cp. Si escribimos en el terminal el comando cp:
    $ cp   

   Este será el resultado. Es evidente que para copiar un archivo se nos requiera el nombre, por ello el sistema nos envía el mensaje: falta un archivo como argumento. Además nos remite a la ayuda (help), que podremos obtener escribiendo en el terminal cp --help. Man y help serán muy útiles. Si alguno desespera porque estén en inglés, pueden copiar su contenido y pegarlo en un traductor, por ejemplo el de Google es una buena solución. 
   No obstante, en Internet hay multitud de ayudas y ejemplos sobre el uso de comandos, con escribir comando cp en Linux o comando cp en Ubuntu, encontraréis multitud de entradas sobre el comando.

   Es interesante saber que existen dos tipos de comandos:
   Comandos internos: Pertenecen al shell, forman parte del shell, el bash. Cuando instalamos nuestra distribución Linux están presentes. El comando pwd, que nos indica el directorio actual, donde nos encontramos, es un ejemplo de comando interno.
   Comandos externos: Son programas, presentes como archivos binarios en nuestro disco duro. Cuando se ejecuta el comando, se carga, como cualquier otro programa, en la memoria de nuestro ordenador y se inicia como un proceso. Puede ocurrir que un comando externo no esté instalado, por ejemplo, suele suceder frecuentemente que el programa add-apt-repository, que instala nuestras ppa (repositorios), no esté instalado, provocando el error consiguiente. La solución es fácil, instalar el comando. Para ello utilizaremos el comando apt-get install.
   Pero en esta entrada quería resaltar esta distinción para saber que a la hora de ejecutar un determinado comando, puede ser externo, no estar instalado y ello provocará el consiguiente mensaje.
   Voy a poner como ejemplo, el comando hwinfo, este comando detecta nuestro hardaware y proporciona una amplia información sobre él. Voy a ejecutar el comando:
   $ hwinfo   
   El resultado es el siguiente, nos devuelve el mensaje: No se ha encontrado la orden "hwinfo". Nos propone otro comando, pues podría tratarse de un error al escribirlo, pero no se trata de ningún error, sucede que hwinfo no está instalado. Como indiqué anteriormente voy a realizar su instalación. La elección de hwinfo, no ha sido casual.

    Sólo para leer.
   Esto quiere decir que no hace falta que segáis los pasos que a continuación voy a realizar.
   Decía que dado la ausencia del comando en mi sistema tendré que instalarlo, para ello utilizaré el comando apt-get install.
   $ sudo apt-get install hwinfo   
   Este será mi resultado:

   En definitiva, el paquete no se encuentra en mi ordenador pero tampoco en mis repositorios (almacenes), pues lo habría instalado. Así que lo más probable, opción que indica en el sistema, es que se encuentre disponible en otro origen.
   No obstante, para asegurarme, voy a ejecutar el programa Synaptic y asegurarme de la existencia de "hwinfo".
Como veís, Synaptic tampoco encuentra el paquete.
Por tanto queda confirmado: ni tengo descargado el paquete (a falta de instalar), ni tengo los repositorios que almacenan este paquete.
   Esto supone que tendrá que estar en algún otro repositorio, recordemos que Linux no es Windows, nuestros paquetes se descargan, como regla general, de lo repositorios existentes para Linux.
   Lo más probable es que se encuentre en algún repositorio de los que llamamos "de terceros". Para ello me voy a Google y escribo para la busqueda: ppa hwinfo. Este es el resultado, por otra parte bastante previsible.

   Aquí tenemos el resultado de la búsqueda que nos lleva a Launchpad.
   Accedemos a esta entrada, que nos llevará directamente al lugar de Launchpad donde se encuentra el paquete y vemos lo siguiente:
   En la parte inferior veo que este paquete está confirmado para las distribuciones Precise Pangolin y Lucid Linx, ambas de Ubuntu. No somos expertos en sistemas pero sabemos que nuestra distribución de Ubuntu es trusty..., así que de momento el panorama no es muy alentador. Nunca se nos ocurrirá instalar en nuestro sistema un paquete que no pertenece a nuestra distribución.
   No obstante, más abajo, en letra de color verde vemos que hay un enlace a otras versiones, no confiables, pero vamos a dirigirnos a este enlace.
   Tenemos una versión Trusty (21.0-1....), pero recordemos las letras verdes (untrusted)="no es de confianza". ¿Que hacemos?
    Evidentemente, no instalarla, pero..., vamos a investigar un poco.
    Tomad nota de este enlace, (ya deberíais tener una libreta de apuntes Linux).
http://packages.ubuntu.com/
   Bien, aquí tenemos la página:
    Tecleamos entonces: hwinfo
   Efectivamente la búsqueda de hwinfo ha dado como resultado de que no existe una versión de confianza para Ubuntu trusty. Si hacéis clic en la distribución raring (Ubuntu 13.04), veréis que sí dispone de este paquete.

   Perdonadme todas estas vueltas. Parecía que mi intención era la de buscar el paquete, añadir la ppa, actualizar la base de repositorios e instalarlo. Pero algo de eso ya lo hemos visto, al menos en Orígenes del software. Creo más interesante explicar ciertos procesos que hemos de seguir para evitarnos problemas.
   Cuando venimos de otros sistemas operativos, yo también, la descarga e instalación era más sencilla..., pero a la larga nuestro disco duro estaba lleno de "no sabíamos qué" y nuestro sistema haciendo cosas extrañas. Muchos de nosotros terminábamos formateando el disco e instalando de nuevo nuestro sistema. Espero que esto no os ocurra en Linux.
   No se trata de un sistema operativo difícil, se trata de un sistema operativo muy potente y serio. Si administramos el sistema, instalamos y desinstalamos programas, utilidades, aplicaciones, herramientas, etcétera, debemos de saber lo que hacemos. Para algunos, muchos, la información de sus ordenadores es muy importante, el futuro de sus archivos es fundamental.
   A partir de saber que existía un comando hwinfo que nos proporciona información completa sobre nuestro hardware no hemos escrito más que un comando, el intento de instalación. A partir de un error, la información de que no encontraba el programa, hemos iniciado una búsqueda de las posibilidades de instalación de esta herramienta. Conclusión, no es de confianza.
   No debemos desilusionarnos por ello, existen otras utilidades tan buenas o mejores que hwinfo. ¿Qué hacer?, volvernos administradores e investigar.

   Para conocer información de nuestro hardware vamos a utilizar el comando lshw, el sistema, para recibir toda la información, recomienda que se ejecute como administrador (superusuario), así que abriremos nuestro Terminal y escribiremos:
   $ sudo lshw
   Aparecerá algo así en nuestro terminal:
   Con el cursor arriba/abajo o con la barra de desplazamiento, a la izquierda de la ventana de Terminal, podemos movernos a lo largo de la información que nos suministra este comando.
   Si tiene algún parámetro, no tenéis más que ejecutar el comando man, así que escribiendo la instrucción man lshw, veréis los parámetros disponibles para este comando, que no son pocos. Aquí tenéis un buen entretenimiento.

   Existe otro programa: hardinfo, su interfaz es gráfica y lo podéis instalar desde el Gestor de software de Linux Mint o Synaptic. No hay ningún problema con esta herramienta. Pero sigo aconsejando que investiguéis un poco sobre ella, que hace, como lo hace, etcétera. Si os resulta útil, realizar la instalación, de lo contrario tomar nota en vuestra libreta. Quizás un día la necesitéis o un amigo requiera de vuestra ayuda.

Gracias por vuestra atención.


No hay comentarios:

Publicar un comentario