Shell, Bash жана Scripts: Shell Scripting жөнүндө.

Бул жаңы мүмкүнчүлүктө (Кириш №8) боюнча "Shell Scriptingти үйрөн" практикага караганда теорияга көбүрөөк көңүл бурабыз. башкача айтканда, биз кодду орнотпойбуз жана изилдебейбиз же белгилүү бир программаны (пакетти) орнотпойбуз, тескерисинче, дүйнө эмне экендигин терең изилдейбиз Shell сценарийи Туура айтканда, төмөндө келтирилген кичинекей, бирок түз суроолорго жооптор аркылуу, ушул убакка чейин окутулган нерселердин көбүн тактоо үчүн, түздөн түз программаланган ички кодго шилтеме бербөө керек:

Shell сценарийиGNU / Linux иштөө тутумундагы Shell деген эмне?

Shell испан тилинде CONCHA (кабык, каптоо, коргоо) дегенди билдирет. Операциялык тутумдарда колдонулган бул термин Операциялык тутумдун буйрук котормочусун билдирет. Жалпысынан, бул Терминал (Консоль) түрүндө көрүнүп, иш жүзүндө 3 маанилүү иш чөйрөсү үчүн колдонулган жогорку сапаттуу тексттик интерфейс:

1.- OS башкаруу,
2.- Колдонмолорду иштетип, алар менен иштешип, жана
3.- Негизги программалоо чөйрөсү катары кызмат кылыңыз.

Көптөгөн SO, GNU / Linux алар дагы эле конфигурация файлдарын, Terminal аркылуу оңдоо жолу менен башкарылат. Жалпы эреже боюнча, алар көздөгөн жолдо табылган: «/жана башкалар", жана ар бир колдонмо үчүн атайын каталогдордун ичинде. Мисалы, программа Lilo (бул Linux Loader дегенди билдирет) жайгашкан жана аталган тексттик файлды түзөтүү менен конфигурацияланган "/Etc/lilo/lilo.conf". Программаларда (тиркемелерде), алар аткарылуучу программанын атын жазуу менен ишке киргизилет (аткарылат / активдештирилет), эгерде ал бардык аткарылуучу программалар үчүн жолдо табылса (демейки жол), адатта, "/ Usr / bin" , же аткарылуучу программанын атын терип: ./, алар жайгашкан каталогдон.

Булардын бардыгы Shell колдонуучуларынын баарына жакшы белгилүү. Бирок, программалоо чөйрөсү катары анын мүмкүнчүлүктөрү анчалык белгилүү эмес жана бааланбайт. Shellде жасалган сценарийлерди (программаларды) түзүүнүн кажети жок. Shell аларды сапка-сапка чечмелейт. Ошондуктан, алар Shell скрипттери деп аталат же аталышат жана жөнөкөй буйруктардан баштап, ОСнын өзүн баштоонун татаал көрсөтмөлөрүнө чейин болот. жетишээрлик таза (ачык) синтаксиске ээ болуу (куруу, буйрутма берүү), аларды программалоо дүйнөсүндө баштоо үчүн жакшы башталыш.

Shell Scripting деген эмне?

Бул Операциялык тутумдун Shell (же жакшылап), же Тексттик редакторду (Графикалык же Терминалдык) колдонуу менен Скриптти (тапшырманы автоматташтыруу файлы) иштеп чыгуу жана түзүү техникасы (жөндөмү / чеберчилиги). Бул жалпысынан чечмеленүүчү программалоо тилинин бир түрү. Башкача айтканда, көпчүлүк программалар компиляцияланган (коддолгон), анткени алар аткарыла электе (компиляция процесси) конкреттүү (атайын) кодго биротоло которулуп, кабыкчанын сценарийи өзүнүн баштапкы формасында калат (анын код тексти булагы) жана аткарылган сайын буйрук боюнча буйрук менен чечмеленет. Сценарийлерди да түзүүгө болот, бирок бул көнүмүш эмес.

Shell Scripting программасынын негизинде программалоонун мүнөздөмөлөрү кандай?

1.- Аларды жазуу оңой (программа), бирок алар аткарылганда иштетүү баасы жогору болот.

2.- Алар чуркоо үчүн компиляторлордун ордуна котормочуларды колдонушат

3.- Алар башка программалоо тилдеринде жазылган компоненттер менен байланыштык байланышта болушат.

4.- Аларды камтыган файлдар жөнөкөй текст катары сакталат.

5.- Акыркы дизайн (код), адатта, түзүлгөн программалоо тилиндеги эквиваленттен кичине болот.

Shell Scripting астында тилдердин эң популярдуу түрлөрү кайсылар?

1.- Тапшырма жана кабыкты башкаруу тили

