Mostrando entradas con la etiqueta powershell. Mostrar todas las entradas
Mostrando entradas con la etiqueta powershell. Mostrar todas las entradas

jueves, 17 de abril de 2025

Programando en Perl no. 7

Perl (Practical Extraction and Report Language) es uno de esos lenguajes que a todos llaman la atención, pero a muy pocos lo suficiente para adentrarse más en el.

Se dice que es mejor que Python, que Ruby.

Quienes lo han usado en su entorno laboral mencionan que es más útil que AWK para la manipulación de archivos. Mejor que un simple Shell (bash shell) para efectuar tareas relacionadas a la administración de sistemas.

Y que decir de los advenedizos como Powershell. Perl se considera como ese viejo confiable. Seguro y eficiente, pero pasado de moda, muy pasado de moda.

¿Para qué usarlo?

Simple, porque lo hecho en Perl, a pesar de los años, no deja de funcionar.

Quizás, en un futuro no muy lejano, lo usarás para el tratamiento y generación de ficheros de texto que con otros lenguajes te llevaría más tiempo. O es probable que tengas que administrar sistemas y muchos de los scripts que hay que darles mantenimiento sean escritos en Perl o deban ser trasladados a ese lenguaje.

Ahora seguiremos con los ejemplos.

Ejemplo 1. Crear un programa que ordene de manera alfabética el contenido de un archivo. El archivo contiene los siguientes datos:

archivo.txt

1
2
3
4
5
6
7
8
manzana
guayaba
uva
pera
arandano
platano
naranja
durazno

ordenar.pl

use strict;

print "\t Ordenar el contenido de un archivo \n";
open ( my $archivo, "<", "archivo.txt" ) or die $!;
my @lineas = <$archivo>;
print sort @lineas;


exit;

Ejecutar:

$ perl ordenar.pl

Salida:

         Programando en Perl
arandano
durazno
guayaba
manzana
naranja
pera
platano
uva

Ejemplo 2. Calcular el IMC de una persona. El programa deberá tener una función de calcule el IMC. Los datos de entrada serán el peso y talla de una persona.

imc.pl

use strict;
use warnings;

# Función para el cálculo de IMC
sub calc_imc(){
    print "\t [  Calcular el IMC  de una persona ]\n";
    print "Tu peso: ";
    chomp(my $peso=<STDIN>);
    print "Tu estatura: ";
    chomp(my $talla=<STDIN>);
    my $imc = &get_imc($peso,$talla);
    print "Un peso de: $peso y una talla de $talla da como resultado un IMC de: $imc\n";
    
}

# Función 'main' del programa.
sub main{
  calc_imc();
}

main();

Ejecutar:

$ perl imc.pl

Salida:

         [  Calcular el IMC  de una persona ]
Tu peso: 45
Tu estatura: 1.55
Un peso de: 45 y una talla de 1.55 da como resultado un IMC de: 18.7304890738814

Ejemplo 3. Crear un script que verifique si un host está caído.

verifica.pl

#!/usr/bin/perl
use strict;
use warnings;

# Solicitar al usuario el host a verificar
print "Ingresa el hostname o dirección IP a verificar (ejemplo: google.com o 8.8.8.8): ";
my $host = <STDIN>;
chomp($host);

# Validar que el host no esté vacío
if (!$host) {
    die "Error: Debes ingresar un hostname o dirección IP válido.\n";
}

# Determinar el comando ping según el sistema operativo
my $ping_cmd;
if ($^O =~ /Win32/i) {
    # Windows: usar -n 4 para 4 intentos
    $ping_cmd = "ping -n 4 $host";
} else {
    # Unix/Linux: usar -c 4 para 4 intentos
    $ping_cmd = "ping -c 4 $host";
}

# Ejecutar el comando ping y capturar el resultado
my $output = `$ping_cmd 2>&1`;
my $exit_code = $?;

