Terminal fredag: Bash [Key Expansion]

Först och främst vill jag be om ursäkt, eftersom jag förra fredagen inte kunde skriva inlägget så idag lägger jag till en extra för att kompensera den förlorade dagen. 🙂

Brace Expansion

På spanska verkar nyckelutvidgningen för mig vara en funktion inspirerad av C skal, detta genererar kombinationer mellan karaktärerna som matas in inom klammerparenteserna, den ordning den använder är från vänster till höger. Det är inte komplicerat alls, men det är ett alternativ som kommer att vara mycket användbart vid våra turer till GNU / Linux.

Exempelvis:

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

Används med komma (,) genererar kombinationer mellan värdet a och värdena inom hängslen. Om det inte fanns något värde utanför tangenterna, skulle det bara visa en gång varje värde som nyckeln innehåller.

$ echo {a, b, c} abc

Dess användning är inte alls komplex, det finns andra vanligare exempel som att skapa många kataloger i en mapp

$ mkdir ~ / Jobb / {en, två, tre, fyra, fem}

Detta skapar fem mappar i jobbmappen, det är som att ange ett kommando i taget. Skapa de 5 katalogerna.

Det finns expansion med två punkter .. detta skapar en serie siffror eller tecken som går från det ursprungliga värdet till det slutliga värdet, använd inte siffror med bokstäver.

$ echo {1..5} #Correct 1 2 3 4 5 $ echo {a..f} #Correct abcdf $ echo {a..5} #Icorrect {a..5} #Jag tror jag får aldrig van vid denna blå färg i bokstaven

Vi kan spara tid genom att skapa en cykel för

# I stället för att skriva $ för ((i = 1; i <= 5; i ++)); gör ekot "Mitt nummer $ i"; gjort Mitt nummer 1 Mitt nummer 2 Mitt nummer 3 Mitt nummer 4 Mitt nummer 5 #Spara kod med hjälp av brace-expansion. $ för i i {1..5}; gör echo "Mitt nummer $ i; gjort Mitt nummer 1 Mitt nummer 2 Mitt nummer 3 Mitt nummer 4 Mitt nummer 5 # Naturligtvis är det giltigt att använda även om utdata är annorlunda. $ echo" Mitt nummer "{1..5} Mitt nummer 1 Mitt nummer 2 Mitt nummer 3 Mitt nummer 4 Mitt nummer 5

Tja, jag tror att konceptet är klart, haha ​​nu ska jag bara kommentera att det är kombinerbart och kapslat. Vad menar jag med det här?
Kan kombineras så att vi kan gå med i en eller flera tangenter

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

Med häckning som många skulle kunna föreställa sig kan du använda expansionstangenter inom expansionstangenter

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

Och slutligen från Bash INGENTING det är möjligt att öka värdena.

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

Det här är allt för idag, så tack för att du läste mig människor 🙂

extra

Hur man skapar en lokal papperskorg

När jag säger a bin lokal menar jag en katalog där vi har våra egna skript och det är möjligt att köra dem som ett enkelt kommando ...

Att uppnå detta är relativt enkelt, det första du behöver göra är att skapa en katalog där vi kommer att spara skript.

mkdir ~ / .bin # I det här exemplet kommer det att döljas

Nu har vi vår mapp för att spara skript men den fungerar inte förrän vi lägger till sökvägen för den nya .bin till $ PATH
För detta redigeras filen bash_profileoch raden läggs till.

exportera PATH = $ PATH: ~ / .bin

Och voila det räcker för att skapa en lokal fack, naturligtvis kommer den att be om rootbehörigheter om det behövs för ett exempel, vi skriver ett snabbt skript.

#! / bin / bash echo "Hej $ 1, hur mår du?"

Spara den med namnet på Hallå
Skriptet får körtillstånd och det räcker bara att ringa det från terminalen

$ hej wada # Detta visar meddelandet Hej wada, hur mår du?

Så med det här snabba tricket kan du köra dina skript snabbare

Det är allt för idag människor som har det bra 🙂
PS Ledsen för misstag om det finns, mina ögon stängs redan hahaha 😀


26 kommentarer, lämna din

Lämna din kommentar

Din e-postadress kommer inte att publiceras. Obligatoriska fält är markerade med *

*

