16 marzo 2016

#Tuxinfo - Conociendo el interprete de comando Bash


IMPORTANTE - Nota publicada en la revista Tuxinfo Número 70. 

Podemos definir como Bash a un interprete de comandos entre nosotros y nuestra PC.
Siempre que tengamos que realizar cualquier tipo de operación en una consola de texto acudiremos a el para realizarla.
Hay Varios interpretadores de comandos pero este es el mas utilizado.

Un Poco de Historia

Por aquellos tiempos en los que Dennis Ritchie y Ken Thompson de AT&T diseñaban UNIX, fue su meta crear un medio para que las personas interactuaran con el sistema de una forma mas amena y estándar.
Los sistemas de entonces venían con intérpretes de comandos, que aceptaban comandos de los usuarios y los interpretaban para que los utilizara la máquina.
Pero Ritchie y Thompson querían más, algo que ofreciera más que los intérpretes de comandos del momento. Es por eso que nació la Bourne shell (Bash), creada por S.R. Bourne. Desde la creación de la shell de Bourne se han desarrollado otras shells, tales como la C shell (csh) y la Korn shell (ksh).
Cuando la Free Software Foundation buscaba una shell sin patentes, los desarrolladores empezaron a trabajar en el lenguaje de la Bourne shell y en características de otras shells del momento.
Por lo que surgió Bash. (Bourne Again Shell)
Seguro que ya vimos en varias oportunidades mensajes de error como el siguiente bash: command not found.
Para lo cual tenemos que obtener muchas veces ayuda para el uso del mismo.


Comenzando a Usarlo.
Uso del Man.
El comando Man nos da la opción de tener al alcance de nuestra mano los manuales de todos y cada uno de los comandos que podemos utilizar en Bash.
La forma de utilizarlo es muy simple.

linux@linux: > man bash
O bien podemos guardar en un archivo de texto el manual completo en este caso de bash con el siguiente comando.

linux@linux: > man bash | col -b > bash.txt

Con este comando le pedimos que cree un archivo de texto y que lo coloque en donde estamos posados ahora directamente en el /home/linux
Con el comando antes descriptos podemos consultar el manual o generar un archivo de texto de forma totalmente simple no solo de bash, también de otros comandos. Mas adelante explicados.

Lo primero en ejecutarse es el logueo, el cual se hace previo una verificación en el sistema.
Donde nos pedirá el login y la clave, estos dos archivos lo encontramos ya definidos en:
/home/usuario
/etc/passwd o /etc/shadow

/home/usuario
Este es el creado en forma directa cuando ingresamos un usuario en el sistema.
La creación del mismo se realiza de forma automática con el comando
# adduser usuario # useradd usuario

/etc/passwd o /etc/shadow
Estos archivos de configuración, passwd y shadow son simplemente archivos donde se guarda las claves de los usuarios.
Passwd no es mas utilizado en los sistemas actuales por su baja seguridad que bastaba con editar este archivo y veremos en forma transparente el contenido del mismo.
Shadow cumple la misma función que el anterior pero la diferencia radica en su encriptación.
Por lo que no veremos la clave en forma transparente al contrario veremos simbología.
La forma de asignarle a un usuario su clave es simple y en todos los casos se utiliza el mismo comando.
# passwd usuario
El sistema nos pedirá que ingresemos la clave y luego que la confirmemos.

Sigamos.
Un intérprete interactivo de ingreso se ejecuta después de una entrada correcta al sistema, mediante /bin/login, leyendo el fichero /etc/shadow. El intérprete invocado lee normalmente durante el arranque /etc/profile y su equivalente privado, ~/.bash_profile
Una ves producido el login el interprete de comandos cd etc
bash esta operativo y listo para realizar nuestros pedidos.
Además el sistema bien podría ingresar como xterm o konsole, dentro de un entorno gráfico. Este tipo de invocación del intérprete normalmente copia el entorno padre y luego lee en el fichero ~/.bashrc del usuario las instrucciones de configuración adicionales para el arranque.