# Verificar el resultado del ping
if ($exit_code == 0) {
    print "El host $host está ACTIVO (responde al ping).\n";
} else {
    print "El host $host está CAÍDO o no responde al ping.\n";
    print "Detalles del error:\n$output\n";
}

exit 0;

Ejecución:

$ perl verifica.pl

Salida:

Ingresa el hostname o direcci├│n IP a verificar (ejemplo: google.com o 8.8.8.8): facebook.com
El host facebook.com está ACTIVO (responde al ping).

CPAN

CPAN (Comprehensive Perl Archive Network) es el repositorio principal para módulos y bibliotecas de Perl, y la herramienta cpan es el cliente oficial para interactuar con él. Algo similar a lo que es Maven de Java.

¿Para qué sirve? Nos sirve para:

  • Para instalar, buscar, actualizar y gestionar módulos de Perl.
  • Para ahorrarnos la vida programando algo que alguien más ya hizo.

Para instalar un módulo podemos:

Entrar al Shell:

>cpan
Loading internal logger. Log::Log4perl recommended for better logging

Starting with version 2.29 of the cpan shell, a new download mechanism
is the default which exclusively uses cpan.org as the host to download
from. The configuration variable pushy_https can be used to (de)select
the new mechanism. Please read more about it and make your choice
between the old and the new mechanism by running

    o conf init pushy_https

Once you have done that and stored the config variable this dialog
will disappear.
Unable to get Terminal Size. The Win32 GetConsoleScreenBufferInfo call didn't work. The COLUMNS and LINES environment variables didn't work. at C:\Strawberry\perl\vendor\lib/Term/ReadLine/readline.pm line 410.

cpan shell -- CPAN exploration and modules installation (v2.36)
Enter 'h' for help.

cpan> install Module::Name

O sin la necesidad de entrar al Shell:

cpan install Module::Name

Donde:

  • Module es el módulo.
  • Name el nombre de la función.

Comandos básicos

Instalar módulos (sin entrar al Shell):

$ cpan install Net::Ping

Buscar módulos (entrando al Shell):

cpan> m /Ping/

Listar módulos:

cpan> i

Listar módulo en específico:

cpan> i Net::Ping

Actualizar módulos:

cpan> upgrade

Actualizar módulos sin entrar al Shell:

cpan upgrade

Actualizar módulo en específico:

$ cpan install Net::Ping

Actualizar el propio CPAN:

cpan> install CPAN

Ver información de los módulos, en este caso de Net::Ping

cpan> d Net::Ping

Probar un módulo sin instalar:

cpan> test Net::Ping

Forzar la instalación de un módulo:

cpan> force install Net::Ping

Salir de CPAN:

cpan> quit

También es útil ver la onfiguración de CPAN:

cpan> o conf

Cambiar la configuración:

cpan> o conf urllist push http://mirror.cpan.org/

Una vez instalado el módulo Net::Ping podríamos modificar el programa que verifica si un host esta caído.

verificawithping.pl

#!/usr/bin/perl
use strict;
use warnings;
use Net::Ping;

# Solicitar al usuario el host a verificar
print "Ingresa el hostname o dirección IP a verificar (ejemplo: google.com o 8.8.8.8): ";
my $host = <STDIN>;
chomp($host);

# Validar que el host no esté vacío
if (!$host) {
    die "Error: Debes ingresar un hostname o dirección IP válido.\n";
}

# Crear objeto Net::Ping
my $p = Net::Ping->new("icmp");

# Verificar si el host responde
if ($p->ping($host, 2)) {  # 2 segundos de tiempo de espera
    print "El host $host está ACTIVO (responde al ping).\n";
} else {
    print "El host $host está CAÍDO o no responde al ping.\n";
}

# Cerrar el objeto
$p->close();

exit 0;

Conclusión

Perl es un lenguaje con una curva de aprendizaje relativamente sencillo y con una amplia comunidad. Además cuenta con una considerable cantidad de librerías y framework que lo apoyan. Sin embargo, en la actualidad con el surguimiento de "nuevos" lenguajes de programación como Golang o Rust su futuro no estan promovedor.

