¿Quien dijo “No sé como realizar Script de Bash Shell en un Sistema Operativo GNU/Linux desde un Terminal” usando Canaima 4.X? – Parte II


FELIZ AGOSTO: 2014 (PUBLICACIÓN 154)

Saludos: Integrantes de la Gran Comunidad de Usuarios del Software Libre (No necesariamente gratis) y Usuarios del Linux Post Install – Script Bicentenario (CMSL / U-LPI-SB), Compañeros, Colegas y Autodidactas del Siglo XXI. Y ahora también a los Ingenieros en Telecomunicaciones, Sistemas e Informática, Licenciados y Técnicos de áreas afines.

Saludo de Bienvenida

En esta Vigésima primera (24°) publicación del año vamos a aprender sobre el Shell Scripting, es decir, a programar en el Terminal (Consola) de GNU/Linux , lo cual es muy útil para automatizar actividades rutinarias e importantes dentro de nuestro Sistema Operativo GNU/Linux para así optimizar nuestros Recursos y Tiempo, es decir, exploraremos como desde el terminal podemos programar/automatizar actividades sobre un equipo ahorrando Horas/Labor de ejecución manual o presencial, tratando de explicarlo de una manera, practica y sencilla. Todo esto con la intención de seguir intentando desmitificar otro de esos paradigmas sobre GNU/Linux que muchos de los Usuarios de Sistemas Operativos Privativos y uno que otro Linuxero Novato tienen todavía metido entre ceja y ceja. El mito de “No sé como realizar Script de Bash Shell en un Sistema Operativo GNU/Linux desde un Terminal” usando Canaima 4.X? En este caso, no solo veremos abarcaremos el uso de Comandos prácticos y sus opciones asociadas, si que también nos concentraremos en las Mejores Practicas (Best Practices) para obtener un excelente diseño de Script de la manera más eficiente y practica. Bueno aquí lo tienen, y demuéstrenle a los escépticos e incrédulos que no es cierto, que solo es desconocimiento o falta de experiencia técnica. Estos son pequeños “Tips” que nos facilitan realizar esas operaciones técnicas reservadas por lo general para personas expertas (Administradores de Sistemas y/o Servidores) en DEBIAN o nuestro Sistema Operativo Nacional basado en DEBIAN, “Canaima GNU/Linux”.

Pero antes los invito a explorar este Enlace, que es un Blog de Tecnología y Diversión que ha creado mi hijo a petición mía para su auto-formación el cual esta dirigido a un mercado objetivo diferente (Jóvenes Estudiantes de Bachillerato, amantes de Windows y los Videojuegos), por lo cual lo comparto con ustedes para que si es de su interés lo visiten y lean!

Blog: “Tecnología y Diversión” de Johangel A. Albert C.

===============================================================

Recordando un poco sobre la publicación anterior habíamos dicho:

¿Que es la Shell?

Shell que significa en Castellano “concha” es el interprete de comandos del sistema. Es una interfaz de texto de altas prestaciones, que sirve fundamentalmente para tres cosas: administrar el sistema operativo, lanzar aplicaciones (e interactuar con ellas) y como entorno de programación.

Esto nos infiere que para realizar nuestros Script de forma eficiente debemos primero entender a como hacer uso de los comandos en la Shell. La Shell usa una gran variedad de comando, comodines y expresiones que se deben de aprender para luego aplicarlas en sus Scripts. A continuación tratare de exponer de forma resumida las más útiles y conocidas.

Aprendiendo a usar la Shell

 

Cuando la shell está lista para recibir órdenes, muestra el prompt:

$ : para usuarios normales
# : cuando entramos con el usuario root

  • Uso de comandos

$ comando [argumentos]

$ ls
$ ls -l

  • Argumentos con formato largo y corto

Formato corto

$ ls -r

Formato largo

$ ls –reverse

Combinación de argumentos cortos

$ ls -a -l

Órdenes equivalentes:

$ ls -al

Obtener ayuda rápida sobre los argumentos de un comando:

