Terminal fredag: Bash [nøgleudvidelse]

Først og fremmest vil jeg gerne undskylde, da jeg sidste fredag ​​ikke kunne skrive indlægget, så i dag vil jeg tilføje en ekstra for at kompensere for den tabte dag. 🙂

Brace-udvidelse

På spansk synes nøgleudvidelse for mig at være en funktion inspireret af C skal, dette genererer kombinationer mellem de tegn, der indtastes inden i selerne, den rækkefølge, den bruger, er fra venstre til højre. Det er slet ikke kompliceret, men det er en mulighed, der vil være meget nyttig i vores ture i GNU / Linux.

Eksempel:

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

Når det bruges med kommaer (,) genererer kombinationer mellem værdien a og værdierne inden i selerne. Hvis der ikke var nogen værdi uden for nøglerne, ville den kun vise en gang hver værdi, som nøglen indeholder.

$ echo {a, b, c} abc

Dens anvendelse er slet ikke kompleks, der er andre mere almindelige eksempler, såsom at oprette mange mapper i en mappe

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

Dette opretter fem mapper i jobmappen, det er som at indtaste en kommando ad gangen. Oprettelse af de 5 mapper.

Der er ekspansion med to punkter .. Dette opretter en række numre eller tegn, der går fra den oprindelige værdi til den endelige værdi, og brug ikke bogstaverne.

$ echo {1..5} #Correct 1 2 3 4 5 $ echo {a..f} #Correct abcdf $ echo {a..5} # Incorrect {a..5} #Jeg tror jeg vil aldrig vænne mig til dette blå farve i bogstavet

Vi kan spare tid ved at oprette en cyklus forum

#I stedet for at skrive $ for ((i = 1; i <= 5; i ++)); gør ekko "Mit nummer $ i"; gjort Mit nummer 1 Mit nummer 2 Mit nummer 3 Mit nummer 4 Mit nummer 5 # Gem kode ved hjælp af bøjleudvidelse. $ for i i {1..5}; gør ekko "Mit nummer $ i; færdigt Mit nummer 1 Mit nummer 2 Mit nummer 3 Mit nummer 4 Mit nummer 5 # Selvfølgelig er det gyldigt at bruge, selvom output er anderledes. $ echo" Mit nummer "{1..5} Mit nummer 1 Mit nummer 2 Mit nummer 3 Mit nummer 4 Mit nummer 5

Nå, jeg tror, ​​konceptet er klart, haha ​​nu vil jeg kun kommentere, at det er kombinerbart og indlejret. Hvad mener jeg med dette?
Kan kombineres, så vi kan slutte os til en eller flere taster

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

Med indlejring som mange ville forestille sig, kan du bruge udvidelsestaster inden for udvidelsestaster

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

Og endelig fra Bash INGENTING det er muligt at øge værdierne.

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

Dette er alt for i dag, så tak fordi du læste mig mennesker 🙂

Ekstra

Sådan oprettes en lokal skraldespand

Når jeg siger en bin lokal Jeg mener en mappe, hvor vi har vores egne scripts, og det er muligt at udføre dem som en simpel kommando ...

Det er relativt let at opnå dette, det første du skal gøre er at oprette en mappe, hvor vi gemmer scripts.

mkdir ~ / .bin # I dette eksempel skjules det

Nu har vi vores mappe til at gemme scriptsne, men den fungerer ikke, før vi tilføjer stien til den nye .bin til $ PATH
Til dette redigeres filen bash_profile, og linjen tilføjes.

eksporter PATH = $ PATH: ~ / .bin

Og voila, det er nok til at oprette en lokal bin, selvfølgelig vil den bede om rodtilladelser, hvis det er nødvendigt for et eksempel, vi skriver et hurtigt script.

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

Gem det med navnet på Hej
Scriptet får eksekveringstilladelse, og det er kun nok til at kalde det fra terminalen

$ hej wada # Dette viser beskeden Hej wada, hvordan har du det?

Så med dette hurtige trick kan du køre dine scripts hurtigere

Det er alt for i dag mennesker, der har det godt 🙂
PS Undskyld for fejl, hvis der er, lukker mine øjne allerede hahaha 😀


Efterlad din kommentar

Din e-mailadresse vil ikke blive offentliggjort. Obligatoriske felter er markeret med *

*