Perl es útil para sistemas heredados, sistemas que requieren ciertos ajustes, actualizaciones o mantenimiento. Quienes tengan que hacer ese trabajo, deberán aprenderlo.

Para quienes no, es mejor vislumbrar otras alternativas (como Python).

Aquí seguiremos hablando sobre este lenguaje para quienes lo necesiten.

Enlaces:

https://www.perl.org/
Empresas que usan Perl
¿Por qué y para qué usar Perl?

domingo, 18 de febrero de 2024

Un programa en varios lenguajes

 

Esta ocasión veremos un ejemplo de programa escrito en varios lenguajes de programación como: Java, Erlang, Python, Powershell, Clojure y otros más.

Ejercicio: Un programa que determine si una cadena ("ABC") tiene una longitud distinta de cero. Si la longitud de cadena es distinta de cero, que imprima la cadena en pantalla. Si no cumple la condición deberá mandar el mensaje: "Cadena vacía".

En pseudo código sería algo como esto:

// Pseudo code language
prog longitud:{
     var cadena:String = "ABC";
     var longitud:Int = cadena.size;
     if longitud != 0 then
        disp "${cadena}"
     else
        disp "Cadena vacía"
}


Por temas de espacio algunos bloques de código son omitidos para no hacer más grande el código, usted disculpe.

En Powershell:

longitud.ps1

$cadena="ABC"

if($cadena.Length -ne 0){
   Write-Host $cadena  
}
else{
   Write-Host "Cadena vacia"
}

En Clojure:

longitud.clj

(ns longitud)

(def cadena "ABC")
(def longitud (count cadena))
(if (not= longitud 0)
   (println cadena)
   (println "Cadena vacia")
)

En Erlang:

longitud.erl

-module(longitud).
-author("Codemonkey Junior Blogspot").
-version("1.0.0").
-export([start/0]).

println(Cosa) -> io:format("~p~n", [Cosa]).

start()->
    Cadena="ABC",
    Longitud=string:length(Cadena),
    if 
     Longitud /= 0 ->
       println(Cadena);
    true ->
       println("Cadena vacia")
    end.

En OpenEdge ABL:

longitud.p

define var as char no-undo initial "ABC".

if length(cadena)<>0 then
   disp cadena.
else
   disp "Cadena vacia".

En Rust:

longitud.rs

let cadena:String = String::from("ABC");

if cadena.chars().count()!=0 {
   println!("{}",cadena)
}
else{
   println!("Cadena vacia")
}

En PL/SQL:

longitud.sql

SET SERVEROUTPUT ON
DECLARE
  cadena varchar2(3):='ABC';
  BEGIN
       IF LENGTH(cadena) != 0 THEN
          dbms_output.put_line(cadena);
       ELSE
          dbms_output.put_line('Cadena vacia');
       END IF;
  END;
/

En Elixir:

longitud.exs

cadena = "ABC"

if String.length(cadena) != 0 do
  IO.puts "#{cadena}"
else
  IO.puts "Cadena vacia"
end

En R:

longitud.r

cadena <- "ABC"

if(nchar(cadena) != 0) {
  sprintf("%s",cadena)
}else{
  print("Cadena vacia")
}

En DataStage BASIC:

longitud.dsx

Option Explicit

' Declaración de variables
Dim cadena As String

' Asignación de valor a la variable
cadena = "ABC"

' Verificación de la longitud de la cadena
If Len(cadena) <> 0 Then
    ' Imprimir la cadena si no está vacía
    Print cadena
Else
    ' Imprimir un mensaje si la cadena está vacía
    Print "Cadena vacia"
End If

En Ballerina:

longitud.bal

import ballerina/io;

public function main() {
    string cadena = "ABC";

    if (lengthof cadena != 0) {
        io:println(cadena);
    } else {
        io:println("Cadena vacia");
    }
}

