Prak-prakan pangsaéna pikeun nyiptakeun Shell Script dina GNU / Linux

Biasana nalika anjeun ngamimitian damel dina Area administrasi Server nganggo GNU / Linux sareng / atanapi Sistem Operasi Unix, salah saurang mendakan diri (rupa) damel di lingkungan anu biasana aya kebat tugas dijadwalkeun admin séjén nyerat sareng éta dina sababaraha waktos urang kedah ngatur (ngatur) keur ngarengsekeun masalah, ningkatkeun sareng / atanapi ngaleungitkeun, pikeun nyumponan sarat anyar Lembaga dimana anjeunna damel. Janten teu anéh, anu énggal SysAdmin Di tempat damel naon waé, anjeun nyanghareupan padamelan rumit pikeun ngartos sababaraha hal Naskah cangkang diciptakeun ku batur lami SysAdmin, anu henteu nyerat saé, atanapi aya dina struktur anu logis atanapi nyerat, henteu gampang dipikaharti, atanapi dina kasus anu paling parah, kalayan paréntah paréntah, teu ati, lami, teu épisién, atanapi nyerat ku cara anu kagok sareng ngabingungkeun.

cangkang Scriptingwaktu ngarengsekeun naskah anu teu ditulis sok janten gangguan sakedap, ieu ngajar saha waé alus SysAdmin hal anu penting. Upami salah bade ngadamel a Naskah cangkang pikeun dianggo saluareun ayeuna, sok langkung saé nyeratna ku cara anu propésional pisan sareng standarisasi, supados langkung waktos, saha deui, atanapi nyalira, tiasa sareng usaha minimal sareng pengetahuan ngahontal pamahaman sareng administrasi dina waktos anu minimal.

Kituna, saatos séri praktis publikasi dina "Diajar Nulis Cangkang" dimana urang nalungtik sababaraha naskah anu praktis pisan ku paréntah saderhana sareng dasar, urang bakal ngamimitian ku séri anyar ieu anu disebat "Prakték pangsaéna pikeun nyiptakeun Shell Script dina GNU / Linux", dimana urang bakal fokus pisan kana unggal aspék sakedik na sareng alesan pikeun seueur hal, nyaéta, urang bakal nutupan sababaraha tip anu bakal ngajantenkeun urang ngadamel skrip anu langkung saé, tapi henteu seueur pikeun diri urang sorangan, tapi pikeun jalma salajengna (SysAdmin) anu kedah ngatur aranjeunna. Janten anjeun henteu kedah ngalangkungan tugas anu sesah sareng hésé pikeun terang naon anu kuring kode, kumaha sareng kunaon, sareng naha éta henteu tiasa dianggo deui.

dina ieu pos kahiji (1) tina séri anyar ieu "Prakték pangsaéna pikeun Shell Script anu saé pikeun GNU / Linux" Urang bakal nyarioskeun perkawis naon anu kedah atanapi kedahna dina Lulugu skrip Shell.

=======================================
HEADER - INVOKASI JARING
=======================================

#! / path / nafsirkeun [parameter-argumen]

Garis luhur mangrupikeun struktur dasar anu nganggo Shell Script pikeun GNU / Linux. Unsur na tiasa didadarkeun sapertos kieu:

#! => sha-bang

