Shell, Bash i Scripts: Tot sobre Shell Scripting.

En aquesta nova oportunitat (Entrada # 8) sobre «Aprendre Shell Scripting» ens centrarem més en la teoria que la practica. és a dir, no instal·larem ni estudiarem un codi o instal·larem un programari (paquet) en específic, sinó que ens endinsarem en el que és el món de l' Shell Scripting pròpiament dit, mitjançant la respostes a petites però directes preguntes, que són mostrades a continuació, per aclarir fins ara molt de ensenyat, que no es refereix directament a el codi intern que es programa:

Shell Scripting

Què és la Shell en un Sistema Operatiu GNU / Linux?

Shell que en Espanyol significa CONCHA (cuirassa, coberta, protecció). Aplicat aquest terme en Sistemes Operatius es refereix a l'intèrpret de comandaments de el Sistema Operatiu. En general, és una interfície de text d'altes prestacions, i que es manifesta en forma de Terminal (Consola) i que serveix essencialment per a 3 importants àrees de treball:

1.- Administrar el SO,
2.- Executar aplicacions i interactuar amb elles, i
3.- Servir d'entorn bàsic de programació.

Molts SO, GNU / Linux encara s'administren més eficientment editant els seus fitxers configuració, via Terminal. Com a norma general, aquests es troben en la ruta de destinació: «/ Etc », I dins de directoris específics per a cada aplicació. Per exemple, el programa Lilo (Que significa Linux Loader) es configura editant l'arxiu de text situat i anomenat com «/Etc/lilo/lilo.conf». En el cas dels programes (aplicacions), aquests es llancen (s'executen / activen) escrivint el nom de l'executable, si el mateix es troben al path (ruta per defecte) per a tots els executables, com normalment és «/ Usr / bin» , O escrivint el nom de l'executable precedit per: ./, Des del directori on estiguin ubicats.

Tot això, és ben conegut per qualsevol usuari d'Shell. No obstant això, no tan conegudes i apreciades són les seves capacitats com a entorn de programació. Els Script (programes) realitzats en el Shell no necessiten compilar. La Shell els interpreta línia a línia. Per tant, a aquests se'ls coneixen o nomenen com Shells Scripts, i poden arribar ha ser des senzilles ordres fins a complexes sèries d'instruccions per a l'arrencada de l'propi SO En general, tenen una sintaxi (construcció, ordenació) bastant neta (òbvia), Convertint-los en un bon punt d'inici per iniciar-se al món de la programació.

Que és el Shell Scripting?

És la tècnica (habilitat / destresa) de dissenyar i crear Script (arxiu d'automatització de tasques) mitjançant un Shell (preferiblement) d'un Sistema Operatiu, o Editor de Text (Gràfic o Terminal). Aquest és un tipus de llenguatge de programació que generalment és interpretat. És a dir, que mentre la majoria dels programes són compilats (codificats), perquè són convertits permanent a un codi específic (especial) abans que puguin executar-se (procés de compilació), un script de shell roman en la seva forma original (el seu codi font en forma de text) i són interpretats comandament per comandament cada vegada que s'executen. Encara hi ha la possibilitat que els scripts poden ser compilats també, encara que no és usual.

¿Quines són les característiques dels programes basats en programació sota Shell Scripting?

1.- Són més fàcil d'escriure (programar), però amb un cost major de processament quan són executats.

2.- Usen intèrprets en lloc de compiladors per executar-se

3.- Tenen una relació de comunicació amb components escrits en altres llenguatges de programació.

4.- Els arxius que les contenen són emmagatzemats com a text sense format.

5.- El disseny final (codi) sol ser més petit que el que seria l'equivalent a un llenguatge de programació compilat.

¿Quins són els tipus de llenguatges més coneguts sota Shell Scripting?

1.- Llenguatge de control de tasques i shells:

a) cmd.exe (Windows NT, Windows CE, OS / 2),
b) COMMAND.COM (DOS, Windows 9x),
c) csh, Bash, AppleScript, sh,
d) JScript via Windows Script Host,
e) VBScript via Windows Script Host,
f) REXX, entre molts altres.

2.- GUI Scripting (Llenguatges de Macros):

a) Tecla automàtica,
b) AutoIt,
c) Esperar,
d) Automator, entre d'altres.

3.- Llenguatge scripting d'aplicacions específiques:

a) ActionScript a Flash,
b) MATLAB,
c) script mIRC,
d) QuakeC, entre d'altres.

4.- De programació web (per a pàgines dinàmiques):

a) De la banda de servidor:

- PHP,
- ASP (Active Server Pages),
- JavaServer Pages,
- ColdFusion,
- IPTSCRAE,
- Lasso,
- MIVA Script,
- SMX,
- XSLT, entre d'altres.

b) De la banda de el client:

- JavaScript,
- JScript,
- VBScript,
- Tcl, entre d'altres.

5.- Llenguatges de processament de textos:

- AWK,
- Perl,
- Sigueu,
- XSLT,
- Bash, entre d'altres.