En C:

longitud.c

#include <stdio.h>
#include <string.h>

int main() {
    char cadena[] = "ABC";

    if (strlen(cadena) != 0) {
        printf("%s\n", cadena);
    } else {
        printf("Cadena vacia\n");
    }

    return 0;
}

En C++:

longitud.cpp

#include <iostream>
#include <string>

int main() {
    std::string cadena = "ABC";

    if (!cadena.empty()) {
        std::cout << cadena << std::endl;
    } else {
        std::cout << "Cadena vacia" << std::endl;
    }

    return 0;
}

En Haskell:

longitud.hs

main :: IO ()
main = do
    let cadena = "ABC"
    if length cadena /= 0
        then putStrLn cadena
        else putStrLn "Cadena vacia"

En Prolog:

longitud.pl

cadena_valida('ABC') :- write('ABC').
cadena_valida('') :- write('Cadena vacia').

main :- cadena_valida('ABC').

En Python:

longitud.py

cadena="ABC"
if len(cadena) !=0:
   print(cadena) 
else:
   print("Cadena vacia")

Este post se irá actualizando... see you later !!

domingo, 3 de diciembre de 2023

Powershell , CMD y otras cosas más

En este post veremos:

  • ¿Qué es Powershell?
  • ¿Qué es CMD?
  • ¿Qué es HTA?
  • ¿Qué es VBScript?

Powershell es considerado tanto una herramienta administrativa como un lenguajes de programación para scripting. Se considera una mejora con respecto a CMD de Windows, con toques de Perl y Bash Linux. También tiene toques de VbScript. Con el se pueden realizar tareas de automatización y otro tipo de aplicaciones con propósito general.

¿Cómo inicio con Powershell?

Powershell viene por defecto en entornos Windows. Para MacOS y Linux deberás instalarlo. En Ubuntu puedes hacer lo siguiente. Abre una terminal y teclea esto:

sudo apt-get update
sudo apt-get upgrade
sudo snap install powershell --classic

Otra forma:

# Prerequisites

# Update the list of packages
sudo apt-get update

# Install pre-requisite packages.
sudo apt-get install -y wget apt-transport-https software-properties-common

# Get the version of Ubuntu
source /etc/os-release

# Download the Microsoft repository keys
wget -q https://packages.microsoft.com/config/ubuntu/$VERSION_ID/packages-microsoft-prod.deb

# Register the Microsoft repository keys
sudo dpkg -i packages-microsoft-prod.deb

# Delete the the Microsoft repository keys file
rm packages-microsoft-prod.deb

# Update the list of packages after we added packages.microsoft.com
sudo apt-get update

###################################
# Install PowerShell
sudo apt-get install -y powershell

# Start PowerShell
pwsh

Para comprobar que tienes instalado Powershell debes teclear:

$PSVersionTable

Hay comandos bastantes útiles:

Get-Help
Get-Process
Get-Location
Get-ChildItem
Get-Content
Start-Process
Stop-Process
Get-Psdrive
Get-Alias
Get-Start
Get-Stop

Si quieres obtener ayuda sobre algún comando puedes usar Get-Help seguido del comando a elegir. Ejemplo:

Get-Help Get-Alias -examples

Con esto obtenemos información del comando y algunos ejemplos de cómo usarlo.

Si quieres obtener información de algún programa (proceso) puedes teclear:

Get-Process powershell,chrome

En este caso queremos ver la información de Powershell y el navegador Chrome. Básicamente, con Powershell puedes administrar máquinas locales y remotas, crear scripts y hacer uso de .Net Framework para crear aplicaciones útiles.

¿Y qué pasa con CMD?

Se trata de una aplicación. Anteriormente un SO. Es un interprete de comandos. Abre una terminal con tecla Windows + R y teclea: cmd. Con esto se abrirá la terminal. Escribe ahora: help.

ASSOC          Muestra o modifica las asociaciones de las extensiones
               de archivos.