а) cmd.exe (Windows NT, Windows CE, OS / 2),
б) COMMAND.COM (DOS, Windows 9x),
в) csh, Bash, AppleScript, sh,
г) Windows Script Host аркылуу JScript,
e) Windows Script Host аркылуу VBScript,
е) REXX, башкалар арасында.

2.- GUI сценарийи (Макрос тилдери):

а) AutoHotkey,
б) AutoIt,
в) күтсөк,
г) Автоматор, башкалар.

3.- Конкреттүү тиркемелердин сценарий тили:

а) Flash'тагы ActionScript,
б) MATLAB,
в) mIRC скрипти,
г) QuakeC, башкалар.

4.- Веб программалоо (динамикалык барактар ​​үчүн):

а) сервер тарабында:

- PHP,
- ASP (Active Server Pages),
- JavaServer баракчалары,
- ColdFusion,
- IPTSCRAE,
- Лассо,
- MIVA Script,
- SMX,
- XSLT, башкалардын арасында.

б) кардар тарабынан:

- JavaScript,
- JScript,
- VBScript,
- Tcl, башкалардын арасында.

5.- текстти иштетүү тилдери:

- Ой,
- Перл,
- Чаңкоо,
- XSLT,
- Баш, башкалардын арасында.

6.- Жалпы багыттагы динамикалык тилдер:

- APL,
- Боо,
- Дилан,
- Ферит,
- Толкундатуучу,
- IO,
- Лисп,
- Луа,
- MUMPS (M),
- NewLISP,
- Нува,
- Перл,
- PHP,
- Python,
- Руби,
- Схема,
- Smalltalk,
- SuperCard,
- Tcl,
- Революция жана башкалар.

GNU / Linuxтогу Баш деген эмне?

Бул компьютердин программасы, анын милдети буйруктарды чечмелөө. Бул негизделген Unix shell жана колдойт POSIX. Бул GNU долбоору үчүн жазылган жана көпчүлүк Linux таркатмалары үчүн демейки кабык.

GNU / Linuxто Shell Script деген эмне?

Shell Scripts алар өтө пайдалуу. Бизде болгон муктаждыктарды жазып, андан кийин биз үчүн ушул ишти аткарган сценарийлерди түзөтүү жакшы идея. Учурда, сценарийдин так өзү эмне экендигин сурап көрүүгө убакыт келди. Бул тексттик файл, тутум буйруктардын катарларын камтыйт, аларды система иреттүү түрдө жогорудан төмөн карай аткарат. Аларды түзөтүү үчүн, көптөгөн тексттердин ичинен Emacs, Vi, Nano сыяктуу текст редактору гана керек. Алар ".sh" кеңейтүүсү менен сакталат (же кээ бир учурларда ансыз) жана Shell командасынан иштетилет: sh скрипт name.sh. Сценарийлер кабыктын буйруктары сыяктуу эле иш алып барат.

Жеке мен колдонгон окутуу ыкмасы "Shell Scriptingти үйрөн" Ар бир элементтин өзүнчө иштешин жана ал кандайча иштээрин түшүнмөйүнчө, толук иштей турган Скриптти карап чыгуу, аны ажыроо, сүйлөм менен, сап менен, буйрук менен буйрук, өзгөрмө боюнча өзгөрмө менен изилдөө абдан практикалык жана түз. жалпы коддо. Бул түрү Reverse Engineering же Software Reinineering. Булардын бардыгы билимди өздөштүрүү, өркүндөтүү (оптимизациялоо) жана бөлүшүү максатында, жамааттык пайда алып келүү жана акысыз Иштетүү Системаларын башкаруу жана оптималдаштыруу.

Кантип GNU / Linux Shellде иштейт жана иштейт?

Shell менен иштөөдө биринчи кадам - ​​бул кабыкты иштетүү. Чындык сыяктуу сезилген нерсенин себеби бар. Кээ бир акыркы колдонуучуга багытталган GNU / Linux дистрибутивдеринде кабык кыйла жашырылган. Адатта, мындай деп аталат: Konsole, Terminal, X Terminal, же ушул сыяктуу. Дагы бир вариант - виртуалдык консольду колдонуу. Колдонуу: Сиз колдонгон GNU / Linux таркатылышына жараша Ctrl + Alt + f1, же f2, же f3төн f7 же f8ге чейин. GNU / Linuxто эң көп колдонулган Shell - Баш, бирок ksh же C Shell сыяктуу башкалар бар. Менин учурумда, айрыкча, менин басылмаларым үчүн Баш Шеллди колдоном.

Баш Шелл деп аталган сценарий берилген hello_world.sh төмөнкүлөрдү түшүндүрүүгө болот:

мазмуну:

#! / bin / bash
echo hello world

Бөлүнүү:

Сценарийдин биринчи сабы
#! / bin / bash

Скрипт иштеши керек болгон программаны көрсөтөт. Эгер программа табылбаса, ката кетет.

Сценарийдин экинчи сабы
echo hello world

Echo командасын Hello World аргументтери менен аткарыңыз, аларды экранда көрсөтүү.

Аткарылышы: Сценарийди эки жол менен иштетсек болот

Сценарийди иштетүү үчүн котормочуну чакыруу:
# bash hello_world.sh

Аны төмөнкүдөй иштетсе болот:
# sh hello_world.sh

Бирок сиздин туура Shell чакырылбагандыктан, ал жарымы иштеши мүмкүн. Идеалында, биринчи сапта чагылдырылган Shell аны аткаруу үчүн колдонулат.

Ошондой эле сценарийди түз эле төмөнкүдөй иштете аласыз:
# ./hello_world.sh

Эскертүү: ./ учурдагы каталогдон иштетилгенин көрсөтөт.

Калгандары анализделет, ага сиз киргизген код. Мен бул серияны сизге (адатта, башкаларга караганда, билимге жана билимге ылайык) жактырат деп үмүттөнөм Shell сценарийи.

Интернетте бул темада көптөгөн жакшы шилтемелер бар, бирок мен сизге ушул жерде жайгашкан ушул чакан колдонмону калтырам FromLinux.net Жана бул башка External Guide.

Кийинки билдирүүгө чейин!


Макаланын мазмуну биздин принциптерге карманат редакциялык этика. Ката жөнүндө кабарлоо үчүн чыкылдатыңыз бул жерде.

13 комментарий, өзүңүздүкүн калтырыңыз

Комментарий калтырыңыз

Сиздин электрондук почта дареги жарыяланбайт.

*

*

  1. Маалыматтар үчүн жооптуу: Мигель Анхель Гатан
  2. Маалыматтын максаты: СПАМды көзөмөлдөө, комментарийлерди башкаруу.
  3. Мыйзамдуулук: Сиздин макулдугуңуз
  4. Маалыматтарды берүү: Маалыматтар үчүнчү жактарга юридикалык милдеттенмелерден тышкары билдирилбейт.
  5. Маалыматтарды сактоо: Occentus Networks (ЕС) тарабынан уюштурулган маалыматтар базасы
  6. Укуктар: Каалаган убакта маалыматыңызды чектеп, калыбына келтирип жана жок кыла аласыз.

  1.   d4ny ал мындай деди:

    Lilo .. Linux Loader .. калгандары абдан жакшы маалымат .. рахмат .. salu2 d4ny.-

  2.   Инг. Хосе Альберт ал мындай деди:

    Жакында "Shell Scriptingти үйрөнүү" онлайн курсуна катышып жаткандарга салам жолдойбуз, биз билимди өздөштүрүүнү жана аны баарына жайылтууну улантуу үчүн башка скрипттерди улантабыз.

    Мен сизди күтүп турасыз деп үмүттөнөм, анткени жакында мен өркүндөтүлгөн коддорду баштайм, бирок татаалдыгына карабастан көрүнөө түшүнүктүү болуп ачылам.

    Shell сценарийи менен өтө кичинекей файлдарды колдонуп, платформалык (Differ Distros) көптөгөн татаал нерселерди жасай алаарыңызды унутпаңыз. Мен сизге жакында үйрөтө турган бир нерсенин ушул чакан скринкастын, курсту көрүүнү уланткандарга калтырам жана болгону 50Kb менен көп нерсени убада кылам! Shell Scripting менен жасала турган нерсенин жарымы гана.

    LPI-SB8 Test ScreenCast (LINUX POST ОРНОТУУ - SCRIPT BICENTENARIO 8.0.0)
    (lpi_sb8_adaptation-audiovisual_2016.sh / 43Kb)

    Скринкастты караңыз: https://www.youtube.com/watch?v=cWpVQcbgCyY

    1.    Alberto cardona ал мындай деди:

      Саламатсызбы, сиздин салымыңыз укмуш, чындыгында чоң рахмат !!
      Мен бир аз күмөн санайм, bash менен компиляторду программалай аламбы?
      Же жок дегенде лексикалык анализаторбу?
      ошол күч барбы?

  3.   Инг. Хосе Альберт ал мындай деди:

    Жакында "Shell Scriptingти үйрөнүү" онлайн курсуна катышып жаткандарга салам жолдойбуз, биз билимди өздөштүрүүнү жана аны баарына жайылтууну улантуу үчүн башка негизги сценарийлер менен улантабыз. Мен сизди күтүп турасыз деп үмүттөнөм, анткени жакында мен өркүндөтүлгөн коддорду баштайм, бирок татаалдыгына карабастан көрүнөө түшүнүктүү болуп ачылам.

    Shell сценарийи менен өтө кичинекей файлдарды колдонуп, платформалык (Differ Distros) көптөгөн татаал нерселерди жасай алаарыңызды унутпаңыз. Мен сизге жакында үйрөтө турган бир нерсенин ушул чакан скринкастын, курсту көрүүнү уланткандарга калтырам жана болгону 50Kb менен көп нерсени убада кылам! Shell Scripting менен жасала турган нерсенин жарымы гана.

    LPI-SB8 Test ScreenCast (LINUX POST ОРНОТУУ - SCRIPT BICENTENARIO 8.0.0)
    (lpi_sb8_adaptation-audiovisual_2016.sh / 43Kb)

    Скринкастты караңыз: https://www.youtube.com/watch?v=cWpVQcbgCyY

  4.   Alberto ал мындай деди:

    Салам Хосе,
    Алгач билимиңиз менен бөлүшкөнүңүз үчүн рахмат. Сиздин макалаларыңыз абдан кызыктуу.

    Эки нерсе, менин оюмча, "Салам Дүйнө" деген кош цитаталарды колдонуу жана 0 сценарийи менен биздин сценарийдин таза чыгышы керек

  5.   Инг. Хосе Альберт ал мындай деди:

    Салымдарыңыз үчүн рахмат, кийинки Сценарийден 0 чыгуу, break жана башкалар колдонулганын көрө аласыз!

  6.   Вилларманд ал мындай деди:

    Салам.
    Абдан кызыктуу, сиз аны жөнөкөй кылып көрсөтөсүз; Эми мен Linuxта cron же at программасын иштеп, өчүрүп / токтото туруу / уйку режимине келтире албайм, натыйжада rtc ойготуу командасын колдонуп автоматтык түрдө баштоо мүмкүн эмес экенине көзүм жетти, мен бул буйрук менен скрипт жардам береби же жокпу, билбейм cron жана atды эч нерсе кылбай эле ээрчип кетсе болот, же болбосо аны жасоо мүмкүн эмес, же башкача жасалат, же мен абдан дымактуумун, бирок Windowsто аны жасоо салыштырмалуу жөнөкөй. Мен Linuxка өтүүнү каалайм, бирок мен үчүн өчүрүүнү / токтото турууну / күтүү режимин жана ПКны өзүнөн өзү иштетип туруу маанилүү. Урматтоо менен.

  7.   Инг. Хосе Альберт ал мындай деди:

    Балким, бул сизге жаңычыл идеяларды берет: http://cirelramos.blogspot.com/2016/01/reiniciar-apagar-o-ejecutar-otra-tarea.html

  8.   Вилларманд ал мындай деди:

    Рахмат, мен аларды жакшылап окуп чыгам, мага бир нерсе жардам берет. Урматтоо менен.

  9.   Эдуардо Куомо ал мындай деди:

    Бир нече убакыт мурун мен долбоорду баштадым, менимче, мен аны бир түрү деп эсептейм. Бул Framewok Bash үчүн прототип. Бул тутумга Башты гана талап кылат.
    Эгер кимдир бирөө кызыкдар болсо, аны колдонуп, кызматташууга чакырышат!

    https://github.com/reduardo7/bashx

    Силерге тынчтык болсун!

    1.    кескелдирик ал мындай деди:

      Урматтуу Эдуардо, менин оюмча, бул мыкты долбоор, балким, аны бүт desdelinux жамааты менен бөлүшсөңүз болот, өзүңүздүн долбооруңуз жөнүндө макалаңызды биздин веб-сайтка жарыялай турганыңызды эсиңизден чыгарбаңыз, окууну сунуштайм https://blog.desdelinux.net/guia-redactores-editores/ desdelinux макалаларын түзүү боюнча мыкты тажрыйбалар жана аларды аткаруу тартиби кайда. Балким, жамаат үчүн биринчиден, долбооруңуздун артыкчылыктары жөнүндө билип алсаңыз, экинчиси, ушул нерсени кантип жасоону үйрөнсөңүз болот. Биз сизди чакырабыз жана калгандарын биз менен жана бизди курчап турган жалпы коомчулук менен биргеликте өз долбоорлорун жарыялоого чакырабыз.

  10.   Мигель Уроза Руис ал мындай деди:

    Салам, жакшы күн.
    Мен Linux машиналарын башкаруу дүйнөсү менен тааныш эмесмин, жана сиз ага эмне сунуштай турганыңызды билгим келди: ksh, bash, perl, php, python….
    сен абдан көп жана салам рахмат.
    Мигель.

bool(чын)