Terminal fredag: Bash [nøkkelutvidelse]

Først og fremst vil jeg beklage, siden sist fredag ​​kunne jeg ikke skrive innlegget, så i dag vil jeg legge til en ekstra for å gjøre opp den tapte dagen. 🙂

Brace-utvidelse

På spansk virker nøkkelutvidelse for meg å være en funksjon inspirert av C skallgenererer dette kombinasjoner mellom tegnene som skrives inn i selene, rekkefølgen den bruker er fra venstre til høyre. Det er ikke komplisert i det hele tatt, men det er et alternativ som vil være veldig nyttig i våre turer til GNU / Linux.

Eksempel:

$ ekko a {1,2,3} a1 a2 a3

Når det brukes med komma (,) genererer kombinasjoner mellom verdien a og verdiene i parentesene. Hvis det ikke var noen verdi utenfor tastene, ville den bare vise en gang hver verdi som nøkkelen inneholder.

$ ekko {a, b, c} abc

Bruken er ikke komplisert i det hele tatt, det er andre mer vanlige eksempler som å lage mange kataloger i en mappe

$ mkdir ~ / Jobs / {en, to, tre, fire, fem}

Dette oppretter fem mapper i jobbmappen, det er som å skrive inn en kommando om gangen. Opprette de 5 katalogene.

Det er utvidelse med to poeng .. Dette skaper en serie tall eller tegn som går fra den opprinnelige verdien til den endelige verdien, ikke bruk bokstaver.

$ echo {1..5} #Correct 1 2 3 4 5 $ echo {a..f} #Correct abcdf $ echo {a..5} # Inkorrekt {a..5} # Jeg tror jeg aldri blir vant til dette blå farge i bokstav

Vi kan spare tid ved å lage en syklus forum

#I stedet for å skrive $ for ((i = 1; i <= 5; i ++)); gjør ekko "Mitt nummer $ i"; gjort Mitt nummer 1 Mitt nummer 2 Mitt nummer 3 Mitt nummer 4 Mitt nummer 5 # Lagre kode ved hjelp av brace-utvidelse. $ for i i {1..5}; gjør ekko "Mitt nummer $ i; ferdig Mitt nummer 1 Mitt nummer 2 Mitt nummer 3 Mitt nummer 4 Mitt nummer 5 # Selvfølgelig er det gyldig å bruke selv om utdataene er forskjellige. $ echo" Mitt nummer "{1..5} Mitt nummer 1 Mitt nummer 2 Mitt nummer 3 Mitt nummer 4 Mitt nummer 5

Vel, jeg tror konseptet er klart, haha ​​nå vil jeg bare kommentere at det kan kombineres og nestes. Hva mener jeg med dette?
Kan kombineres slik at vi kan bli med på en eller flere taster

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

Med hekking som mange kan forestille seg, kan du bruke utvidelsestaster innen utvidelsestaster

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

Og til slutt fra Bash INGENTING det er mulig å øke verdiene.

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

Dette er alt for i dag, så takk for at du leser meg folk 🙂

ekstra

Hvordan lage en lokal søppel

Når jeg sier a bin lokal mener jeg en katalog der vi har våre egne skript, og det er mulig å utføre dem som en enkel kommando ...

Å oppnå dette er relativt enkelt. Det første du trenger å gjøre er å opprette en katalog der vi vil lagre skriptene.

mkdir ~ / .bin # I dette eksemplet blir det skjult

Nå har vi mappen vår for å lagre skriptene, men den fungerer ikke før vi legger til banen til den nye .bin til $ PATH
For dette redigeres filen bash_profile, og linjen er lagt til.

eksporter PATH = $ PATH: ~ / .bin

Og voila som er nok til å opprette en lokal søppel, selvfølgelig vil den be om rottillatelser om nødvendig for et eksempel, vi skriver et raskt skript.

#! / bin / bash echo "Hei $ 1, hvordan har du det?"