*

  1. Ansvarig för uppgifterna: Miguel Ángel Gatón
  2. Syftet med uppgifterna: Kontrollera skräppost, kommentarhantering.
  3. Legitimering: Ditt samtycke
  4. Kommunikation av uppgifterna: Uppgifterna kommer inte att kommuniceras till tredje part förutom enligt laglig skyldighet.
  5. Datalagring: databas värd för Occentus Networks (EU)
  6. Rättigheter: När som helst kan du begränsa, återställa och radera din information.

  1.   djägare sade

    Jag har varit i bash-frågan länge och jag hade inte förstått brace-expansionerna, tack.

    På banetricket gör Fedora som standard något så här men i "~ / .local / bin", titta på ett utdrag från bash_profilen som jag tog med till Jessie.

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

    1.    Ricardo sade

      Jag har några problem:
      1. Hur får jag honom att ge mig två intervall med utvidgning efter poäng; åldrar {1..24,55..90} och att jag utvidgar åldrarna från 1 till 24 och fortsätter med 55 till nittio. som jag gjorde så fungerade det inte. Varför?

      2. Om jag vill att det första värdet ska vara noll och fortsätta med numreringen:
      wget: http://manga.favorito /bild http://manga.favorito/imagen1
      Jag försökte på följande sätt men wget fick inte: http://manga.favorito/imagen{, 1..42} Enligt mig måste jag lämna förnamnet utan ett nummer och fortsätta med numreringen från 1 till 42 men det var inte så. Varför?

    2.    Wada sade

      Du har rätt, vissa distros har eller haft en .bin men det är så att alla kan förstå och se att det är möjligt att göra det i vilken distro som helst: D, tack för att du kom in.

  2.   demo sade

    Mycket bra mycket bra för dessa kunskapsbidrag till linuxvärlden och dess säkerhet, någon fredag ​​hoppas jag att jag kan läsa hur man formaterar en pendrive i en terminal och bränner en iso image DVD / CD av valfritt gratis system i en terminal.

    1.    Wada sade

      Tack för dina ord bror 😀 Jag lovar att nästa fredag ​​kommer jag att göra det inlägget. Och jag måste en om att anpassa Vim hahaha men jag ville inte att de skulle tro att det bara skulle omfatta Vim.

  3.   edoardo_or sade

    Utmärkt terminalartikel, det bästa jag har läst på länge, räknar flera bloggar som publicerar tutorials av denna stil. Tack så mycket!!

    1.    Wada sade

      Tack så mycket 😀 Jag ska försöka hänga med.

  4.   juanli sade

    Utmärkt tips på den lokala soptunnan!
    Hälsningar!

    1.    Wada sade

      Utmärkt, fantastiskt att det är användbart för dig, tack så mycket för att du passerade bror 😀

  5.   giskard sade

    Mycket bra! Ingen aning om detta. Tack 🙂

    1.    Wada sade

      Du är välkommen bror tack till dig för att du tog dig tid att läsa den 😀

  6.   Ricardo sade

    Jag har några problem:
    1. Hur får jag honom att ge mig två intervall med utvidgning efter poäng; åldrar {1..24,55..90} och att jag utvidgar åldrarna från 1 till 24 och fortsätter med 55 till nittio. som jag gjorde så fungerade det inte. Varför?

    2. Om jag vill att det första värdet ska vara noll och fortsätta med numreringen:
    wget: http://manga.favorito/imagen http://manga.favorito/imagen1

    Jag försökte på följande sätt men wget fick inte: http://manga.favorito/imagen{, 1..42} Enligt mig måste jag lämna förnamnet utan ett nummer och fortsätta med numreringen från 1 till 42 men det var inte så. Varför?
    * Tyvärr men jag lade det första inlägget som svar och det var fel i vissa delar

    1.    Wada sade

      1.- Din logik är fel, du måste bo den hahaha försök med $ echo {{1..24},{55..90}}

      2.- Samma som den föregående ... $ echo "URL"{,{1..42}}

      Oroa dig inte bror, vi är här för att hjälpa oss 🙂

  7.   jvk85321 sade

    För att ersätta for med eko skulle det se ut så här

    eko "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 jag föredrar printf

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

    och använda samma koncept för nyckelutvidgning

    atte
    jvk85321

    1.    jvk85321 sade

      Hur sätter man terminalboxarna ????

      atte
      jvk85321

  8.   jvk85321 sade

    Testar om kodtaggen fungerar
    hehe

    För att ersätta for med eko skulle det se ut så här

    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}

    och använda samma koncept för nyckelutvidgning

    atte
    jvk85321

    1.    jvk85321 sade

      Jag sitter kvar med några buggar men det fungerade

      Jag lever maluco

      Ursäkta att jag stör

      atte
      jvk85321

      1.    Wada sade

        Hahaha du svarade själv men om det är mellan etiketterna Inga mellanrum ...

        Och vid byte av för är det inte nödvändigt att göra så mycket rör hahahaha nog med:
        echo -e "Mi numero "{1..5}"\n\b"

        För att vara ärlig är printf det bästa sättet att skriva ut text i skript, det är mer bärbart men använder traditionellt eko.

      2.    Wada sade

        Jag tar mellanslag! ha ha ha ha ha

        låt oss se nu 😀

      3.    Wada sade

        Fan det är "mindre än" kod "större än" "mindre än" / kod "större än" hahahaha

      4.    jvk85321 sade

        Problemet att echo -e inte är standard, så det fungerar inte på alla system.

        Kommer också ut rörigt
        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:~$
        Och med detta
        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:~$

        Jag tror att den andra presenterar resultatet bättre, hahaha

        atte
        jvk85321

      5.    jvk85321 sade

        De här etiketterna är skrämmande, hehehe, låt oss se om de fungerar 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:~$

        Och med detta
        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:~$

        Jag tror att den andra presenterar resultatet bättre, hahaha
        atte
        jvk85321

      6.    jvk85321 sade

        Hur som helst, lämna mellanrummen mellan raderna, det är därför jag hatar html, hahahaha

  9.   Joaquin sade

    Excellent! Jag klappar i fötterna haha

    Jag visste inte att nycklar kunde kapslas, eftersom jag aldrig försökte använda dem heller, det sparar verkligen mycket kod och det är också mer läsbart på detta sätt. Tack!

    1.    Wada sade

      Tack till dig för att du passerade bror, jag är glad att det var användbart utilidad

      1.    Joaquin sade

        Du är välkommen, det är det vi är här för att dela och bidra med idéer. Jag vet inte hur man programmerar, jag gjorde bara ett par saker i Bash och jag publicerade några manus som jag gjorde i två inlägg. Jag tror att detta kan göra koden lättare att förstå.