6.- Llenguatges dinàmics de propòsit general:

- APL,
- Boo,
- Dylan,
- Ferite,
- Groovy,
- IO,
- Lisp,
- Lua,
- MUMPS (M),
- NewLISP,
- Nuva,
- Perl,
- PHP,
- Python,
- Ruby,
- Scheme,
- Smalltalk,
- SuperCard,
- Tcl,
- Revolution, entre d'altres.

Que és el Bash en GNU / Linux?

És un programa informàtic que té la funció interpretar ordres. Està basat en la shell d'Unix i és compatible amb POSIX. Va ser escrit per al projecte GNU i és l'intèrpret d'ordres per defecte en la majoria de les distribucions de Linux.

Què és un Script de Shell a GNU / Linux?

Els Scripts de Shell són extremadament útils. És bona idea escriure aquelles necessitats que tinguem i després editar scripts que realitzen aquest treball per nosaltres. A hores d'ara, ja és hora de preguntar-se que és exactament un script. És un arxiu de text, que conté una sèrie d'ordres per shell, que el sistema executa ordenadament, de dalt a baix. Per editar-los, tan sols cal un editor de textos, com Emacs, Vi, Nano, entre molts existents. Es guarden amb extensió ".sh" (o sense, en alguns casos) i s'executen des de la Shell mitjançant la comanda: sh nom de script.sh. Els scripts, es comporten de la mateixa manera que les ordres de l'intèrpret d'ordres.

L'enfocament d'ensenyament que jo personalment utilitzo per «Aprendre Shell Scripting» és molt pràctic i directe, és a dir, examinar un Script totalment funcional, descompondre'l, estudiar-sentència per sentència, línia a línia, comanda per comanda, variable per variable, fins a entendre, com funciona cada element per separat i com s'engrana en el codi general. És una espècie de Enginyeria Inversa o Reenginyeria de Programari. Tot això amb la finalitat de apropiar-me de el coneixement, millorar-(optimitzar-) i compartir-ho, en benefici col·lectiu i una millor administració i optimització dels Sistema Operatiu lliures.

¿Com s'executa i treballa en una Shell de GNU / Linux?

El primer pas per treballar amb una Shell és executar un intèrpret d'ordres. Això que sembla una bajanada té la seva raó de ser. En algunes distribucions de GNU / Linux molt enfocades a l'usuari final, l'intèrpret d'ordres està bastant amagada. Normalment, es diu: Konsole, Terminal, Terminal de X, o alguna cosa semblant. Una altra opció és utilitzar una consola virtual. Mitjançant: Ctrl + Alt + f1, o f2, o f3 fins f7 o f8, depenent de la Distribució GNU / Linux que faci servir. La Shell més utilitzada en GNU / Linux és Bash, encara que existeixen altres, com ksh o C Shell. En el meu cas, molt particular per les meves publicacions ús Bash Shell.

Donat un Script fet en Bash Shell anomenat hola_mundo.sh es pot explicar el següent:

Contingut:

#! / Bin / bash
trobo Hola Món

desglossament:

Primera línia de l'script
#! / Bin / bash

Indica el programa que ha d'executar l'script. Si no es troba el programa, es produirà un error.

Segona línia de l'script
trobo Hola Món

Executa l'ordre echo amb els arguments Hola Món, fent que es mostrin per pantalla.

execució: Podem executar l'script de dues formes

Invocant a l'intèrpret perquè executi l'script:
# Bash hola_mundo.sh

També es pot executar com:
# Sh hola_mundo.sh

Però a ell no ser el seu Shell correcte invocat, pot funcionar a mitges. L'ideal és que el Shell invocat en la primera línia sigui l'utilitzat per executar-lo.

També es pot executar directament l'script de la següent manera:
# ./hola_mundo.sh

Nota: ./ indica executar des del directori actual.