Lagre den med navnet på Hallo
Skriptet får gjennomføringstillatelse, og det vil bare være nok til å ringe det fra terminalen

$ hallo wada # Dette vil vise meldingen Hallo wada, hvordan har du det?

Så med dette raske trikset kan du kjøre skriptene dine raskere

Det er alt for i dag mennesker som har det bra 🙂
PS Unnskyld feilene hvis det er, øynene mine lukker allerede hahaha 😀


Legg igjen kommentaren

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *

*

*

  1. Ansvarlig for dataene: Miguel Ángel Gatón
  2. Formålet med dataene: Kontroller SPAM, kommentaradministrasjon.
  3. Legitimering: Ditt samtykke
  4. Kommunikasjon av dataene: Dataene vil ikke bli kommunisert til tredjeparter bortsett fra ved juridisk forpliktelse.
  5. Datalagring: Database vert for Occentus Networks (EU)
  6. Rettigheter: Når som helst kan du begrense, gjenopprette og slette informasjonen din.

  1.   dhunter sa

    Jeg har vært i bash-utgaven i lang tid, og jeg hadde ikke forstått brace-utvidelsene disse, takk.

    På banetrikset gjør Fedora som standard noe slikt, men i "~ / .local / bin", se på et snutt fra bash_profilen som jeg tok med til Jessie.

    PATH = $ PATH: $ HOME / .local / bin: $ HOME / bin
    eksporter PATH

    1.    Ricardo sa

      Jeg har noen bekymringer:
      1. Hvordan får jeg ham til å gi meg to intervaller med utvidelse etter poeng; i alderen {1..24,55..90} og at jeg utvider alderen fra 1 til 24 og fortsetter med 55 til nitti. som jeg gjorde fungerte det ikke. Hvorfor?

      2. Hvis jeg vil at den første verdien skal være null og fortsette med nummereringen:
      wget: http://manga.favorito /bilde http://manga.favorito/imagen1
      Jeg prøvde på følgende måte, men wget fikk ikke: http://manga.favorito/imagen{, 1..42} Ifølge meg måtte jeg la fornavnet være uten et nummer og fortsette med nummereringen fra 1 til 42, men det var ikke slik. Hvorfor?

    2.    Wada sa

      Du har rett i at noen distroer har eller hadde en .bin, men det er slik at alle kan forstå og se at det er mulig å gjøre det i hvilken som helst distro: D, takk for at du stoppet innom.

  2.   demo sa

    Veldig bra veldig bra for disse kunnskapsbidragene til linuxverdenen og dens sikkerhet, en fredag ​​håper jeg at jeg kunne lese hvordan jeg kan formatere en pendrive i en terminal og brenne et iso DVD / CD-bilde av ethvert gratis system i en terminal.

    1.    Wada sa

      Takk for ordene dine bror 😀 Jeg lover at neste fredag ​​skal jeg gjøre det innlegget. Og jeg må en om å tilpasse Vim hahaha, men jeg ville ikke at de skulle tro at det bare ville omfatte Vim.

  3.   edoardo_eller sa

    Utmerket terminalartikkel, den beste jeg har lest på lenge, og teller flere blogger som publiserer tutorials av denne stilen. Takk så mye!!

    1.    Wada sa

      Tusen takk 😀 Jeg vil prøve å følge med.

  4.   juanli sa

    Utmerket tips om den lokale søpla!
    Greetings!

    1.    Wada sa

      Utmerket, flott at det er nyttig for deg, tusen takk for bestått bror 😀

  5.   giskard sa

    Veldig bra! Ingen anelse om dette. Takk 🙂

    1.    Wada sa

      Du er velkommen bror takk til deg for at du tok deg tid til å lese den 😀

  6.   Ricardo sa

    Jeg har noen bekymringer:
    1. Hvordan får jeg ham til å gi meg to intervaller med utvidelse etter poeng; i alderen {1..24,55..90} og at jeg utvider alderen fra 1 til 24 og fortsetter med 55 til nitti. som jeg gjorde fungerte det ikke. Hvorfor?

    2. Hvis jeg vil at den første verdien skal være null og fortsette med nummereringen:
    wget: http://manga.favorito/imagen http://manga.favorito/imagen1

    Jeg prøvde på følgende måte, men wget fikk ikke: http://manga.favorito/imagen{, 1..42} Ifølge meg måtte jeg la fornavnet være uten et nummer og fortsette med nummereringen fra 1 til 42, men det var ikke slik. Hvorfor?
    * Beklager, men jeg la det første innlegget som svar, og det var feil i noen deler

    1.    Wada sa

      1.- Logikken din er feil, du må hekke den hahaha prøv med $ echo {{1..24},{55..90}}

      2.- Samme som den forrige ... $ echo "URL"{,{1..42}}

      Ikke bekymre deg bror, vi er her for å hjelpe oss 🙂

  7.   jvk85321 sa

    For å erstatte for med ekko vil det se slik ut

    ekko "Mitt nummer" {1..5} $ '\ n' | sed -e: a -e '$! N; s / \ n / \ n /; ta' | sed -e: a -e '$! N; s / 5 \ n / 5 /; ta'

    men jeg foretrekker printf

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

    og bruke det samme konseptet med nøkkelutvidelse

    atte
    jvk85321

    1.    jvk85321 sa

      Hvordan setter du terminalboksene ????

      atte
      jvk85321

  8.   jvk85321 sa

    Tester om kodekoden fungerer
    hehe

    For å erstatte for med ekko vil det se slik ut

    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}

    og bruke det samme konseptet med nøkkelutvidelse

    atte
    jvk85321

    1.    jvk85321 sa

      Jeg sitter igjen med noen feil, men det fungerte

      Jeg lever maluco

      Unnskyld at jeg forstyrrer

      atte
      jvk85321

      1.    Wada sa

        Hahaha du svarte deg selv, men hvis det er mellom etikettene ingen mellomrom ...

        Og på erstatning av for er det ikke nødvendig å gjøre så mye pipe hahahaha nok med:
        echo -e "Mi numero "{1..5}"\n\b"

        For å være ærlig er printf den beste måten å skrive ut tekst i skript, den er mer bærbar, men bruker tradisjonelt ekko.

      2.    Wada sa

        Jeg tar mellomrommene! hahahahaha

        la oss se nå 😀

      3.    Wada sa

        Faen det er "mindre enn" kode "større enn" "mindre enn" / kode "større enn" hahahaha

      4.    jvk85321 sa

        Problemet med at ekko -e ikke er standard, så det fungerer ikke på alle systemer.

        Kommer også rotete ut
        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:~$
        Og med dette
        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:~$

        Jeg tror det andre presenterer resultatet bedre, hahaha

        atte
        jvk85321

      5.    jvk85321 sa

        Disse merkelappene er en bummer, hehehe, la oss se om de ordner seg nå
        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:~$

        Og med dette
        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:~$

        Jeg tror det andre presenterer resultatet bedre, hahaha
        atte
        jvk85321

      6.    jvk85321 sa

        Uansett, la mellomrom være mellom linjene, det er derfor jeg hater html, hahahaha

  9.   Joaquin sa

    Utmerket! Jeg klapper med føttene haha

    Jeg visste ikke at nøkler kunne nestes, siden jeg heller aldri prøvde å bruke dem, det sparer veldig mye kode, og det er også mer lesbart på denne måten. Takk skal du ha!

    1.    Wada sa

      Takk til deg for bestått bror, jeg er glad for at det var nyttig utilidad

      1.    Joaquin sa

        Du er velkommen, det er det vi er her for å dele og bidra med ideer. Jeg vet ikke hvordan jeg skal programmere, jeg gjorde bare et par ting i Bash og jeg publiserte noen skript som jeg gjorde i to innlegg. Jeg tror at å vite dette kan gjøre koden lettere å forstå.