$ comando –help
$ ls –help

Ayuda en línea: Comando “man” – Páginas de manual para todos los comandos y muchos archivos de configuración

$ man ls

  • Comandos básicos

cd: cambia de directorio.

ls: lista los contenidos del directorio.

mkdir: crea un directorio.

rm: borra un archivo.

cp: copia un archivo.

mv: mueve o renombra un archivo.

pwd: muestra el directorio actual.

cat: muestra un archivo.

tail: muestra el final de un archivo.

head: muestra el comienzo de un archivo.

more: muestra un archivo, paginando la salida.

less: como more, pero navegable hacia detrás.

grep: filtra las líneas que contienen un patrón.

sort: ordena un archivo.

cut: corta secciones de las líneas de un archivo.

wc: cuenta las líneas, palabras y caracteres de un archivo.

uptime: muestra el tiempo de funcionamiento del sistema.

echo: muestra una línea de texto.

file: determina el tipo de archivo.

find: busca archivos.

who: muestra los usuarios conectados.

w: muestra lo que hacen los usuarios conectados.

chown: cambia el propietario de un archivo.

chgrp: cambia el grupo de un archivo.

chmod: cambia los permisos de un archivo.

date: muestra la hora y la fecha del sistema.

tar: compresión de archivos.

  • Expansión de nombres de archivos y directorios

Para referirnos a varios archivos, se usan los comodines

?: un carácter.

*: cero o más caracteres.

[conjunto]: uno de los caracteres de conjunto.

[!conjunto]: un carácter que no esté en conjunto.

Ejemplo de Expansión de nombres de archivos y directorios

$ ls *.txt : Muestra todos los archivos terminados en .txt.

ls doc?.txt : Muestra doc1.txt, doca.txt…

ls archivo.[ch] : Muestra archivo.c y archivo.h, pero no archivo.o o archivo.cpp

ls [a-c]* : archivos empezados por a,b,c.

El comodín tilde: Se usa para referirse al directorio del usuario

~ representa el directorio del usuario

~/Desktop expande a /home/usuario/Desktop

~pepe/ referencia al directorio personal del usuario llamado pepe

Entrecomillado: A veces queremos usar un carácter especial literalmente, es decir, sin significado especial. Para ello usamos el entrecomillado o también podemos usar caracteres de escape, es decir, se precede el carácter por el símbolo \

$ echo ~
$ echo \~

Ejemplo del uso de comillas

$ cd /etc

Intentamos buscar los archivos con extensión.conf:

La forma correcta de conseguirlo

$ find . -name *.conf

$ find . -name ‘*.conf’

O

con carácter de escape:

$ find . -name \*.conf

  • Ejecución secuencial y concurrente de comandos

Ejecución de comandos en segundo plano

$ comando &

$ cp -R /home /backups &

Ejecución secuencial de comandos

$ comando1 ; comando2

$ cd /etc ; ls -al

  • Combinaciones de teclas

Es muy útil conocer algunas de las combinaciones de teclas de BASH si vamos a trabajar con ella frecuentemente, ya que permiten un trabajo mucho más rápido y hacen mucho más amigable el uso de la consola.

El historial de comandos

Bash mantiene un histórico de comandos, donde se van almacenando los comandos que vamos ejecutando.

~/.bash_history

Nota: Los archivos que empiezan con punto son ocultos, se puede usar el comando history para ver el historial y la forma más usual de usar el history es con los cursores de arriba y abajo.

Ejecutar comandos anteriores

!! : ejecutar el último comando
!n : ejecutar el comando número n
!cadena : ejecutar el último comando que empiece por cadena

Teclas de control de terminal

Las interpreta el terminal, no Bash

Control-C: para el comando actual
Ejemplo: find / y pararlo antes del fin

Control-D: final del flujo de entrada
Ejemplo: cat y terminar cuando deseemos

Control-U: borra desde la posición actual hasta el principio de la línea

Control-W: borra desde la posición actual al principio de la palabra