*

  1. Ansvarlig for dataene: Miguel Ángel Gatón
  2. Formålet med dataene: Control SPAM, management af kommentarer.
  3. Legitimering: Dit samtykke
  4. Kommunikation af dataene: Dataene vil ikke blive kommunikeret til tredjemand, undtagen ved juridisk forpligtelse.
  5. Datalagring: Database hostet af Occentus Networks (EU)
  6. Rettigheder: Du kan til enhver tid begrænse, gendanne og slette dine oplysninger.

  1.   djæger sagde han

    Jeg har været i bash-spørgsmålet i lang tid, og jeg havde ikke forstået bøjleudvidelserne, tak.

    På sti-tricket gør Fedora som standard noget som dette, men i "~ / .local / bin" skal du se på et uddrag fra bash_profilen, som jeg bragte til Jessie.

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

    1.    Ricardo sagde han

      Jeg har nogle bekymringer:
      1. Hvordan får jeg ham til at give mig to intervaller med udvidelse med point; i alderen {1..24,55..90} og at jeg udvider aldre fra 1 til 24 og fortsætter med 55 til XNUMX. som jeg gjorde, fungerede det ikke. Hvorfor?

      2. Hvis jeg vil have den første værdi til at være nul og fortsæt med nummereringen:
      wget: http://manga.favorito /billede http://manga.favorito/imagen1
      Jeg prøvede følgende måde, men wget fik ikke: http://manga.favorito/imagen{, 1..42} Ifølge mig bliver jeg nødt til at forlade fornavnet uden et nummer og fortsætte med nummereringen fra 1 til 42, men det var ikke sådan. Hvorfor?

    2.    Wada sagde han

      Du har ret, nogle distroer har eller havde en .bin, men det er så alle kan forstå og se, at det er muligt at gøre det i enhver distro: D, tak fordi du kom forbi.

  2.   demo sagde han

    Meget godt meget godt for disse videnbidrag til Linux-verdenen og dens sikkerhed, en fredag ​​håber jeg, jeg kunne læse, hvordan man formaterer en pendrive i en terminal og brænder et iso DVD / CD-billede af ethvert gratis system i en terminal.

    1.    Wada sagde han

      Tak for dine ord bror 😀 Jeg lover, at næste fredag ​​vil jeg gøre det indlæg. Og jeg må en om at tilpasse Vim hahaha, men jeg ville ikke have dem til at tro, at det kun ville omfatte Vim.

  3.   edoardo_eller sagde han

    Fremragende terminalartikel, det bedste jeg har læst i lang tid, tæller flere blogs, der udgiver tutorials af denne stil. Mange tak!!

    1.    Wada sagde han

      Mange tak 😀 Jeg vil prøve at følge med.

  4.   juanli sagde han

    Fremragende tip til den lokale skraldespand!
    Greetings!

    1.    Wada sagde han

      Fremragende, dejligt at det er nyttigt for dig, meget tak for din forbipasserende bror 😀

  5.   giskard sagde han

    Meget godt! Ingen idé om dette. Tak 🙂

    1.    Wada sagde han

      Du er velkommen bror tak til dig, fordi du tog dig tid til at læse den 😀

  6.   Ricardo sagde han

    Jeg har nogle bekymringer:
    1. Hvordan får jeg ham til at give mig to intervaller med udvidelse med point; i alderen {1..24,55..90} og at jeg udvider aldre fra 1 til 24 og fortsætter med 55 til XNUMX. som jeg gjorde, fungerede det ikke. Hvorfor?

    2. Hvis jeg vil have den første værdi til at være nul og fortsæt med nummereringen:
    wget: http://manga.favorito/imagen http://manga.favorito/imagen1

    Jeg prøvede følgende måde, men wget fik ikke: http://manga.favorito/imagen{, 1..42} Ifølge mig bliver jeg nødt til at forlade fornavnet uden et nummer og fortsætte med nummereringen fra 1 til 42, men det var ikke sådan. Hvorfor?
    * Undskyld, men jeg satte det første indlæg som et svar, og det var forkert i nogle dele

    1.    Wada sagde han

      1.- Din logik er forkert, du skal rede den hahaha prøv med $ echo {{1..24},{55..90}}

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

      Bare rolig broder, vi er her for at hjælpe os 🙂

  7.   jvk85321 sagde han

    For at erstatte for med ekko ville det se sådan ud

    ekko "Mit 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 foretrækker printf

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

    og bruge det samme koncept med nøgleudvidelse

    atte
    jvk85321

    1.    jvk85321 sagde han

      Hvordan placerer du klemkasserne ????

      atte
      jvk85321

  8.   jvk85321 sagde han

    Tester, om kodekoden fungerer
    hehe

    For at erstatte for med ekko ville det se sådan ud

    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 bruge det samme koncept med nøgleudvidelse

    atte
    jvk85321

    1.    jvk85321 sagde han

      Jeg er tilbage med nogle bugs, men det fungerede

      Jeg lever maluco

      Undskyld for at gider

      atte
      jvk85321

      1.    Wada sagde han

        Hahaha du svarede dig selv, men hvis det er mellem etiketterne ingen plads ...

        Og ved udskiftning af for er det ikke nødvendigt at gøre så meget rør hahahaha nok med:
        echo -e "Mi numero "{1..5}"\n\b"

        For at være ærlig er printf den bedste måde at udskrive tekst i scripts på, det er mere bærbart, men bruger traditionelt ekko.

      2.    Wada sagde han

        Jeg tager pladserne! hahahahaha

        lad os se nu 😀

      3.    Wada sagde han

        Fuck det er "mindre end" kode "større end" "mindre end" / kode "større end" hahahaha

      4.    jvk85321 sagde han

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

        Også kommer ud rodet
        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 andet præsenterer resultatet bedre, hahaha

        atte
        jvk85321

      5.    jvk85321 sagde han

        Disse etiketter er en bummer, hehehe, lad os se om de fungerer nu
        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 andet præsenterer resultatet bedre, hahaha
        atte
        jvk85321

      6.    jvk85321 sagde han

        Under alle omstændigheder skal du forlade mellemrummene mellem linjerne, det er derfor, jeg hader html, hahahaha

  9.   Joaquin sagde han

    Fremragende! Jeg klapper med fødderne haha

    Jeg vidste ikke, at nøgler kunne være indlejrede, da jeg aldrig prøvede at bruge dem heller, det sparer virkelig en masse kode, og det er også mere læsbart på denne måde. Tak skal du have!

    1.    Wada sagde han

      Tak til dig for forbipasserende bror, jeg er glad for, at det var nyttigt utilidad

      1.    Joaquin sagde han

        Du er velkommen, det er det, vi er her for at dele og bidrage med ideer. Jeg ved ikke, hvordan jeg programmerer, jeg lavede bare et par ting i Bash, og jeg offentliggjorde i to indlæg nogle scripts, som jeg gjorde. Jeg tror, ​​at kende dette kan gøre koden lettere at forstå.