ATTRIB         Muestra o cambia los atributos del archivo.
BREAK          Establece o elimina la comprobaci¢n extendida de Ctrl+C.
BCDEDIT        Establece propiedades en la base de datos de arranque para
               controlar la carga del arranque.
CACLS          Muestra o modifica las listas de control de acceso (ACLs)
               de archivos.
CALL           Llama a un programa por lotes desde otro.
CD             Muestra el nombre del directorio actual o cambia a otro
               directorio.
CHCP           Muestra o establece el n£mero de p gina de c¢digos activa.
CHDIR          Muestra el nombre del directorio actual o cambia a otro
               directorio.
CHKDSK         Comprueba un disco y muestra un informe de su estado.
CHKNTFS        Muestra o modifica la comprobaci¢n de disco al arrancar.
CLS            Borra la pantalla.
CMD            Inicia una nueva instancia del int‚rprete de comandos
               de Windows
COLOR          Establece los colores de primer plano y fondo predeterminados
               de la consola.
COMP           Compara el contenido de dos archivos o un conjunto de archivos.
COMPACT        Muestra o cambia el estado de compresi¢n de archivos
               en particiones NTFS.
CONVERT        Convierte vol£menes FAT a vol£menes NTFS. No puede convertir
               la unidad actual.
COPY           Copia uno o m s archivos en otra ubicaci¢n.
DATE           Muestra o establece la fecha.
DEL            Elimina uno o m s archivos.
DIR            Muestra una lista de archivos y subdirectorios en un
               directorio.
DISKPART       Muestra o configura las propiedades de partici¢n de disco.
DOSKEY         Edita l¡neas de comando, recupera comandos de Windows y
               crea macros.
DRIVERQUERY    Muestra el estado y las propiedades actuales del controlador de dispositivo.
ECHO           Muestra mensajes, o activa y desactiva el eco.
ENDLOCAL       Termina la b£squeda de cambios de entorno en un archivo por lotes.
ERASE          Elimina uno o m s archivos.
EXIT           Sale del programa CMD.EXE (int‚rprete de comandos).
FC             Compara dos archivos o conjunto de archivos y muestra las
               diferencias entre ellos.
FIND           Busca una cadena de texto en uno o m s archivos.
FINDSTR        Busca cadenas en archivos.
FOR            Ejecuta el comando especificado para cada archivo en un conjunto de archivos.
FORMAT         Formatea un disco para usarse con Windows.
FSUTIL         Muestra o configura las propiedades del sistema de archivos.
FTYPE          Muestra o modifica los tipos de archivo usados en
               asociaciones de extensi¢n de archivo.
GOTO           Direcciona el int‚rprete de comandos de Windows a una l¡nea con etiqueta
               en un programa por lotes.
GPRESULT       Muestra informaci¢n de directiva de grupo por equipo o usuario.
GRAFTABL       Permite a Windows mostrar un juego de caracteres extendidos
               en modo gr fico.
HELP           Proporciona informaci¢n de Ayuda para los comandos de Windows.
ICACLS         Muestra, modifica, hace copias de seguridad o restaura listas de control de acceso (ACL) para archivos y 
               directorios.
IF             Ejecuta procesos condicionales en programas por lotes.
LABEL          Crea, cambia o elimina la etiqueta del volumen de un disco.
MD             Crea un directorio.
MKDIR          Crea un directorio.
MKLINK         Crea v¡nculos simb¢licos y v¡nculos f¡sicos
MODE           Configura un dispositivo de sistema.
MORE           Muestra la informaci¢n pantalla por pantalla.
MOVE           Mueve uno o m s archivos de un directorio a otro en la 
               misma unidad.
OPENFILES      Muestra archivos compartidos abiertos por usuarios remotos como recurso compartido de archivos.
PATH           Muestra o establece una ruta de b£squeda para archivos ejecutables.
PAUSE          Suspende el proceso de un archivo por lotes y muestra un mensaje.
POPD           Restaura el valor anterior del directorio actual guardado
               por PUSHD.
