viernes, 4 de agosto de 2017

Introducción a consola Linux


Consola Linux


La consola de Linux es una herramienta muy potente cuando se le conoce a profundidad, de seguro estoy lejos de conocer las profundidades de dicha herramienta pero esta entrada es una pequeña introducción con dos objetivos el primero compartir información que he aprendido para los que están tras de mí y el segundo es por frases como "lo que se escribe no se olvida".


¿Qué es la consola?

Cuando se habla de consola, linea de comandos, CLI(Client Line Interface), en realidad se refieren es al Shell. El shell es un programa que toma los comandos tecleados, los envía al sistema operativo para que este los procese. Muchas de las distribuciones de Linux vienen con un programa llamado bash que es descendiente de un programa llamado sh el cual fue escrito para Unix por Steve Bourne.

Cuando se usa una distribución de Linux con entorno gráfico se suelen usar emuladores de terminal, que son programas que se comunican con la terminal original, trasmiten ordenes a ella y muestran sus respuestas. En el caso de KDE existe konsole y en el caso de GNOME se usa gnome-terminal.

Al ingresar al terminal lo primero que se descubre es que no todo los que se escribe genera un resultado:

me@me:~$ cualquerCosa
cualquerCosa: no se encontró la orden

Esto lleva a que existen palabras a las cuales la consola responde y otras a las que no, las palabras que son reconocidas por la shell se conocen como comandos.

¿Qué son los comandos?

Los comandos pueden ser básicamente de 4 tipos:

Comandos internos:

El programa bash tiene unos comandos internos como:
alias, unalias, cd, dirs, echo, fg, bg, jobs, entre otros.

Alias:

Los alias utilizan características del shell para crear nombres alternos para comandos existentes.

Programas ejecutables:

Son programas compilados (archivos binarios) escritos en algún lenguaje de programación como C, C++ o lenguajes de script como Python... entre otros, los cuales en su mayoría se encuentran inicialmente en /usr/bin.

Funciones de shell:

Para incrementar la funcionalidad del shell es posible crear archivos .sh que pueden contener instrucciones a ejecutar los cuales se conocen como scripts.

Que es y que no es un comando

Dentro de los comandos internos de la shell se encuentra uno llamado type, el cual permite identificar si la palabra que enviamos como parámetro es o no una orden interna, un alias, un programa o una función, la forma de usarlo es muy sencilla

me@me:~$ type palabra

Ejemplos:

me@me:~$ type type
type es una orden interna del shell

me@me:~$ type cp
cp is /bin/cp

