Jei turite klausimų apie scenarijus, parašytus komandai „Bash“. Jei naudojate korpuso scenarijus su klaidomis, prieš juos paskelbdami patikrinkite juos su „shellcheck“ programa (arba „shellcheck“ žiniatinklio serveryje adresu https://shellcheck.net). Klausimai apie interaktyvų „Bash“ naudojimą dažniau bus įtraukti į „Super User“ temą nei „Stack Overflow“.

O bash

Yra daug vertėjų, kurie priima komandas internetu arba kaip komandų seką iš failo. Bourne-again (Bash) apvalkalas yra vienas iš tokių vertėjų. „Bash“ įgyvendina „ Bourne Shell“ standartą ir siūlo daug papildomų priedų.

Bash Free Software Foundation“ puslapyje :

„Bash“ yra „ sh suderinamas apvalkalas, kuriame yra naudingų funkcijų iš „KornShell“ (ksh) ir „C“ ( csh ). Jis suprojektuotas taip, kad atitiktų IEEE POSIX P1003.2 / ISO 9945.2 „Shell and Tools“ standartą. Jis siūlo funkcinius patobulinimus, palyginti su programavimo ir interaktyviu naudojimu. Be to, dauguma „sh“ scenarijų gali būti paleisti be pakeitimų.

Jei norite techninių detalių, skaitykite „ Bash“ vadovą.

Bashas parašytas Brian Fox ir pirmą kartą išleistas 1989 metais. Tai yra daugelio „Linux“ paskirstymų ir „MacOS“ numatytasis korpusas; Jis yra prieinamas daugelyje šiuolaikinių operacinių sistemų ir buvo perkeltas į „Windows 10“.

Versija Pastaba

Nuo 2019 m. Sausio mėn. Naujausia „ bash versija yra 5,0, tačiau, priklausomai nuo operacinės sistemos, galite naudoti senesnę versiją ir įdiegti „ bash atnaujinimai. Dauguma „Linux“ įrenginių turėtų naudoti kažką iš 4.x šeimos. „MacOS“ (anksčiau „Mac OS X“), kaip licencijų išdavimo problemos, yra numatytos 3.2 versijos.

Būtinai atkreipkite dėmesį į jūsų klausimą, kokią versiją naudojate. Tai įspės potencialius reaguotojus apie tai, kokios funkcijos yra jums prieinamos, ir kokias klaidas jums reikės ištaisyti.

Galite nustatyti, kurią „ bash versiją naudojate, naudodamiesi „ bash --version arba patikrinkite korpuso kintamojo „ BASH_VERSION .

Be aiškios versijos respondentas gali daryti prielaidą, kad naudojate bent 4.2 versiją. Klausimai, pažymėti „ osx reiškia 3.2 versiją, jei nenurodyta kitaip.

Trumpa išleidimo istorija

Remiantis atsisiuntimais, gautais iš http://ftp.gnu.org/gnu/bash/

nedidelį atskirą pavyzdį . 

  • Neįtraukite skyrių ir komandų, nesusijusių su jūsų problema.
  • Venkite sudėtingų komandų, kurios tiesiog padeda gauti vertę (įskaitant ir tiesiogiai).
  • Venkite naudoti išorinius failus. Sukurkite rinkmenas skristi, įtraukite duomenis tiesiogiai arba į savo klausimą skelbkite nedidelį mėginio failą.
  • Patikrinkite savo pavyzdį. Įsitikinkite, kad jis veikia ir vis dar rodo problemą. Negalima atmesti.

    • Pertvarkymas dėl aiškumo dažnai vengia spąstų, susijusių su tarpais ir pavadinimais.
    • Refactoring dėl paprastumo dažnai apeina gaudykles, susijusias su subshells.
    • Failų ir duomenų kopijavimas dažnai vengia problemų, susijusių su specialiais simboliais.
    • Keliems bandymams praleistos valandos dažnai sukelia kodą iš vienos versijos ir klaidų iš kitos.
  • Patikrinkite bendrų problemų pavyzdį.

    • Paleiskite savo pavyzdį naudodami „ shellcheck arba „ shellcheck internetinę paslaugą, kad būtų automatiškai tikrinama, ar nėra klaidų.
    • Peržiūrėkite „ Bash“ klaidų ir naujokų „Bash“ klaidų sąrašą ir toliau pateiktą skyrių.
    • Patikrinkite savo specialių simbolių duomenis naudodami „ cat -v yourfile arba „ cat -v <<< "$yourvar" . Būkite ypač atsargūs, kai važiuokite atgal (rodoma kaip ^M ).
  • Prašome vengti žymėti klausimus, susijusius tik su išorinėmis komandomis. bash žymė turėtų būti rezervuota problemoms, susijusioms su „bash“, o ne dėl problemų, susijusių su CLI.

  • Kaip paversti blogą scenarijų į gerą klausimą

    Pvz., Tarkime, kad turite scenarijų, įspėjančio jus apie serverio neveikimą, tačiau jis ir toliau perspėja net ir tada, kai įrenginys neveikia:

    Dėkojame, kad padarėte klausimą paprastą ir naudingą! Gražūs balsai!

    (Atkreipkite dėmesį, kad šis „ shellcheck pavyzdys shellcheck lyginamas su atitinkamu įrašu „ Bash“ spąstuose, o klaida automatiškai sugauta „ shellcheck , todėl dabar jūs tikrai neturite paklausti!)

    Populiariausi klausimai

    Kai kurie Bash DUK yra šie.

    Pagrindinės sintaksės ir įprastos pradedančiosios problemos

    Kai kurie „Bash“ pagrindai nustebina net veteranus iš kitų programavimo kalbų.

    Kaip aš ...?

    Kodėl ...?

    Bendrosios užduotys

    Šie klausimai nėra būdingi Bashui, bet yra gana paplitę šioje žymoje, todėl jie nusipelno būti įtraukiami į čia.

    Meta

    Knygos ir ištekliai

    Papildomos skaitymo medžiagos:

    įrankiai

    • shellcheck yra statinis analizės įrankis, nustatantis bendras klaidas.
    • „ShellCheck“ tinkle , žiniatinklio serveryje, kuris suteikia korpuso patvirtinimą (naudinga, jei dar neįdiegėte programos)

    pokalbis

    „Stack Overflow bash pokalbiai yra naudingi koordinuojant darbą šioje žymoje ir, galbūt, kartais, kad gautumėte greitą pagalbą (nors jokių garantijų negalima pateikti; dalyvavimas nėra aiškus).