PRINT          Imprime un archivo de texto.
PROMPT         Cambia el s¡mbolo de comandos de Windows.
PUSHD          Guarda el directorio actual y despu‚s lo cambia.
RD             Quita un directorio.
RECOVER        Recupera la informaci¢n legible de un disco da¤ado o defectuoso.
REM            Registra comentarios (notas) en archivos por lotes o CONFIG.SYS.
REN            Cambia el nombre de uno o m s archivos.
RENAME         Cambia el nombre de uno o m s archivos.
REPLACE        Reemplaza archivos.
RMDIR          Quita un directorio.
ROBOCOPY       Utilidad avanzada para copiar archivos y  rboles de directorios
SET            Muestra, establece o quita variables de entorno de Windows.
SETLOCAL       Inicia la localizaci¢n de los cambios de entorno en un archivo por lotes.
SC             Muestra o configura servicios (procesos en segundo plano).
SCHTASKS       Programa comandos y programas para ejecutarse en un equipo.
SHIFT          Cambia la posici¢n de par metros reemplazables en archivos por lotes.
SHUTDOWN       Permite el apagado local o remoto de un equipo.
SORT           Ordena la salida.
START          Inicia otra ventana para ejecutar un programa o comando especificado.
SUBST          Asocia una ruta de acceso con una letra de unidad.
SYSTEMINFO     Muestra las propiedades y la configuraci¢n espec¡ficas del equipo.
TASKLIST       Muestra todas las tareas en ejecuci¢n, incluidos los servicios.
TASKKILL       Termina o interrumpe un proceso o aplicaci¢n que se est  ejecutando.
TIME           Muestra o establece la hora del sistema.
TITLE          Establece el t¡tulo de la ventana de una sesi¢n de CMD.EXE.
TREE           Muestra gr ficamente la estructura de directorios de una unidad o 
               ruta de acceso.
TYPE           Muestra el contenido de un archivo de texto.
VER            Muestra la versi¢n de Windows.
VERIFY         Comunica a Windows si debe comprobar que los archivos se escriben
               de forma correcta en un disco.
VOL            Muestra la etiqueta del volumen y el n£mero de serie del disco.
XCOPY          Copia archivos y  rboles de directorios.
WMIC           Muestra informaci¢n de WMI en el shell de comandos interactivo.

Con este comando veremos un listado de comandos disponibles a usar. Comandos útiles para listar directorios, crear archivos, carpetas, borrar archivos y/o carpetas. Entre otras cosas más. Al igual que Powershell podemos crear scripts para automatizar (a nivel más bajo, ya que no es tan "poderoso" como Powershell) algunas tareas.

¿Y qué con HTA (HTML Application)?

Una aplicación HTML (HTA) es un programa de Microsoft Windows cuyo código fuente consta de HTML, HTML dinámico y uno o más lenguajes de secuencias de comandos compatibles con Internet Explorer, como VBScript o JScript.

El HTML se utiliza para generar la interfaz de usuario y el lenguaje de secuencias de comandos se utiliza para la lógica del programa. Una HTA se ejecuta sin las limitaciones del modelo de seguridad del navegador de Internet; de hecho, se ejecuta como una aplicación "totalmente confiable".

Un programa en HTA tiene como extensión *.hta. Es, básicamente, una ventana HTML. Y al tener las bondades de ese lenguaje (HTML) podemos hacer uso de todas sus etiquetas de marcado (p, label, button, select, etc.).

Ejemplo de ventanita simple en HTA:

Ventana.hta

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="MSThemeCompatible" content="Yes"/>
<title>::HTA en ejemplos::</title>
<HTA:APPLICATION
            ID = "admin"
            APPLICATIONNAME = "Admin"
            BORDER = "thick"
            CAPTION = "yes"
            ICON="favicon.ico"
            SHOWINTASKBAR = "yes"
            SINGLEINSTANCE = "no"
            WINDOWSTATE = "normal"
            SCROLL = "no"
            SCROLLFLAT = "yes"
            VERSION = "1.0"
            INNERBORDER = "no"
            SELECTION = "no"
            SYSMENU = "yes"
            MAXIMIZEBUTTON = "yes"
            MINIMIZEBUTTON = "yes"
            NAVIGABLE = "no"
            CONTEXTMENU = "no"
            BORDERSTYLE = "thin"
        />

		
<style type="text/css">
body{
    background-color:#EDEFEE;
    color:black;
    font-family:Helvetica;
}

h1{
    background-color:steelblue;
    color:black;
    text-align:center;
}

</style>
<script language="vbscript">
</script>
</head>

<body>
<div id="pnlPrincipal">
<h1>
Aplicacion HTA
</h1>

</div>
</body>
</html>

A primera vista se trata de tan solo una página HTML, pero con la característica de contar con una etiqueta especial:

<HTA:APPLICATION/>

A más detalle:
<HTA:APPLICATION
            ID = "admin"
            APPLICATIONNAME = "Admin"
            BORDER = "thick"
            CAPTION = "yes"
            ICON="favicon.ico"
            SHOWINTASKBAR = "yes"
            SINGLEINSTANCE = "no"
            WINDOWSTATE = "normal"
            SCROLL = "no"
            SCROLLFLAT = "yes"
            VERSION = "1.0"
            INNERBORDER = "no"
            SELECTION = "no"
            SYSMENU = "yes"
            MAXIMIZEBUTTON = "yes"
            MINIMIZEBUTTON = "yes"
            NAVIGABLE = "no"
            CONTEXTMENU = "no"
            BORDERSTYLE = "thin"
        />

Además de poder agregar código VBScript.

<script language="vbscript">
// Aquí el código VBScript
</script>

El código VBScript es una variación del lenguaje de programación Visual Basic. Posee básicamente la misma sintaxis y estructuras de control. Incluso permite la programación orientada a objetos.

En otros post continuaremos escribiendo sobre éstas herramientas.

Enlaces:

https://elpaladintecnologico.blogspot.com/2009/02/que-es-powershell-ejemplos-basicos-para.html
https://www.codeproject.com/Articles/763145/A-PowerShell-Introduction
https://www.softwaretestinghelp.com/windows-cmd-commands/

viernes, 16 de septiembre de 2022

Bash Script en ejemplos

Bash es básicamente un lenguaje de programación y scripting. El cual nos permite crear sencillas rutinas como listar directorios, crear archivos y/o directorios, mostrar el calendario, fecha actual y otras cosas más complejas como crear usuarios, eliminarlos, actualiar sus passwords o incluso ejecutar tareas automáticas sin necesidad de ejecución manual.

En este post hablaremos un poco de deste lenguaje y mostraremos algunos ejemplos.

holamundo.sh

#!/bin/bash

nombre="Codemonkey Junior"
echo Hola, $nombre

El clásico programa de Hola, mundo. Como se puede obserar la extensión es .sh. Para poder ejecutarlo es preciso antes dar permisos de ejecución. Esto se puede de la siguiente manera:

$ sudo chmod +x holamundo.sh

Ejecutar:

$ ./holamundo.sh

Salida:

Hola, Codemonkey Junior

En el siguiente ejemplo veremos:

  • Definir variables de diferente tipo.
  • Usar variables del sistema.
  • Comprobar si una variable es NULL.
  • Realizar operaciones aritméticas.

variables.sh

#!/bin/bash

# Comentarios multilínea
<< 'MULTILINE-COMMENT'
FUNDAMENTOS DE PROGRAMACION EN BASH SHELL
MULTILINE-COMMENT

# Limpiamos terminal
clear
# Definimos variables tipo Caracter, Entero, Booleano y del sistema
nombre="codemonkey Junior"
entero=34
booleano=true
flotante=9.83
fecha=`date`
directorio=`pwd`