me@me:~$ type ls
ls es un alias de `ls --color=auto'

Los comandos internos

Los comandos internos son instrucciones que se encuentra definidas dentro del mismo programa shell, y de los cuales hay una gran variedad de opciones que además nos servirán mas adelante para generar comandos propios.

Ejemplos de comandos internos son:

pwd → imprime el directorio actual
cd → cambia a otro directorio
jobs → muestra los procesos manejados por esa consola
bg → envia atrás el proceso manejado por esa consola
fg → trae al frente el proceso manejado por esa consola
kill → finaliza la ejecución de un proceso.
exit → sale de la terminal

Los Alias

El comando alias es un comando interno de la shell el cual permite tener sobrenombres de comandos, abreviaturas de comandos con sus parametros o secuencias de comandos que se ejecutan con solo un nombre, la ejecución del comando alias sin parametros nos muestra una lista de los alias asignados hasta el momento o como se ve en el ejemplo seria la forma de agregar un alias a la lista.

Ej:
alias miComando='ls -lhX'
En el ejemplo anterior se define un comando llamado miComando el cual ejecuta el programa ls con las opciones -l formato de lista larga, h muestra el tamaño de los archivos en un formato mas legible, X ordena los archivos por nombre y extensión.

unalias: elimina de la lista un alias previamente asignado.
Ej:
unalias miComando

En el ejemplo anterior se elimina el alias previamente asignado llamado miComando.

Programas ejecutables

Los programas ejecutables son archivos que fueron escritos en un lenguaje de programación y posteriormente compilados, por tanto se encuentran en formato binario y habitualmente se encuentran dentro del directorio /usr/bin, la razón por la que se encuentran ahí es que una de las variables de la shell llamada $PATH tiente en su lista esa ubicación para buscar los comandos que se digitan, por tanto cada que se solicita un comando la shell le busca en esas ubicaciones y de encontrarlo le ejecuta.

Dentro de los programas de consola mas utilizados son los programas para la gestión del sistema de archivos, administración de redes, entre otros.

Ejemplos de programas de línea de comandos:
ls → programa que lista los archivos de un directorio.
mkdir → programa que permite crear un directorio
file → programa que muestra información sobre un archivo
less → programa que permite leer el contenido de un archivo de texto plano
vim → programa que permite editar archivos de texto plano.

Donde se encuentra un programa

La ubicación del ejecutable de un programa puede encontrarse mediante el comando which, dado que la mayoría aunque no todos los comandos se encuentran dentro de /usr/bin, puede ser necesario usar este comando para conocer la ubicación.

me@me:~$ which ls
/bin/ls

En caso que se trate de una orden interna del shell no será posible identificar su ubicación.

Como usarlo y para que sirve un comando

La shell tiene un comando interno llamado help, el cual permite conocer como funciona y los parametros que debe tener una orden interna para su correcta ejecución.

Ejemplo:
me@me:~$ help pwd
pwd: pwd [-LP]
Muestra el nombre del directorio de trabajo actual.
Opciones:
-L muestra el valor de $PWD si nombra al directorio de
trabajo actual
-P muestra el directorio físico, sin enlaces simbólicos
Por defecto, `pwd' se comporta como si se especificara `-L'.
Estado de Salida:
Devuelve 0 a menos que se de una opción inválida o no se pueda leer
el directorio actual.

El comando interno help es diferente del parámetro --help con el que cuentan algunos comandos externos, es por ello que su invocación en los comandos externos es después del nombre del comando Ejemplo:

me@me:~$ env --help
Modo de empleo: env [OPCIÓN]... [-] [NOMBRE=VALOR]... [ORDEN [ARGUMENTO]...]
Asigna a cada NOMBRE el VALOR en el entorno y ejecuta ORDEN.

Los argumentos obligatorios para las opciones largas son también obligatorios
para las opciones cortas.
-i, --ignore-environment start with an empty environment
-0, --null end each output line with 0 byte rather than newline
-u, --unset=NAME remove variable from the environment
--help muestra esta ayuda y finaliza
--version informa de la versión y finaliza

Un simple - implica -i. Si no hay ORDEN, muestra el entorno resultante.

El programa man es un paginador para la documentación de todos los programas la forma de invocarlo es sencilla y es de gran valor para el uso del sistema operativo.

me@me:~$ man programa

donde programa es el nombre del comando del que se quiere obtener ayuda.

Es posible hacer una búsqueda de coincidencias de una palabra en las paginas man mediante el comando apropos, de esa forma cuando se tiene dudas sobre el nombre de un comando se puede usar

me@me:~$ apropos palabra

Ejemplo:
me@me:$ apropos writer
grotty (1) - groff driver for typewriter-like devices
Image::ExifTool::Writer (3pm) - ExifTool routines for writing meta information
lowriter (1) - LibreOffice office suite

Con el programa whatis se obtiene una breve descripción de un comando

me@me:~$ whatis cp
cp (1) - copy files and directories

Estas son algunas de las formas de documentarse sobre la utilización de los comandos en consola.

Funciones

Las funciones son secuencias de comandos que se escriben en un archivo el cual se puede ejecutar cuando una tarea se hace de manera repetitiva, para ello la shell nos aporta varias instrucciones que podemos usar, es asi como haciendo uso de palabras reservadas, comandos internos y externos podemos tener un primer acercamiento a la programación.
Sin embargo eso será parte de otro artículo.

No hay comentarios.:

Publicar un comentario