Buscar en el historial

Control-R: busca hacia atrás en el historial, un comando que contenga un determinado texto. Extremadamente útil una vez que te acostumbras al pulsar las teclas, el prompt cambia de forma, y nos va mostrando el comando del histórico que cumple el patrón dado. Si pulsamos Enter, se ejecuta el comando, Si pulsamos ESC, deja editarlo y Si pulsamos Control-G se limpia la línea.

Autocompletar con el tabulador

Ayuda a terminar de rellenar un comando con el nombre de un comando, de una variable, de un archivo o un directorio. Para ello se siguen estas reglas cuando se pulsa el tabulador: Si no hay nada que empiece por el texto de la palabra que precede al cursor se produce un pitido que informa del problema.

Se siguen estas reglas cuando se pulsa el tabulador:

Si hay un comando (en el PATH), una variable o un nombre de archivo que comienza con el texto escrito, Bash completa la palabra. Si hay más de una forma de completar la palabra, Bash completa lo más que puede y emite un pitido Si al haber más de una posibilidad para completar, pulsamos dos veces el tabulador, se muestran todas las posibles candidatas.

  • Shell scripts

Secuencia de comandos y estructuras de control que especifican en que modo deben ejecutarse dichos comandos.

El script “Hola Mundo”:

#!/bin/bash
echo Hola Mundo

El Script holamundo.sh

Prímera línea del script
#!/bin/bash

Indica el programa que debe ejecutar el script. Si no se encuentra el programa, se producirá un error.

echo Hola Mundo

Ejecuta el comando echo con los argumentos Hola Mundo, haciendo que se muestren por pantalla.

Ejecución de scripts

Podemos ejecutar el script de dos formas:

Invocando al intérprete para que ejecute el script:
# bash holamundo.sh o
# source holamundo.sh

Ejecutando directamente el script:
# ./holamundo.sh

Nota: ./ indica ejecutar desde el directorio actual.

Para ello necesitamos tener permiso de ejecución
# chmod +x holamundo.sh

  • Permisos

Basados en usuarios y grupos, cada archivo tiene un propietario y pertenece a un grupo. Se asignan permisos para el propietario, para el grupo y para los demás usuarios.

Hay 3 tipos de permisos

r: Lectura (Permite leer un archivo,En directorio, permite listar sus contenidos)
w: Escritura (Permite modificar un archivo)
x: Ejecución (Permite ejecutar un archivo, En un directorio, permite el acceso a él)

Para ver los permisos de un archivo, usamos el comando ls:

$ ls -l

rwxr-xr-x 1 root 10:29 index.php

Nota: 9 letras nos indican los permisos:

root 4036 2009-12-13 rwxr-x-r-x

Nota: Las tres primeras son los permisos del propietario, las siguientes del grupo y las últimas, del resto de los usuarios.

rwx (Permisos de lectura, escritura y ejecución para el propietario)
r-x (Permisos de lectura y ejecución para el grupo)
r-x (Permisos de lectura y ejecución para el resto de los usuarios)

-rwxr-xr-x

La primera letra (carácter) indica el tipo de archivo:

– : archivo regular
d: directorio
l: enlace

Modificación de permisos

$ chmod [ugoa]+-[rwx] archivo

u: usuario

g: grupo

o: otros

a: todos

$ chmod u+x script.sh

$ chmod modo archivo

modo: son tres números en octal

$ chmod 755 script.sh

===============================================================

Aquí les obsequio un pequeño script que instala en forma offline conky

#!/bin/bash

