Terminal Friday: Bash [Key Expansion]

Nejprve bych se chtěl omluvit, protože minulý pátek jsem nemohl napsat příspěvek, takže dnes přidám další, abych nahradil ztracený den. 🙂

Expanze výztuhy

Ve španělštině se mi klíčová expanze zdá být funkcí inspirovanou c-shell, tím se vytvoří kombinace mezi znaky, které se zadávají do složených závorek, pořadí, které používá, je zleva doprava. Není to vůbec složité, ale je to možnost, která bude velmi užitečná při našich prohlídkách GNU / Linuxu.

příklad:

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

Při použití s ​​čárkami (,) generuje kombinace mezi hodnotou a a hodnotami uvnitř složených závorek. Pokud by mimo klíče nebyla žádná hodnota, zobrazila by se pouze jednou každá hodnota, kterou klíč obsahuje.

$ echo {a, b, c} abc

Jeho použití není vůbec složité, existují i ​​další běžnější příklady, jako je vytváření mnoha adresářů ve složce

$ mkdir ~ / Jobs / {one, two, three, four, five}

Tím se vytvoří pět složek ve složce úloh, je to jako zadávat jeden příkaz najednou. Vytváření 5 adresářů.

Existují expanze o dva body .. Tím se vytvoří řada čísel nebo znaků, které přecházejí z počáteční hodnoty na konečnou hodnotu, nepoužívejte čísla s písmeny.

$ echo {1..5} #Correct 1 2 3 4 5 $ echo {a..f} #Correct abcdf $ echo {a..5} #Incorrect {a..5} # Myslím, že nikdy nedostanu zvyklý na tuto modrou barvu písmenem

Můžeme ušetřit čas vytvořením cyklu for

# Místo psaní $ for ((i = 1; i <= 5; i ++)); do echo "Moje číslo $ i"; hotovo Moje číslo 1 Moje číslo 2 Moje číslo 3 Moje číslo 4 Moje číslo 5 # Uložit kód pomocí rozšíření rovnátka. $ za i v {1..5}; do echo "Moje číslo $ i; hotové Moje číslo 1 Moje číslo 2 Moje číslo 3 Moje číslo 4 Moje číslo 5 # Samozřejmě je platné použít, i když je výstup jiný. $ echo" Moje číslo "{1..5} Moje číslo 1 Moje číslo 2 Moje číslo 3 Moje číslo 4 Moje číslo 5

No, myslím, že koncept je jasný, haha, teď jen poznamenám, že je kombinovatelný a vnořený. Co tím myslím?
Díky kombinovatelnosti můžeme spojit jeden nebo více klíčů

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

S vnořením, jak by si mnozí představovali, můžete použít rozšiřující klíče uvnitř rozšiřujících klíčů

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

A nakonec od Bash NIC je možné hodnoty zvýšit.

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

To je pro dnešek vše, takže děkuji, že jste mi četli, lidi 🙂

extra

Jak vytvořit místní přihrádku

Když řeknu a popelnice local Mám na mysli adresář, ve kterém máme vlastní skripty a je možné je spustit jako jednoduchý příkaz ...

Dosažení tohoto cíle je relativně snadné, první věcí, kterou musíte udělat, je vytvořit adresář, do kterého budeme skripty ukládat.

mkdir ~ / .bin # V tomto příkladu bude skrytý

Nyní máme naši složku pro ukládání skriptů, ale nebude to fungovat, dokud nepřidáme cestu nového .bin do $ PATH
Za tímto účelem je soubor upraven bash_profilea řádek je přidán.

export PATH = $ PATH: ~ / .bin

A voila, která je dostatečná k vytvoření lokálního koše, bude samozřejmě vyžadovat oprávnění root, pokud je to nutné, například napíšeme rychlý skript.

#! / bin / bash echo „Ahoj $ 1, jak se máš?“

Uložte jej pod jménem ahoj
Skriptu bylo uděleno oprávnění ke spuštění a k jeho zavolání z terminálu bude stačit