The sha-bang (#!) di luhur Naskah anu diciptakeun atanapi anu bakal didamel nyaéta a skrip anu nyaritakeun Sistem Operasi kami yén file kami mangrupikeun serangkaian paréntah anu bakal dieusian (bakal diinterpretasi) ku juru paréntah anu dituduhkeun saatos éta. Pasangan karakter #! saleresna, éta a angka sihir dua-bait, spidol khusus éta nunjuk jinis file, sareng di urang, naskah cangkang laksana. Langsung saatos sha-bang aya nami jalur dimana penerjemah anu bakal dieksekusi ayana ditambahan nami juru nyarios. Kalayan kecap séjén, ieu jalan pikeun program anu nafsirkeun paréntah dina naskah, naha éta nyaéta juru, basa pamrograman, atanapi utiliti. Cangkang ieu teras ngaéksekusi paréntah dina naskah, dimimitian di luhur (garis saatos sha-bang), sareng teu malire komentar naon waé. Sababaraha heug Éta tiasa:

#! / Bin / sh
#! / bin / bash
#! / usr / bin / perl
#! / usr / bin / tcl
#! / bin / sed -f
#! / usr / awk -f

Masing-masing garis anu ditétélakeun di luhur (salaku conto) nyungkeun cangkang anu béda. Jalur na / Bin / sh, nyalukan teh kerang sacara standar (Bash dina Sistem Operasi GNU / Linux) atanapi anu sanésna. Ngagunakeun #! / Bin / sh, nilai standar tina Bourne Cangkang Dina kaseueuran varian komérsial Sistem Operasi anu dumasar kana UNIX, éta ngajantenkeun Skrip didamel portabel ka Sistem Operasi sanés anu sanés Linux leres, tapi mirip atanapi dumasar kana éta atanapi UNIX, sanaos ieu ngorbankeun fitur khusus BASH. Nanging, sekuen na "#! / Bin / sh" saluyu sareng norma POSIX sh standar.

Catet yén jalur anu dipasihkeun dina sha-bang kedah leres, upami teu kitu pesen kasalahan, biasana "Paréntah henteu kapendak", éta bakal jadi hiji-hijina hasil tina ngajalankeun skrip. Émut pasangan karakterna »#! « éta tiasa disingkahkeun upami Naskah ngan diwangun ku sakumpulan paréntah Sistem Operasi umum, nyaéta, henteu nganggo arahan Shell internal. Sareng tetep diémutan sakali deui éta »#! / Bin / sh« nyuhungkeun panarjamah cangkang standar, anu standar pikeun »#! / Bin / bash« dina hiji tim sareng anjeunna Sistem Operasi GNU / Linux.

Perkawis argumen, aya sababaraha anu tiasa dianggo tapi anu paling umum nyaéta: »-E«. anu ngajantenkeun naskahna validasi kasalahan palaksanaan paréntah naon waéo (garis pelaksanaan) sareng upami positip, maksakeun eureun sareng kaluar, anu has nyaéta »-F« keur nunjukkeun naskah mana anu badé dimuat sareng salah sahiji anu paling langka nyaéta »-Rm« anu ngalaksanakeun hapusan éta saatos palaksanaan na parantos réngsé. Ngan ukur tiasa ditetepkeun dina heug nepi ka argumen tunggal (parameter) saatos nami program kanggo dijalankeun.

Sareng pamustunganana, carioskeun naskahna variabel global anu bakal anjeun anggo dina bagian penting tina kode anjeun, pikeun validasi kajadian, sapertos jalur palaksanaan, pangguna anu diidinan, nami skrip, sareng anu sanésna. Sareng dipungkas ku data tina program, panyipta, organisasi, sareng anu sanésna, ditambah lisénsi anu lumaku pikeun program.

Naséhat kuring (Prakték pangsaéna) milih anu pangsaéna sha-bang sareng pos a Naskah cangkang Aranjeunna:

#! / usr / bin / env bash

Naha ngagunakeun paréntah »Env« Kami nunjukkeun kana Sistem Operasi panarjamahan pikeun dianggo sareng jalur anu pasti anu ditetepkeun di jerona sacara standar, anu ngamungkinkeun urang ngagaduhan heug anu ningkatkeun portabilitas na, sabab henteu sadayana OS GNU / Linux juru basa atanapi program ngagaduhan jalur anu sami. Sareng tanpa alesan, sabab pikeun éta langkung saé nganggo paréntah ngatur, sabab ku anjeunna urang tiasa validasi kasalahan, umum (-e) atanapi khusus (+ x / -x), atanapi ka prédét global anu jelas pikeun variabel lingkungan (-i) atanapi spésifik (-u / –unset). Sareng tungtungna, ka ngaéksekusi tindakan khusus (- o) pelengkap jero naskah.

Janten HEADER anu disarankeun mah nyaéta:

#! / usr / bin / env bash
# Nunjukkeun juru bash kalayan jalur absolut ku Sistem Operasi.

atur -o errexit
# Pikeun ngawartosan skrip pikeun ngeureunkeun sareng nutup nalika paréntah atanapi garis pelaksanaan gagal.

atur -o nomina
# Pikeun ngawartosan skrip pikeun ngeureunkeun sareng nutup nalika skrip nyobian nganggo variabel anu henteu didéklarasikeun.

nyetél -o pipah
# Pikeun kéngingkeun status kaluar tina urutan anu terakhir anu ngaluarkeun kode kaluar anu teu nol.

# atur -o xtrace
# Pikeun ngalacak naon anu ngajalankeun. Mangpaat pikeun debugging. Aktipkeun pikeun mariksa kasalahan waé.

Émut pikeun ogé nuturkeun saran ieu:

01.- Ngadaptarkeun kode anjeun: Ngadamel kode anjeun tiasa dibaca penting pisan, sareng éta hal anu sigana seueur jalma ogé hilap. Coba cobian indénsasi anu diperyogikeun pikeun ningali struktur logis anu saé.

02.- Tambahkeun rohangan pamisah antara bagian kode: Ieu tiasa ngabantosan kode na langkung kahartos, sabab jarak ku modul atanapi bagian ngabantosan kode na tiasa dibaca sareng gampang dipikaharti.

03.- Koménkeun sabisa-bisa ngeunaan kode: Di luhur (atanapi handap) unggal Paréntah Paréntah (Garis Pelaksana) atanapi Bagéan Code, langkung saé pikeun nambihan pedaran fungsi skrip (s) pikeun ngajelaskeun naon anu lumangsung dina kode éta sorangan.

04.- Nyiptakeun variabel ku ngaran deskriptif fungsina: Napelkeun nami variabel deskriptif anu jelas-leres ngaidentipikasi fungsi anu mana bakal dilakukeun. Sanaos anjeun nyiptakeun variabel samentawis anu moal pernah dianggo diluar blok kode tunggal, masih hadé pikeun nempatkeun nami anu sacara implisit (obyektif) ngajelaskeun naon nilai atanapi fungsi anu dicekelna.

05.- Anggo sintaksis VARIABLE = $ (paréntah) pikeun paréntah paréntah: Upami anjeun hoyong ngadamel variabel anu niléyna diturunkeun tina paréntah anu sanés, aya dua cara pikeun ngalakukeunana dina bash. Kalayan tonggong, nyaéta, sareng karakterna " , Contona: VARIABLE = `parameter paréntah -optik`, tapi éta parantos lungsé, maka sintaksisna VARIABLE = $ (paréntah) éta cara anu paling modéren, ditampi sareng disarankeun. NO -> DATE = `date +% F` / YES -> DATE = $ (tanggal +% F)

06.- Anggo modul Superuser sareng Validasi Pamaké anu Resmi sareng / atanapi variabel nganggo atanapi henteu nganggo kecap akses: Pikeun ningkatkeun tingkat kaamanan upami diperlukeun.

07.- Anggo modul sareng / atanapi variabel Validasi Sistem Operasi (Distro, Versi, Arsitéktur): pikeun nyegah panggunaan dina platform anu teu cocog.

08.- Anggo modul (prosedur / bagian) pikeun mastikeun palaksanaan tindakan kritis atanapi angkatan (modul / fungsi): Pikeun ngaleutikan kasalahan kusabab improvisasi atanapi kalaluar.

09.- Nyayogikeun Konférénsi Ramah Pamaké (pangguna-friendly): Ku Terminal kalayan ménu sareng warna kalayan dialog jeung Antarbeungeut Grafis pikeun Pamaké Dasar kalayan Zenity, Gxmessage. Sareng upami tiasa nganggo dukungan idéntifikasi tanda sonic tina kajadian anu tiasa dikenal numutkeun sora. Kuring nyobian sabisa-bisa anu Naskah anjeun tiasa dianggo duanana cara ngan ukur ku ngamungkinkeun sareng nganonaktifkeun pilihan / modul / fungsi.

10.- Kalebet modul Wilujeng sareng Pamitan (pesen): upami perlu pikeun ningkatkeun interaktivitas sareng pangguna.

11.- Kalebet modul verifikasi palaksanaan dobel: Nyiptakeun file konci pikeun nyegah tina dieksekusi langkung ti 1 waktos dina waktos anu sasarengan.

12.- Rasionalkeun ukuran naskah sareng fungsi éksternal sareng / atanapi modul: Upami Naskah ageung pisan, bagi kode nganggo fungsi atanapi bagi kana skrip alit anu disebat nganggo anu utama.

13.- Invokasi ku cara anu jelas sareng jelas nyaéta panggero ka Panarjamah sanés (bahasa pamrograman) dina Naskah: Undang aranjeunna sacara jelas ku garis atanapi modul.

contona:

# ================================================== #
#!/bin/bash
#Llamando a un interprete externo a BASH
echo 'El siguiente texto será mostrado por el interprete de PERL'
perl -e 'print "Este texto es mostrado por un script PERL embebido.\n";'
exit 0
# ==================================================#

 

# ==================================================# 
#!/bin/bash #Llamando al interprete de Python. 
echo 'El siguiente es un script de python:'
echo print "Hola, mundo!" | tee $HOME/.testpythonbash.py
python $HOME/.testpythonbash.py exit 0
# ==================================================#

 


# ======================================================= #
#!/bin/bash
# bash-y-perl.sh

echo "Saludos desde la parte BASH del script."
# Es posible añadir mas comandos BASH aqui.

exit 0
# Fin de la parte BASH del script.

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

#!/usr/bin/perl
# Esta parte del script se invoca con la opcion -x.

print "Saludos desde la parte PERL del script.\n";
# Podemos añadir mas comandos PERL aqui.

# Fin de la parte PERL del script.
# ======================================================= #
 

Dina publikasi ka hareup urang bakal ngajentrekeun kalayan langkung rinci unggal prakték anu ditétélakeun di luhur.

Sareng upami anjeun terang sababaraha prakték anu hadé, anjeun atanapi anu sanés, tong ragu-ragu mairan kana éta pikeun ngahasilkeun kompénsium anu langkung lengkep!

Dugi ka publikasi salajengna tina séri anyar ieu.


Eusi tulisan taat kana prinsip urang tina étika éditorial. Pikeun ngalaporkeun kasalahan klik di dieu.

6 koméntar, tinggalkeun anjeun

Ninggalkeun koméntar anjeun

email alamat anjeun moal diterbitkeun.

*

*

  1. Jawab data: Miguel Ángel Gatón
  2. Tujuan tina data: Kontrol SPAM, manajemén koméntar.
  3. Legitimasi: idin anjeun
  4. Komunikasi data: Data moal dikomunikasikan ka pihak katilu kacuali ku kawajiban hukum.
  5. Panyimpenan data: Basis data anu diayakeun ku Occentus Networks (EU)
  6. Hak: Iraha waé anjeun tiasa ngawatesan, cageur sareng mupus inpormasi anjeun.

  1.   Max j ​​rodriguez cenahna

    Ngan hiji detil, éta "shebang" 😛
    tulisan anu saé pisan, prakték anu hadé dina jangka panjang sok ngabantuan ngabakukeun standarisasi.

  2.   Hiji anu kaliwatan di dieu cenahna

    Bash sanés cangkang standar dina sadaya distribusi, sareng kusabab éta tautan simbolis / bin / sh henteu salawasna nunjuk kana bash. Dina Debian contona (sareng kuring nganggap Ubuntu):
    $ ls -l / bin / sh
    lrwxrwxrwx 1 root root 4 aza 8 2014 / bin / sh -> dash
    Cangkang standar maka dina Debian dasbor. Tingali di dieu: https://wiki.debian.org/Shell

  3.   teu aya namina cenahna

    Salaku tip pikeun terang Shell dina Pamakéan:

    kamandang $ 0
    kamandang $ SHELL
    ngirim | grep SHELL

  4.   Jose Albert cenahna

    Anjeun leres leres! Kuring diuji dina DEBIAN 9 sareng Kali Linux 2.0 sareng éta leres! nyandak anjeun dash. Komo deui rekomendasi ti: #! / Usr / bin / env bash upami éta Shell anu badé dianggo.

    Sareng anjeun leres leres éta shebang, tapi dina sababaraha situs wéb (literatur téknis) aranjeunna nyebatna shabang atanapi kecap sanésna, janten lieur kuring. Conto:

    Dina komputasi, shebang mangrupikeun sekuen karakter anu diwangun ku tanda nomer karakter sareng tanda panyeluk (#!) Dina awal naskah. Disebut ogé sha-bang, [1] [2] hashbang, [3] [4] pound-bang, [5] atanapi hash-pling

    ti: https://en.wikipedia.org/wiki/Shebang_%28Unix%29

    Y Bab 2. Ngamimitian sareng Sha-Bang
    ti: http://www.tldp.org/LDP/abs/html/sha-bang.html

  5.   Jose Albert cenahna

    Ogé: basename $ 0