# Mostramos en pantalla el valor de las variables
echo "[Variables en Linux]"
echo "Hola, ${nombre}"
echo "Entero = ${entero}"
echo "Flotante = ${flotante}" 
 
# Comprobamos si una variable es NULL
if $booleano; then echo "Es verdadero: ${booleano}"; else echo "Es falso: ${booleano}"; fi
echo "Fecha de hoy es: ${fecha}"
echo "Estamos en el directorio: ${directorio}"
echo "El nombre del archivo es: $0"

# Realizamos algunas operaciones aritméticas
let num1=21
let num2=1
let suma=${num1}+${num2}
echo "num1=${num1}, num2=${num2}"
echo "Suma = ${suma}"

Otorgar permisos de ejecución:

$ sudo chmod +x variables.sh

Ejecutar:

$ ./variables.sh

En el siguiente ejemplo veremos como realizar operaciones aritméticas básicas: suma, resta, multiplicación, división y residuo(%).

operaciones.sh

#!/bin/bash


# Definimos las variables y su valor
let a=20
let b=5

# Operaciones aritméticas
let suma=$(expr ${a} + ${b})
let resta=$(expr ${a} - ${b})
let producto=`expr $a \* $b`
let division=$(expr ${a} / ${b})
echo "[Operaciones aritmeticas]"
echo "a = ${a}, b = ${b}"
echo "Suma = ${suma}"
echo "Resta = ${resta}"
echo "Producto = ${producto}"
echo "Division = ${division}"
let c=220
let d=200
let residuo=$(expr ${c} % ${d})
echo "c = ${c}, d = ${d}"
echo "Residuo = ${residuo}"

Otorgar permisos de ejecución:

$ sudo chmod +x operaciones.sh

Ejecutar:

$ ./operaciones.sh

En este ejemplo veremos como obtener la longitud de las variables declaradas.

longitud.sh

#!/bin/bash


nombre='ABC'
echo "Cadena = ${nombre}"
# La longitud debe ser de 3
echo La longitud de la variable es: ${#nombre} 
numero=4953
echo "Numero = ${numero}"
# La longitud debe ser de 4
echo La longitud de la variable es: ${#numero} 
booleano=true
echo "Booleano = ${booleano}"
# En este la longitud será de 4, se cuenta cada una de las letras como si fuera un string
echo La longitud de la variable es: ${#booleano} 

Otorgar permisos de ejecución:

$ sudo chmod +x longitud.sh

Ejecutar:

$ ./longitud.sh

En este ejemplo mostraremos el uso de comandos como whoami, pwd y variables del sistema.

usuario.sh

#!/bin/bash

<< 'MULTILINE-COMMENT'
FUNDAMENTOS DE PROGRAMACION EN BASH SHELL
MULTILINE-COMMENT

clear

# Algunos comandos y variables de Linux
quien=`whoami`
donde=`pwd`
mishell=$SHELL
echo "Quien soy?:  ${quien}"
echo "Donde estoy?: ${donde}"
echo "El home es: ${HOME}"
echo "El usuario es: ${USER}"
echo "El shell esta en: ${mishell}"

Otorgar permisos de ejecución:

$ sudo chmod +x usuario.sh

Ejecutar:

$ ./usuario.sh

En próximos post veremos más ejemplos.

Enlaces:

https://www.reiser.cl/bash-manejo-de-cadenas-de-texto/ https://linuxhint.com/variables_bash/ https://linuxize.com/post/bash-comments/ https://www.cyberciti.biz/faq/bash-shell-find-out-if-a-variable-has-null-value-or-not/ https://linuxhint.com/use-boolean-value-in-bash/ https://ryanstutorials.net/bash-scripting-tutorial/bash-arithmetic.php

Jai un lenguaje de programación inspirado en C++

Hoy hablaremos de un nuevo lenguaje de programación llamado Jai . Se trata de un lenguaje de programación que está desarrolland...

Etiquetas

Archivo del blog