De resta el que queda per analitzar és el codi que vostè inseriu dins el mateix. Espero que com sempre els aquest agradant (a uns més que altres, segons les necessitats d'aprenentatge i coneixement) aquesta sèrie de Shell Scripting.

Hi ha molts bons enllaços sobre aquest tema a la web, però els deixo aquesta petita guia situada aquí mateix en DesdeLinux.net i aquesta altra guia Externa.

Fins a la propera publicació!


Deixa el teu comentari

La seva adreça de correu electrònic no es publicarà. Els camps obligatoris estan marcats amb *

*

*

  1. Responsable de les dades: Miguel Ángel Gatón
  2. Finalitat de les dades: Controlar l'SPAM, gestió de comentaris.
  3. Legitimació: El teu consentiment
  4. Comunicació de les dades: No es comunicaran les dades a tercers excepte per obligació legal.
  5. Emmagatzematge de les dades: Base de dades allotjada en Occentus Networks (UE)
  6. Drets: En qualsevol moment pots limitar, recuperar i esborrar la teva informació.

  1.   d4ny va dir

    Lilo .. Linux Loader .. la resta molt bona info .. gràcies .. salu2 d4ny.-

  2.   Eng. Jose Albert va dir

    Salutacions a tots aquells que van seguint el Curs Online de "Aprendre Shell Scripting" aviat continuarem amb altres bàsics script per seguir apropiant de el coneixement i seguir socialitzant el mateix a tots.

    Espero, que segueixin atents perquè aviat començaré amb codis més avançats però exposats de manera que siguin visualment comprensibles malgrat la seva complexitat.

    Recordin que amb el Shell Scripting es poden fer moltes coses complexes que siguin multi-plataformes (Distros Diferents) usant arxius molt petits. Els deixaré aquest petit screencast d'alguna cosa que aviat els ensenyaré, als que segueixin veient el curs, i que amb només 50Kb promet bastant! I no és sinó la meitat del que es pot fer amb Shell Scripting.

    Screencast de Test de l'LPI-SB8 (LINUX POST INSTALL - SCRIPT BICENTENARI 8.0.0)
    (Lpi_sb8_adecuación-audiovisual_2016.sh / 43Kb)

    Veure Screencast: https://www.youtube.com/watch?v=cWpVQcbgCyY

    1.    Alberto Cardona va dir

      Hola, és increïble el teu aporti, de veritat moltes gràcies !!
      Tinc un petit dubte, puc programar un compilador amb bash?
      O almenys un analitzador lèxic?
      té aquesta potència?

  3.   Eng. Jose Albert va dir

    Salutacions a tots aquells que van seguint el Curs Online de "Aprendre Shell Scripting" aviat continuarem amb altres bàsics script per seguir apropiant de el coneixement i seguir socialitzant el mateix a tots. Espero, que segueixin atents perquè aviat començaré amb codis més avançats però exposats de manera que siguin visualment comprensibles malgrat la seva complexitat.

    Recordin que amb el Shell Scripting es poden fer moltes coses complexes que siguin multi-plataformes (Distros Diferents) usant arxius molt petits. Els deixaré aquest petit screencast d'alguna cosa que aviat els ensenyaré, als que segueixin veient el curs, i que amb només 50Kb promet bastant! I no és sinó la meitat del que es pot fer amb Shell Scripting.

    Screencast de Test de l'LPI-SB8 (LINUX POST INSTALL - SCRIPT BICENTENARI 8.0.0)
    (Lpi_sb8_adecuación-audiovisual_2016.sh / 43Kb)

    Veure Screencast: https://www.youtube.com/watch?v=cWpVQcbgCyY

  4.   Alberto va dir

    Hola Jose,
    Primer agrair que comparteixis els teus coneixements. Els teus articles són molt interessants.

    Dues coses, penso que és molt important l'ús de les cometes dobles «Hola Món» i tenir una sortida neta del nostre script amb exit 0

  5.   Eng. Jose Albert va dir

    Gràcies per les teves aportacions, en els pròxims Script veuràs l'ús de l'exit 0, break, i altres!

  6.   Willarmand va dir

    Salutacions.
    Molt interessant, ho fas veure senzill; ara bé, jo m'he topat amb que no puc programar en Linux amb cron o at, el apagar / suspendre / hivernar, amb el consegüent encesa automàtica utilitzant la comanda rtc wake, no sé si un script amb aquest ordre ajudaria, o seguirien cron i at sense fer res, o simplement no es pot, o es fa d'una altra manera, o sóc molt ambiciós, però en Windows és relativament simple fer-ho. Vull mudar-me a Linux, però és important per a mi, programar apagar / suspendre / hivernar i que s'iniciï sola la PC. Salutacions.

  7.   Willarmand va dir

    Gràcies, els vaig a llegir a fons, alguna cosa em servira. Salutacions.

  8.   Eduardo Cuomo va dir

    Fa temps vaig començar un projecte, el qual crec és únic en el seu tipus. És un prototip per a un Framewok Bash. Només requereix d'Bash en el sistema.
    Si algú més està interessat, està convidat a provar-ho i col·laborar!

    https://github.com/reduardo7/bashx

    Salutacions!

    1.    llangardaix va dir

      Benvolgut Eduardo, em sembla un gran projecte, potser podries compartir-ho amb tota la comunitat de desdelinux, recorda que pots publicar un article sobre el teu projecte a la nostra web, si no saps com fer-ho et recomano llegir https://blog.desdelinux.net/guia-redactores-editores/ on hi ha les millors pràctiques per crear articles a desdelinux i el procediment a realitzar. Possiblement per a la comunitat sigui força bo primer conèixer de les bondats del teu projecte i segon aprendre com realitzar aquest tipus de coses. Us convidem i convidem a la resta a donar a conèixer els vostres projectes amb nosaltres i l'àmplia comunitat que ens envolta.

  9.   Miguel Urosa Ruiz va dir

    Hola, bon dia.
    Sóc nou en el món de l'administració de màquines Linux, i volia saber què em recomaneu per a la mateixa: ksh, bash, perl, php, python ....
    Moltes gràcies i una salutació.
    Miquel.