$ ahoj wada # Zobrazí se zpráva Hello wada, how are you?

S tímto rychlým trikem tedy můžete spouštět skripty rychleji

To je pro dnešní lidi vše, co je v pořádku 🙂
PS Omlouvám se za chyby, pokud existují, moje oči se už zavírají hahaha 😀


Zanechte svůj komentář

Vaše e-mailová adresa nebude zveřejněna. Povinné položky jsou označeny *

*

*

  1. Odpovědný za údaje: Miguel Ángel Gatón
  2. Účel údajů: Ovládací SPAM, správa komentářů.
  3. Legitimace: Váš souhlas
  4. Sdělování údajů: Údaje nebudou sděleny třetím osobám, s výjimkou zákonných povinností.
  5. Úložiště dat: Databáze hostovaná společností Occentus Networks (EU)
  6. Práva: Vaše údaje můžete kdykoli omezit, obnovit a odstranit.

  1.   lovec řekl

    Byl jsem v bash vydání po dlouhou dobu a já jsem nepochopil rozšíření výztuhy, díky.

    Pokud jde o trik s cestami, Fedora ve výchozím nastavení něco takového dělá, ale v souboru „~ / .local / bin“ se podívejte na úryvek bash_profile, který jsem přinesl Jessie.

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

    1.    Ricardo řekl

      Mám určité obavy:
      1. Jak ho přimím, aby mi dal dva intervaly s rozšířením o body; věkové skupiny {1..24,55..90} a rozšířit věkové skupiny z 1 na 24 a pokračovat s 55 na devadesát. jak jsem to udělal, nefungovalo to. Proč?

      2. Pokud chci, aby první hodnota byla nulová, a pokračuj v číslování:
      wget: http://manga.favorito /obraz http://manga.favorito/imagen1
      Zkoušel jsem následující způsob, ale wget nedostal: http://manga.favorito/imagen{, 1..42} Podle mě bych musel nechat křestní jméno bez čísla a pokračovat v číslování od 1 do 42, ale nebylo to tak. Proč?

    2.    Wada řekl

      Máte pravdu, že některá distribuce mají nebo měla .bin, ale je to tak, aby každý pochopil a viděl, že je možné to udělat v jakékoli distribuci: D, děkuji, že jste se zastavili.

  2.   demonstrace řekl

    Velmi dobré velmi dobré pro tyto příspěvky znalostí do linuxového světa a jeho bezpečnosti, někdy v pátek doufám, že jsem si mohl přečíst, jak naformátovat pendrive v terminálu a vypálit iso obraz DVD / CD libovolného volného systému v terminálu.

    1.    Wada řekl

      Děkuji za vaše slova, bratře 😀 slibuji, že příští pátek provedu tento příspěvek. A musím něco o přizpůsobení Vima hahaha, ale nechtěl jsem, aby si mysleli, že to bude zahrnovat pouze Vima.

  3.   edoardo_or řekl

    Vynikající článek o terminálu, to nejlepší, co jsem za dlouhou dobu četl, počítám několik blogů, které publikují návody tohoto stylu. Díky moc!!

    1.    Wada řekl

      Děkuji moc 😀 Pokusím se držet krok.

  4.   juanli řekl

    Vynikající tip místního koše!
    Zdravím!

    1.    Wada řekl

      Skvělé, skvělé, že je to pro vás užitečné, děkuji vám za předání bratra 😀

  5.   giskard řekl

    Velmi dobře! O tom vůbec netuším. Díky 🙂

    1.    Wada řekl

      Jste vítaný bratře, děkuji, že jste si našli čas a přečetli si jej 😀

  6.   Ricardo řekl

    Mám určité obavy:
    1. Jak ho přimím, aby mi dal dva intervaly s rozšířením o body; věkové skupiny {1..24,55..90} a rozšířit věkové skupiny z 1 na 24 a pokračovat s 55 na devadesát. jak jsem to udělal, nefungovalo to. Proč?

    2. Pokud chci, aby první hodnota byla nulová, a pokračuj v číslování:
    wget: http://manga.favorito/imagen http://manga.favorito/imagen1

    Zkoušel jsem následující způsob, ale wget nedostal: http://manga.favorito/imagen{, 1..42} Podle mě bych musel nechat křestní jméno bez čísla a pokračovat v číslování od 1 do 42, ale nebylo to tak. Proč?
    * Je mi líto, ale dal jsem první příspěvek jako odpověď a v některých částech byl špatný

    1.    Wada řekl

      1.- Vaše logika je špatná, musíte to vnořit, hahaha, zkuste to $ echo {{1..24},{55..90}}

      2. - Stejné jako předchozí ... $ echo "URL"{,{1..42}}

      Nebojte se, bratře, jsme tu, abychom nám pomohli 🙂

  7.   jvk85321 řekl

    Chcete-li nahradit for s echo, vypadalo by to takto

    echo "Moje číslo" {1..5} $ '\ n' | sed -e: a -e '$! N; s / \ n / \ n /; ta' | sed -e: a -e '$! N; s / 5 \ n / 5 /; ta'

    ale já dávám přednost printf

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

    a použít stejný koncept klíčové expanze

    Atte
    jvk85321

    1.    jvk85321 řekl

      Jak umístíte svorkovnice ????

      Atte
      jvk85321

  8.   jvk85321 řekl

    Testování, zda značka kódu funguje
    hehe

    Chcete-li nahradit for s echo, vypadalo by to takto

    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}

    a použít stejný koncept klíčové expanze

    Atte
    jvk85321

    1.    jvk85321 řekl

      Zůstaly mi nějaké chyby, ale fungovalo to

      Žiju maluco

      Promiň že obtěžuji

      Atte
      jvk85321

      1.    Wada řekl

        Hahaha, odpověděl jsi si sám, ale jestli je to mezi štítky žádné mezery ...

        A při nahrazování za není nutné dělat tolik potrubí hahahaha dost s:
        echo -e "Mi numero "{1..5}"\n\b"

        Abych byl upřímný, printf je nejlepší způsob, jak tisknout text ve skriptech, je přenosnější, ale tradičně používá echo.

      2.    Wada řekl

        Beru mezery! hahahahaha

        uvidíme hned 😀

      3.    Wada řekl

        Seru na to, že je „méně než“ kód „větší než„ „méně než“ / kód „větší než„ hahahaha

      4.    jvk85321 řekl

        Problém, že echo -e není standardní, takže nefunguje na všech systémech.

        Také vyjde chaotický
        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:~$
        A s tím
        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:~$

        Myslím, že druhý představuje výsledek lépe, hahaha

        Atte
        jvk85321

      5.    jvk85321 řekl

        Tyto štítky jsou bummer, hehehe, podívejme se, jestli nyní fungují
        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:~$

        A s tím
        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:~$

        Myslím, že druhý představuje výsledek lépe, hahaha
        Atte
        jvk85321

      6.    jvk85321 řekl

        Každopádně nechte mezery mezi řádky, proto nenávidím html, hahahaha

  9.   Joaquin řekl

    Vynikající! Tleskám ti nohy haha

    Nevěděl jsem, že klíče mohou být vnořeny, protože jsem se nikdy nepokusil je použít, opravdu to ušetří spoustu kódu a je to také čitelnější. Děkuji!

    1.    Wada řekl

      Děkuji, že jste předali bratra, jsem rád, že to bylo užitečné

      1.    Joaquin řekl

        Jste vítáni, proto jsme tu proto, abychom mohli sdílet a přispívat nápady. Nevím, jak programovat, jen jsem udělal pár věcí v Bash a publikoval jsem ve dvou příspěvcích několik skriptů, které jsem udělal. Myslím, že když to víme, může to usnadnit pochopení kódu.