################################################################################
# REPÚBLICA BOLIVARIANA DE VENEZUELA
#
# NOMBRE: LINUX POST INSTALL – SCRIPT BICENTENARIO (LPI-SB)
# VERSIÓN: 6.0+0
# TIPO DE PROGRAMA: SISTEMA EXPERTO
# FUNCIÓN: ASISTENTE TÉCNICO PARA S.O. GNU/LINUX BASADOS EN DEBIAN
# NOMBRE CÓDIGO: NOBILIS COR (LPI-SB 6.0+0)
# PAÍS ORIGEN: REPÚBLICA BOLIVARIANA DE VENEZUELA
# CREADO POR: JOSÉ JOHAN ALBERT IZAIPE
# CORREO: albertccs1976@hotmail.com
# NOMBRE FACEBOOK: Linux Post Install
# PAGINA PERSONAL FACEBOOK: http://www.facebook.com/linuxpostinstall
# COMUNIDAD FACEBOOK: Script Bicentenario
# TWITTER: @albertccs1976
# TELÉFONO: 0426.610.13.03
# PROMOCIONADO POR: PROYECTO TIC – TAC
# PAGINA WEB DEL PROYECTO TIC – TAC: https://proyectotictac.wordpress.com/
# FECHA DE LANZAMIENTO DE LA PRIMERA VERSIÓN (1.0): 07/12/2010
# FECHA DE LANZAMIENTO DE LA VERSION ACTUAL (6.0+0): 01/07/2014
################################################################################
################################################################################
#
# Derechos de autor:
#
# Copyleft (C) 2014 Jose Johan Albert Izaipe
#
# Licenciamiento:
#
# El Linux Post Install – Script Bicentenario no viene con ninguna garantía. El
# Autor no se hace responsable si se al aplicarse el Sistema Operativo se
# corrompe, daña o inutiliza.
#
# El Linux Post Install – Script Bicentenario es una aplicación de Software
# Libre, por lo tanto usted puede redistribuirlo y / o modificarlo bajo los
# términos de la Licencia Pública General de GNU publicada por la Free Software
# Foundation, ya sea la versión 3 o cualquier versión posterior, según sea de su
# preferencia.
#
# Este programa se distribuye con la esperanza de que sea útil, pero SIN NINGUNA
# GARANTÍA, incluso sin la garantía implícita de COMERCIALIZACIÓN o IDONEIDAD
# para un propósito particular. Vea la Licencia Pública General de GNU para más
# detalles.
#
# Procure obtener una copia de la Licencia Pública General de GNU para estar al
# tanto sobre lo estipulado por la misma.
#
# Consultela en:
#
# <http://www.gnu.org/licenses/&gt;.
################################################################################
################################################################################
# INICIO DEL MODULO DE CONKY MANAGER – I386
################################################################################

aptitude install realpath conky-all python-wnck rsync -y

dpkg -i /opt/lpi-sb6/paquetes/conky/conky-manager_1.2.0.1_i386.deb

cp /opt/lpi-sb6/paquetes/conky/Deluxe_Conky_Theme_Pack.cmtp.7z /home/$USERNAME/

################################################################################
# FINAL DEL MODULO DE CONKY MANAGER – I386
################################################################################

 

Espero les haya gustado y les sea útil dicha información, en la siguiente parte veremos otros prácticos ejemplos de Script para usar administrar / optimizar eficientemente nuestro el Sistema Operativo.

No olviden contestar la Encuesta y/o agregarse a la Pagina de Facebook Script Bicentenario y/o al Grupo de Facebook Linux Post Install para estar pendientes de las novedades en el Blog.

 

Para mayor conocimientos sobre este u otro tema pueden ver el siguiente Videotutorial sobre el tema:

Videotutorial para la Certificación LPIC de Paulpaulito

##########################################

Aquí les dejo esta encuesta para medir el apoyo logrado:

##########################################

=========================================================================================

