Bash básico
La "shell" o "línea de comandos"
Lo que comúnmente se conoce como línea de comandos, terminal o consola, son programas que permiten llamar a otros programas para acceder a los servicios del sistema operativo a estos programas que permiten llamar a otros programas e interpretar programas (comandos) se los conoce como shell. Estos programas poseen una interfaz para un usario y además los hay de dos tipos las shell en modo texto, y las gráficas, estas últimas se conocen como entornos gráficos de escritorio
En la mayor parte de las distibuciones GNU/Linux la shell por defecto es bash. Todo el curso se basará en este interprete de línea de comandos.
¿Qué es bash?
Bash es la shell o interfaz de línea de comandos del sistema operativo GNU y se usa en la mayoría de las distribuciones de GNU con Linux, esta basado en la shell de Unix y es compatible con POSIX (Interfaz portable de sistema operativo), fue escrita para el proyecto GNU y es software liberado bajo la licencia GPL, entonces es software libre.
La forma de usar bash es introducir comandos o combinaciones de ellos para hacer tareas, bash posee funcionalidades que facilitan la introducción de comandos, algunos se describirán más adelante.
¿Por qué aprender a usar un " intérprete de línea de comandos" ?
Dado que el sistema operativo GNU/Linux tiene en su filosofía la idea de "usar un programa con cualquier propósito y sin restricciones", la shell bash permite hacerlo.
Para un usuario "estándar" las tareas más comunes son administrar archivos, leer/editar documentos, trabajos multimedia, navegar por internet, etc. Es muy probable que no haya necesidad de usar bash o cualquier línea de comandos para hacer estos trabajos ya que las interfaces gráficas (shells gráficas) permiten hacerlo de manera simple e intuitiva.
En cambio, si se quiere hacer mucho más que tareas comunes conviene aprender a usar bash. Esto no significa que mediante bash no se pueda realizar tareas comunes. Si abrimos bash y comenzamos a usarla fácilmente podremos administrar archivos, reproducir contenido multimedia, navegar por internet, escribir y leer archivos, etc y también podremos hacer muchas cosas más. Por ejemplo compilar programas, programar tareas, administrar redes de computadoras, administrar completamente el sistema y otras tareas que bajo interfaces gráficas no siempre están disponibles o no están bien dsarrolladas.
En otras palabras, aprender a usar un intérprete de línea de comandos como bash es aprender a usar una herramienta muy poderosa que es a menudo necesaria para realizar ciertas tareas o realizarlas de manera más efectiva.
¿Qué es un comando?
Un comando es un programa, pero generalmente es un programa escrito para actuar en modo texto por tanto carece de interfaz gráfica de usuario, eso no significa que un comando sea un programa menor o que no posea interfaz alguna.
La entrada/salida estándar
Uno de los fuertes de la filosofía del sistema operativo UNIX es:
Siempre que sea posible, Resolver tareas complejas combinando múltiples herramientas simples.
El sistema operativo GNU tomo este principio e implementó también esta característica añadiendo lo que se denominan streams que son series de datos que pueden ser manipuladas.
La entrada estándar
Es el stream de entrada, también conocido como stdin y es la fuente de datos de entrada estándar, usalmente son datos que vienen directamente del teclado de la computadora.
La salida estándar
La mayor parte de los programas en modo texto, envían sus resultados al stream denominado la salida estándar (stdout) que generalmente es mostrada en la pantalla. Entonces, la mayor parte de los resultados de un programa se mostrarán vía la salida estándar y luego esta se muestra en la pantalla.
Standard error
Este stream de salida se dedica a almacenar resultados importantes de los programas como errores, y usualmente también se muestra en la pantalla.
Operadores de redireccionamiento
Es posible redireccionar la entrada/salida estándar usando símbolos especiales para ello, la función de estos operadores se especifíca a continuación:
Operador | Acción |
---|---|
> | Crea un nuevo archivo que contiene el resultado de la salida estándar y si el archivo especificado ya existe se reemplaza. |
>> | Adiciona el contenido de la salida estándar a el archivo específicado y si el archivo no existe se crea. |
2> | Al igual que > crea un archivo, pero usa standard error. |
2>> | Al igual que >> añade contenido a un archivo, pero este proviene de standard error |
&> | Crea un archivo nuevo que contiene el resultado de la salida estándar y standard error, si ya existe es reemplazado. |
< | Envía el contenido de una archivo específico para ser usado como entrada estándar |
<< | Envía el texto introducido a continuación para ser usado como entrada estándar |
<> | Permite qye el archivo a continuación se use como entrada y salida estandar |
El redireccionamiento es muy útil para manipular mejor la interacción con la consola, por ejemplo podríamos fácilmente capturar el resultado de cierto comando en archivos o ir registrando el resultado de uno o varios en un sólo archivo.
ls -l > lista_archivos
Que grabará en el archivo lista_archivos> una lista larga de los archivos en el directorio actual. Esto por que ls tiene la función de listar ficheros y su salida es enviada al archivo nuevo.
lsusb >> disps_usb.txt
Así capturamos la salida estándar de lsusb
que lista los dispositivos usb y añade ese contenido al archivo disp_usb.txt. El ejemplo contrario sería:
less < disp_usb.txt
Que enviará al programa less (visor de archivos) el contenido del archivo disp_usb.txt.