A los archivos estándar le añadimos también /etc/bashrc, que es llamado desde el ~/.bashrc del usuario para establecer los valores del sistema de inicialización de intérpretes de no ingreso.
Podremos tener mas información ingresando el siguiente comando.

#info bash

/etc/profile

Ahora vamos a dar un ejemplo de un archivo básico /etc/profile básico. Este archivo comienza estableciendo ciertas funciones auxiliares y algunos parámetros básicos. Especifica varios parámetros del historial de bash y, con lo que a razones de seguridad se refiere, desactiva el almacenamiento de un fichero de historial permanente para root. Además establece un símbolo del sistema por defecto. Entonces invoca a pequeños guiones de propósito único en el directorio /etc/profile.d para proporcionar una mayor inicialización.

Por ejemplo tenemos el archivo complete.bash , el cual es donde se guardan la configuraciones generales de nuestro bash.

MUY UTIL.
Bash guarda en el directorio de cada usuario un historial de los comandos tipeados.
El mismo se llama .bash_history
Siendo un archivo de texto con lo que se podrá editar su contenido y ver su contenido.


Algunos comandos muy útiles.
Varias veces nos encontramos con la necesidad de realizar una operación de permisos, modificación de archivos de sistema o cualquier operación que pueda requerir la participación directa del Root.
Para ello tenemos como primera medida ser de nuestro conocimiento la clave del mismo, con lo cual estando logueados como usuarios comunes podemos cambiar y ser root con el simple comando su.

Passwd: ********
linux:/home/linux #

Además podemos tener la necesidad de ejecutar algún tipo de aplicación en forma de root, para lo cual bastara con tipear:

linux@linux >$ su -c mc

Con su -c y seguido de la aplicación como en este caso Midnight Commander , entraremos en el como root. (operación aplicable para cualquier comando)

ALGUNOS COMANDOS BASICOS

$ uname -a
Con esta orden podremos ver todo lo relacionado con el Kernel del sistema, su versión de Linux, distribución, etc.

$ su usuario cualquiera
Con este comando podremos cambiar por ejemplo de pepe a root previo a tipear su contraseña de root par poder ingresar al login de root.



$ ls -l
Podremos ver el directorio en el cual estamos parado en el sistema. (siempre que se logee algún usuario estará parado en /home/usuario determinado)
Solo podremos ver su contenido.
Veremos con este comando un completo informe del directorio con su respectivo dueño, permisos, fecha de creación del directorio y por supuesto nombre del directorio.
Forma de reconocer si estamos enfrente a un directorio, archivo, o documento. Es por el color.
Siendo:
Azul un directorio.
Blanco un archivo.
Amarillo dispositivos.
Celeste link o enlace.

$ mkdir
Crear un directorio en su /home.

$ rmdir
Borrar un directorio.

$ cd
Nos da la posibilidad de volver siempre a /home/usuario sin importar en que directorio estemos ahora.
Si tipearamos cd / pasaríamos a estar directamente en la barra / (donde parten todos los directorios).


$ touch
Crea archivos vacíos.

$ cp origen y destino
Copia un archivo partiendo siempre parado en el archivo y tipeando totalmente el destino en donde se alojara el archivo.

$ mv
Este comando es utilizado igual que en anterior con la única diferencia que solo con este se podrá mover un archivo de un directorio a otro.

$ rename
Sirve para renombrar un archivo.

$ ln
Este comando es solo utilizado para crear un acceso directo.


CONCLUSION.
No pretendemos con este articulo dar una clase de programación en Bash solo brindar conocimientos generales de el y explicar algunos comandos muy útiles.
Hay que tener en cuenta la utilización de los manuales man los mismos son una herramienta imprescindibles en el mundo de Linux.

Ariel M. Corgatelli
@arielmcorg

No hay comentarios.: