Terminal Biyernes: Bash [Pangunahing Pagpapalawak]

Una sa lahat nais kong humingi ng paumanhin, dahil noong Biyernes ay hindi ko naisulat ang post kaya ngayon ay magdaragdag ako ng dagdag upang mabawi ang nawalang araw. 🙂

Pagpapalawak ng Brace

Sa Espanyol, ang pangunahing pagpapalawak sa tingin ko ay isang pagpapaandar na inspirasyon ng c-kabibi, bumubuo ito ng mga kumbinasyon sa pagitan ng mga character na ipinasok sa loob ng mga brace, ang pagkakasunud-sunod na ginagamit nito ay mula kaliwa hanggang kanan. Hindi man ito kumplikado, ngunit ito ay isang pagpipilian na magiging kapaki-pakinabang sa aming mga paglilibot sa GNU / Linux.

Halimbawa:

$ echo isang {1,2,3} a1 a2 a3

Kapag ginamit sa mga kuwit (,) bumubuo ng mga kumbinasyon sa pagitan ng halaga a at mga halagang nasa loob ng mga tirante. Kung walang halaga sa labas ng mga brace, ipapakita lamang nito ang bawat halaga na naglalaman ang susi.

$ echo {a, b, c} abc

Ang paggamit nito ay hindi kumplikado sa lahat, may iba pang mga karaniwang mga halimbawa tulad ng paglikha ng maraming mga direktoryo sa isang folder

$ mkdir ~ / Trabaho / {isa, dalawa, tatlo, apat, lima}

Lumilikha ito ng limang mga folder sa loob ng folder ng mga trabaho, ito ay tulad ng pagpasok ng isang utos nang paisa-isa. Lumilikha ng 5 mga direktoryo.

Mayroong paglawak ng dalawang puntos .. Lumilikha ito ng isang serye ng mga numero o character na mula sa paunang halaga hanggang sa huling halaga, huwag gumamit ng mga may letrang numero.

$ echo {1..5} #Correct 1 2 3 4 5 $ echo {a..f} #Correct abcdf $ echo {a..5} #Incorrect {a..5} # Sa palagay ko hindi ako masasanay dito asul na kulay sa liham

Makakatipid tayo ng oras sa pamamagitan ng paglikha ng isang cycle para

# Sa halip na magsulat ng $ para sa ((i = 1; i <= 5; i ++)); gawin ang echo "Ang aking numero na $ i"; tapos na ang Aking numero 1 Aking numero 2 Aking numero 3 Aking numero 4 Aking numero 5 #I-save ang code gamit ang pagpapalawak ng brace. $ para sa i sa {1..5}; gawin ang echo "Ang aking numero $ i; tapos ang Aking numero 1 Aking numero 2 Aking numero 3 Aking numero 4 Aking numero 5 # Siyempre ito ay wastong gamitin kahit na iba ang output. $ echo" Ang aking numero "{1..5} Aking numero 1 Ang aking numero 2 Ang aking numero 3 Ang aking numero 4 Ang aking numero 5

Kaya sa palagay ko ang konsepto ay malinaw, haha ​​ngayon ay magkomento lamang ako na ito ay pinagsasama at naka-pugad. Ano ang ibig kong sabihin dito?
Sa pamamagitan ng pagsasama na maaari kaming sumali sa isa o higit pang mga susi

$ echo {a..c} {1..3} a1 a2 a3 b1 b2 b3 c1 c2 c3

Gamit ang pugad ng maraming naiisip na maaari mong gamitin ang mga key ng pagpapalawak sa loob ng mga key ng pagpapalawak

$ echo {a, c {1..3}, d} a c1 c2 c3 d

At sa wakas galing bash 4 posible na taasan ang mga halaga.

$ echo {0..20..2} 0 2 4 6 8 10 12 14 16 18 20

Ito ay para sa ngayon, kaya salamat sa pagbabasa sa akin ng mga tao 🙂

dagdag

Paano lumikha ng isang lokal na basurahan

Pag sinabi ko a bin lokal na ibig kong sabihin isang direktoryo kung saan mayroon kaming sariling mga script at posible na maipatupad ang mga ito bilang isang simpleng utos ...

Ang pagkamit nito ay medyo madali, ang unang bagay na kailangan mong gawin ay lumikha ng isang direktoryo kung saan mai-save namin ang mga script.

mkdir ~ / .bin # Sa halimbawang ito ay maitatago ito

Ngayon ay mayroon kaming folder upang mai-save ang mga script ngunit hindi ito gagana hanggang idagdag namin ang landas ng bagong .bin sa $ PATH
Para sa mga ito ang file ay nai-edit bash_profile, at ang linya ay idinagdag.

i-export ang PATH = $ PATH: ~ / .bin

At voila na sapat na upang lumikha ng isang lokal na basurahan, siyempre hihingi ito ng mga pahintulot sa ugat kung kinakailangan para sa isang halimbawa sumulat kami ng isang mabilis na script.

#! / bin / bash echo "Kumusta $ 1, kumusta ka?"

I-save ito sa pangalan ng hoy
Ang script ay binibigyan ng pahintulot sa pagpapatupad at magiging sapat lamang ito upang tawagan ito mula sa terminal

$ hello wada # Ipapakita nito ang mensahe Kumusta wada, kumusta ka?

Kaya sa mabilis na trick na ito maaari mong patakbuhin ang iyong mga script nang mas mabilis

Iyon lang para sa ngayon ang mga taong maayos na 🙂
PS Paumanhin sa mga pagkakamali, kung meron man, pumikit na ang aking mga mata hahaha 😀


Iwanan ang iyong puna

Ang iyong email address ay hindi nai-publish. Mga kinakailangang patlang ay minarkahan ng *

*