Recordemos que básicamente este Blog se dedica a explicar todo lo relacionado con mi Aplicación, el Linux Post Install – Script Bicentenario (LPI-SB), el cual es una aplicación de Software Libre como pocas en su tipo en el mundo, es decir, con él una persona (Novata, Experta o Técnica) se puede ahorrar incuantificables horas/labor en entrenamiento y estandarización de procesos de Instalación, Actualización, Mantenimiento, Soporte (Resolución de problemas), Configuración de Perfiles de Usuarios o Parámetros dentro de su Sistema Operativo GNU/Linux basado en la Meta Distribución DEBIAN. El LPI-SB es un Script de Bash Shell desarrollado con tecnología “dialog, gxmessage y zenity” para su interfase gráfica y con “espeak, festival, festvox, mbrola, mpg123, speech y stardict”. El LPI-SB es un Sistema Experto que emula el razonamiento de un Especialista (Analista) Técnico experto en Sistema Operativo GNU/Linux basado en la Meta Distribución DEBIAN. El LPI-SB busca una mejor y uniforme calidad y rapidez en las respuestas a los Usuarios dando así lugar a una mejora de la productividad del Humano “experto” que presta el servicio. El LPI-SB trabaja como un Asistente Técnico con una interfase amigable y multimedia, es decir, con Ventanas, Asistencia por Voz, Alertas de Sonido y Manipulación de archivos de Sistema y Ofimáticos. También implementa la configuración de Perfiles de Usuario de forma que el Sistema Operativo GNU/Linux conserve su bajo consumo de recursos y se conserve como un Sistema Operativo Estable y Ligero, pero lleno de herramientas y aplicaciones elementales y productivas que faciliten su usabilidad ante los usuarios, es decir, que facilite el ser usados por cualquier persona (Usuario Básico, Administrativo, Avanzado, Programador, Técnico, entre otros). El LPI-SB proporciona a la Distribución Canaima GNU/Linux y otras escalabilidad, adaptabilidad, modularidad y ahorro de horas/labor en configuración al personal Técnico o no Técnico que lo implemente. En resumen, actúa como una pequeña inteligencia artificial capaz de lograr la ejecución de una operación idónea o pertinente para resolver una necesidad o poder resolver un problema específico. Si quieren conocer o experimentar con el LPI-SB6 pueden hacer clic en el siguiente enlace:

Todo sobre el LPI-SB6

Postdata: Soy un Ingeniero en Informática (Líder en Proyectos de Migración de Software Libre a Nivel de Usuarios) con un excelente empleo, pero si me ofrecen 14.000,00 Bs. + Beneficios puedo considerar ofertas! Para cualquier información llamar al teléfono0416.610.13.03 ó escribirme al correo: albertccs1976@hotmail.com y albertccs1976@gmail.com

=========================================================================================

REPÚBLICA BOLIVARIANA DE VENEZUELA

LEY DE INFOGOBIERNO

TÍTULO II

DE LA ORGANIZACIÓN EN EL PODER PÚBLICO PARA EL USO DE LAS TECNOLOGÍAS DE INFORMACIÓN

Capítulo IV
De las unidades de apoyo

Unidades de apoyo

Artículo 50. Son unidades de apoyo a los efectos de la presente Ley:

1. El ente normalizador del uso de las tecnologías de información.
2. El órgano normalizador en seguridad informática.
3. Cualquier otra instancia que esté vinculada con el objeto y fines de esta Ley.

Ente Normalizador

Artículo 51. El ente normalizador en materia de tecnologías de información y el órgano normalizador en seguridad de la información, ejercerán las funciones de unidades de apoyo especializadas de la Comisión Nacional de las Tecnologías de Información, en las materias de su competencia y de conformidad con las normas de funcionamiento dicte la Comisión.

Sección primera: normalizador de las tecnologías de información.

Autoridad competente

Artículo 52. El Centro Nacional de Tecnologías de Información, ente adscrito al órgano con competencia en tecnologías de información, es el encargado de apoyar a la Comisión Nacional de las Tecnologías de Información a normalizar el desarrollo, adquisición, implementación y uso de estas tecnologías en el Poder Público y en el Poder Popular, conforme a las políticas, lineamientos y estrategias que se establezcan al efecto.

__________________________________________________________________

Atrévete, usa Linux, sobre todo Canaima GNU / Linux.

La Lucha es Global y somos Ciudadanos Globales, todos a luchar por un Mundo Mejor!

Anuncios

Gracias por tus comentarios...

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s