*

  1. Responsable para sa data: Miguel Ángel Gatón
  2. Layunin ng data: Kontrolin ang SPAM, pamamahala ng komento.
  3. Legitimation: Ang iyong pahintulot
  4. Komunikasyon ng data: Ang data ay hindi maiparating sa mga third party maliban sa ligal na obligasyon.
  5. Imbakan ng data: Ang database na naka-host ng Occentus Networks (EU)
  6. Mga Karapatan: Sa anumang oras maaari mong limitahan, mabawi at tanggalin ang iyong impormasyon.

  1.   dhunter dijo

    Matagal na ako sa bash isyu at hindi ko naintindihan ang mga pagpapalawak ng mga ito, salamat.

    Sa trick ng landas, ang Fedora bilang default ay gumagawa ng katulad nito ngunit sa "~ / .local / bin", tingnan ang isang snippet mula sa bash_profile na dinala ko kay Jessie.

    PATH = $ PATH: $ HOME / .local / bin: $ HOME / basurahan
    i-export ang PATH

    1.    Ricardo dijo

      Mayroon akong ilang mga alalahanin:
      1. Paano ko makukuha sa kanya na bigyan ako ng dalawang agwat na may paglawak ng mga puntos; edad na {1..24,55..90} at pinalawak ko ang edad mula 1 hanggang 24 at nagpapatuloy sa 55 hanggang XNUMX. tulad ng ginawa ko hindi ito gumana. Bakit?

      2. Kung nais kong maging walang bisa ang unang halaga at magpatuloy sa pagnunumero:
      wget: http://manga.favorito / imahe http://manga.favorito/imagen1
      Sinubukan ko ang sumusunod na paraan ngunit hindi nakuha: http://manga.favorito/imagen{, 1..42} Ayon sa akin, kakailanganin kong iwanan ang unang pangalan nang walang isang numero at magpatuloy sa pagnunumero mula 1 hanggang 42 ngunit hindi ganoon. Bakit?

    2.    Wada dijo

      Tama ang ilang mga distrito mayroon o nagkaroon ng .bin ngunit para sa lahat na maunawaan at makita na posible na gawin ito sa anumang distro: D, Salamat sa pagtigil.

  2.   demo dijo

    Napakahusay na napakahusay para sa mga kontribusyon ng kaalaman sa mundo ng linux at ang seguridad nito, ilang Biyernes inaasahan kong mabasa ko kung paano i-format ang isang pendrive sa isang terminal at magsunog ng isang imahe ng DVD / CD ng anumang libreng system sa isang terminal.

    1.    Wada dijo

      Salamat sa iyong mga salita kapatid 😀 Ipinapangako ko sa susunod na Biyernes gagawin ko ang post na iyon. At dapat isa tungkol sa pagpapasadya ng Vim hahaha ngunit hindi ko nais na isipin nila na saklaw lamang nito si Vim.

  3.   edoardo_or dijo

    Mahusay na artikulo ng terminal, ang pinakamahusay na nabasa ko sa mahabang panahon, na binibilang ang maraming mga blog na naglalathala ng mga tutorial ng ganitong istilo. Maraming salamat!!

    1.    Wada dijo

      Maraming salamat 😀 Susubukan kong makasabay.

  4.   juanli dijo

    Mahusay na Tip ng Lokal na bas!
    Pagbati!

    1.    Wada dijo

      Magaling, mahusay na ito ay kapaki-pakinabang sa iyo, maraming salamat sa pagpasa sa kapatid 😀

  5.   giskard dijo

    Napakahusay! Walang ideya tungkol dito. Salamat 🙂

    1.    Wada dijo

      Maligayang pagdating kapatid salamat sa iyo sa paglalaan ng oras upang basahin ito 😀

  6.   Ricardo dijo

    Mayroon akong ilang mga alalahanin:
    1. Paano ko makukuha sa kanya na bigyan ako ng dalawang agwat na may paglawak ng mga puntos; edad na {1..24,55..90} at pinalawak ko ang edad mula 1 hanggang 24 at nagpapatuloy sa 55 hanggang XNUMX. tulad ng ginawa ko hindi ito gumana. Bakit?

    2. Kung nais kong maging walang bisa ang unang halaga at magpatuloy sa pagnunumero:
    wget: http://manga.favorito/imagen http://manga.favorito/imagen1

    Sinubukan ko ang sumusunod na paraan ngunit hindi nakuha: http://manga.favorito/imagen{, 1..42} Ayon sa akin, kakailanganin kong iwanan ang unang pangalan nang walang isang numero at magpatuloy sa pagnunumero mula 1 hanggang 42 ngunit hindi ganoon. Bakit?
    * Paumanhin ngunit inilagay ko ang unang post bilang isang sagot at mali ito sa ilang bahagi

    1.    Wada dijo

      1.- Mali ang iyong lohika kailangan mo itong pugad hahaha subukan mo $ echo {{1..24},{55..90}}

      2.- Parehas sa naunang ... $ echo "URL"{,{1..42}}

      Huwag kang magalala kuya, nandito kami upang tulungan kami 🙂

  7.   jvk85321 dijo

    Upang palitan ang para sa echo magiging ganito ang hitsura

    echo ang "Ang numero ko" {1..5} $ '\ n' | sed -e: a -e '$! N; s / \ n / \ n /; ta' | sed -e: a -e '$! N; s / 5 \ n / 5 /; ta'

    pero mas gusto ko ang printf

    printf "I, I% d \ n" {1..5}

    at gamitin ang parehong konsepto ng pangunahing pagpapalawak

    atte
    jvk85321

    1.    jvk85321 dijo

      Paano mo mailalagay ang mga kahon ng terminal ????

      atte
      jvk85321

  8.   jvk85321 dijo

    Pagsubok kung gumagana ang code tag
    hehe

    Upang palitan ang para sa echo magiging ganito ang hitsura

    echo “Mi numero “{1..5}$’\n’ | sed -e :a -e ‘$!N;s/\n /\n/;ta’ | sed -e :a -e ‘$!N;s/5\n/5/;ta’

    pero prefiero printf

    printf “Mi numero %d\n” {1..5}

    at gamitin ang parehong konsepto ng pangunahing pagpapalawak

    atte
    jvk85321

    1.    jvk85321 dijo

      Naiwan ako sa ilang mga bug ngunit gumana ito

      Nabubuhay ako ng maluco

      Pasensya na sa nakakaabala

      atte
      jvk85321

      1.    Wada dijo

        Hahaha sinagot mo ang sarili mo ngunit kung nasa pagitan ng mga etiketa walang puwang ...

        At sa pagpapalit ng para sa hindi kinakailangan na gumawa ng labis na tubo hahahaha sapat sa:
        echo -e "Mi numero "{1..5}"\n\b"

        Upang maging matapat na printf ay ang pinakamahusay na paraan upang mag-print ng teksto sa mga script, ito ay mas portable ngunit ayon sa kaugalian ay gumagamit ng echo.

      2.    Wada dijo

        Kinukuha ko ang mga puwang! hahahahaha

        tingnan natin ngayon 😀

      3.    Wada dijo

        Fuck ito ay "mas mababa sa" code "na mas malaki kaysa sa" "mas mababa sa" / code "mas malaki kaysa sa" hahahaha

      4.    jvk85321 dijo

        Ang problema na echo -e ay hindi pamantayan, kaya't hindi ito gumagana sa lahat ng mga system.

        Lumabas din na magulo
        jvk@jvktos:~$ echo -e "Mi numero "{1..5}"\n\b"
        Mi numero 1
        Mi numero 2
        Mi numero 3
        Mi numero 4
        Mi numero 5

        jvk@jvktos:~$
        At kasama nito
        jvk@jvktos:~$ echo "Mi numero "{1..5}$'\n' | sed -e :a -e '$!N;s/\n /\n/;ta' | sed -e :a -e '$!N;s/5\n/5/;ta'
        Mi numero 1
        Mi numero 2
        Mi numero 3
        Mi numero 4
        Mi numero 5
        jvk@jvktos:~$

        Sa palagay ko ang pangalawa ay nagpapakita ng mas mahusay na resulta, hahaha

        atte
        jvk85321

      5.    jvk85321 dijo

        Ang mga label na ito ay isang bummer, he, tingnan natin kung gumagana ang mga ito ngayon
        jvk@jvktos:~$ echo -e "Mi numero "{1..5}"\n\b"
        Mi numero 1
        Mi numero 2
        Mi numero 3
        Mi numero 4
        Mi numero 5
        jvk@jvktos:~$

        At kasama nito
        jvk@jvktos:~$ echo "Mi numero "{1..5}$'\n' | sed -e :a -e '$!N;s/\n /\n/;ta' | sed -e :a -e '$!N;s/5\n/5/;ta'
        Mi numero 1
        Mi numero 2
        Mi numero 3
        Mi numero 4
        Mi numero 5
        jvk@jvktos:~$

        Sa palagay ko ang pangalawa ay nagpapakita ng mas mahusay na resulta, hahaha
        atte
        jvk85321

      6.    jvk85321 dijo

        Gayunpaman, iwanan ang mga puwang sa pagitan ng mga linya, iyon ang dahilan kung bakit galit ako sa html, hahahaha

  9.   Joaquin dijo

    Napakahusay! Pumalakpak ako sa paa mo haha

    Hindi ko alam na ang mga key ay maaaring mapugad, dahil hindi ko kailanman sinubukan na gamitin ang mga ito, talagang nakakatipid ito ng maraming code at mas nababasa din sa ganitong paraan. Salamat!

    1.    Wada dijo

      Salamat sa iyo sa pagpasa ng kapatid, natutuwa akong kapaki-pakinabang ito

      1.    Joaquin dijo

        Malugod ka, iyon ang narito para sa atin, upang ibahagi at mag-ambag ng mga ideya. Hindi ko alam kung paano mag-program, nagawa ko lang ang ilang mga bagay sa Bash at nai-publish ko sa dalawang post ang ilang mga script na ginawa ko. Sa palagay ko ang pagkakaalam nito ay maaaring gawing mas madaling maunawaan ang code.