Terminal Friday: Bash [Key Expansion]

V prvom rade by som sa chcel ospravedlniť, keďže minulý piatok som nemohol príspevok napísať, takže dnes pridám komparz, ktorý nahradí stratený deň. 🙂

Rozšírenie vzpery

V španielčine sa mi zdá rozšírenie kľúča funkciou inšpirovanou C škrupina, toto vygeneruje kombinácie medzi znakmi, ktoré sú vložené do zložených zátvoriek, poradie, ktoré používa, je zľava doprava. Nie je to nijako zložité, ale je to možnosť, ktorá bude veľmi užitočná pri našich prehliadkach GNU / Linux.

príklad:

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

Pri použití s ​​čiarkami (,) generuje kombinácie medzi hodnotou a a hodnotami vo zložených zátvorkách. Ak by mimo zložených zátvoriek neexistovala žiadna hodnota, zobrazila by sa iba raz každá hodnota, ktorú kľúč obsahuje.

$ echo {a, b, c} abc

Jeho použitie nie je vôbec zložité, existujú aj ďalšie bežnejšie príklady, ako napríklad vytvorenie mnohých adresárov v priečinku

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

Takto sa v priečinku úloh vytvorí päť priečinkov, je to ako zadávať jeden príkaz naraz. Vytvára sa 5 adresárov.

Existuje rozšírenie o dva body .. takto sa vytvorí rad čísel alebo znakov, ktoré prechádzajú z počiatočnej hodnoty na konečnú hodnotu, nepoužívajte čísla s písmenami.

$ echo {1..5} #Correct 1 2 3 4 5 $ echo {a..f} #Correct abcdf $ echo {a..5} #Incorrect {a..5} # Myslím, že nikdy nedostanem zvyknutý na túto modrú farbu písmenom

Môžeme ušetriť čas vytvorením cyklu pre

# Namiesto písania $ for ((i = 1; i <= 5; i ++)); urobte echo "Moje číslo $ i"; hotovo Moje číslo 1 Moje číslo 2 Moje číslo 3 Moje číslo 4 Moje číslo 5 # Kód uložíme pomocou rozšírenia zátvoriek. $ 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 # Samozrejme je to platné, aj keď je výstup iný. $ echo" Moje číslo "{1..5} Moje číslo 1 Moje číslo 2 Moje číslo 3 Moje číslo 4 Moje číslo 5

Myslím si, že koncept je jasný, haha, teraz budem iba komentovať, že je kombinovateľný a vnorený. Čo tým chcem povedať?
Vďaka kombinovateľnosti môžeme spojiť jeden alebo viac kľúčov

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

S vnorením, ako by si mnohí predstavovali, môžete použiť rozširujúce kľúče v rámci rozširujúcich kľúčov

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

A nakoniec od Bash NIC je možné hodnoty zvýšiť.

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

To je na dnes všetko, takže ďakujem, že ste ma čítali, ľudia 🙂

extra

Ako vytvoriť lokálny kôš

Keď poviem a popolnice local Myslím adresár, v ktorom máme vlastné skripty a je možné ich spustiť ako jednoduchý príkaz ...

Dosiahnutie tohto cieľa je pomerne ľahké, najskôr je potrebné vytvoriť adresár, do ktorého uložíme skripty.

mkdir ~ / .bin # V tomto príklade bude skrytý

Teraz máme náš priečinok na ukladanie skriptov, ale nebude to fungovať, kým nepridáme cestu nového .bin k $ PATH
Za týmto účelom je súbor upravený bash_profile, a riadok je pridaný.

export PATH = $ PATH: ~ / .bin

A voila, ktorá stačí na vytvorenie lokálneho koša, bude samozrejme vyžadovať oprávnenie root, ak je to potrebné, napríklad napíšeme rýchly skript.

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

Uložte ho s menom ahoj
Skriptu je udelené povolenie na vykonávanie a na volanie z terminálu bude stačiť

$ ahoj wada # Zobrazí sa správa Ahoj wada, ako sa máš?

Týmto rýchlym trikom teda môžete skripty spustiť rýchlejšie

To je pre dnešok všetko, čo sa má ľuďom dobre 🙂
PS Prepáčte za chyby, ak existujú, moje oči sa už zatvárajú hahaha 😀


Zanechajte svoj komentár

Vaša e-mailová adresa nebude zverejnená. Povinné položky sú označené *

*

*

  1. Zodpovedný za údaje: Miguel Ángel Gatón
  2. Účel údajov: Kontrolný SPAM, správa komentárov.
  3. Legitimácia: Váš súhlas
  4. Oznamovanie údajov: Údaje nebudú poskytnuté tretím stranám, iba ak to vyplýva zo zákona.
  5. Ukladanie dát: Databáza hostená spoločnosťou Occentus Networks (EU)
  6. Práva: Svoje údaje môžete kedykoľvek obmedziť, obnoviť a vymazať.

  1.   lovec dijo

    Som v bashovom vydaní už dlho a nechápal som, aké sú tieto rozšírenia zátvoriek, vďaka.

    Pokiaľ ide o cestu, Fedora štandardne robí niečo také, ale v priečinku „~ / .local / bin“ sa pozrite na úryvok z bash_profile, ktorý som priniesol Jessie.

    PATH = $ PATH: $ HOME / .local / bin: $ HOME / bin
    exportná CESTA

    1.    Ricardo dijo

      Mám určité obavy:
      1. Ako ho prinútim, aby mi dal dva intervaly s rozšírením o body; vek {1..24,55..90} a že rozširujem vek z 1 na 24 a pokračujem s 55 na deväťdesiat. ako som to urobil nefungovalo. Prečo?

      2. Ak chcem, aby bola prvá hodnota nulová, a pokračuj v číslovaní:
      wget: http://manga.favorito / obrázok http://manga.favorito/imagen1
      Skúsil som nasledujúci spôsob, ale wget sa nedostal: http://manga.favorito/imagen{, 1..42} Podľa mňa by som musel krstné meno nechať bez čísla a pokračovať v číslovaní od 1 do 42 ale nebolo to tak. Prečo?

    2.    Wada dijo

      Máte pravdu, že niektoré distribúcie majú alebo mali súbor .bin, ale je na každom, aby pochopil a videl, že je možné to urobiť v ktoromkoľvek distro: D, ďakujem, že ste sa zastavili.

  2.   demonštrácie dijo

    Veľmi dobré veľmi dobré pre tieto príspevky znalostí do sveta linuxu a jeho bezpečnosti, nejaký piatok dúfam, že som si prečítal, ako naformátovať pendrive v termináli a napáliť iso DVD / CD obraz ľubovoľného voľného systému v termináli.

    1.    Wada dijo

      Ďakujem za tvoje slová brat brother Sľubujem, že budúci piatok urobím tento príspevok. A musím niečo o prispôsobení Vima hahaha, ale nechcel som, aby si mysleli, že by to zahŕňalo iba Vima.

  3.   edoardo_or dijo

    Vynikajúci terminálny článok, to najlepšie, čo som už dlho čítal, počítam niekoľko blogov, ktoré vydávajú návody tohto štýlu. Mnohokrat dakujem!!

    1.    Wada dijo

      Ďakujem pekne 😀 budem sa snažiť držať krok.

  4.   juanli dijo

    Vynikajúci tip miestneho koša!
    Zdravím!

    1.    Wada dijo

      Výborne, super, že je to pre vás užitočné, veľmi pekne vám ďakujeme, že ste odovzdali brata 😀

  5.   giskard dijo

    Veľmi dobre! O tomto ani len netuším. Dakujem 🙂

    1.    Wada dijo

      Ste vítaný brat, vďaka vám, že ste si našli čas a prečítali si ho 😀

  6.   Ricardo dijo

    Mám určité obavy:
    1. Ako ho prinútim, aby mi dal dva intervaly s rozšírením o body; vek {1..24,55..90} a že rozširujem vek z 1 na 24 a pokračujem s 55 na deväťdesiat. ako som to urobil nefungovalo. Prečo?

    2. Ak chcem, aby bola prvá hodnota nulová, a pokračuj v číslovaní:
    wget: http://manga.favorito/imagen http://manga.favorito/imagen1

    Skúsil som nasledujúci spôsob, ale wget sa nedostal: http://manga.favorito/imagen{, 1..42} Podľa mňa by som musel krstné meno nechať bez čísla a pokračovať v číslovaní od 1 do 42 ale nebolo to tak. Prečo?
    * Prepáčte, ale prvý príspevok som uviedol ako odpoveď a v niektorých častiach bol nesprávny

    1.    Wada dijo

      1.- Tvoja logika je nesprávna, musíš to vnoriť, hahaha skús to $ echo {{1..24},{55..90}}

      2.- Rovnaké ako predchádzajúce ... $ echo "URL"{,{1..42}}

      Nerobte si starosti, brat, sme tu, aby nám pomohli 🙂

  7.   jvk85321 dijo

    Ak by sme nahradili for za echo, vyzeralo 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 ja mam radsej printf

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

    a používať rovnaký koncept kľúčovej expanzie

    Atte
    jvk85321

    1.    jvk85321 dijo

      Ako umiestnite svorkovnice ????

      Atte
      jvk85321

  8.   jvk85321 dijo

    Testuje sa, či kódová značka funguje
    hehe

    Ak by sme nahradili for za echo, vyzeralo 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žívať rovnaký koncept kľúčovej expanzie

    Atte
    jvk85321

    1.    jvk85321 dijo

      Ostali mi nejaké chyby, ale fungovalo to

      Som nažive maluco

      Prepáč za obťažovanie

      Atte
      jvk85321

      1.    Wada dijo

        Hahaha, odpovedali ste si sami, ale ak je medzi štítkami bez medzier ...

        A pri zámene za nie je potrebné robiť toľko potrubia hahahaha dosť s:
        echo -e "Mi numero "{1..5}"\n\b"

        Aby som bol úprimný, printf je najlepší spôsob, ako tlačiť text v skriptoch, je prenosnejší, ale tradične používa ozvenu.

      2.    Wada dijo

        Beriem medzery! hahahahaha

        pozrime sa teraz 😀

      3.    Wada dijo

        Seru na to, že je „menší ako“ kód, väčší ako „„ menší ako “/ kód, väčší ako„ hahahaha

      4.    jvk85321 dijo

        Problém, ktorý echo -e nie je štandardný, takže nefunguje na všetkých systémoch.

        Tiež vychádza 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ýmto
        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á prezentuje výsledok lepšie, hahaha

        Atte
        jvk85321

      5.    jvk85321 dijo

        Tieto štítky sú nepríjemné, hehehe, uvidíme, či to teraz vyjde
        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ýmto
        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á prezentuje výsledok lepšie, hahaha
        Atte
        jvk85321

      6.    jvk85321 dijo

        Každopádne nechajte medzery medzi riadkami, preto nenávidím html, hahahaha

  9.   Joaquin dijo

    Vynikajúci! Tlieskam ti nohy haha

    Nevedel som, že sa dajú kľúče vnoriť, keďže som sa ich nikdy ani nepokúšal použiť, skutočne to ušetrí veľa kódu a je to takto aj čitateľnejšie. Ďakujem!

    1.    Wada dijo

      Ďakujem za to, že si sa stal bratom, som rád, že to bolo užitočné

      1.    Joaquin dijo

        Ste vítaní, na to sme tu, aby sme zdieľali a prispievali k nápadom. Neviem programovať, iba som urobil pár vecí v Bashi a nejaké skripty, ktoré som urobil, som zverejnil v dvoch príspevkoch. Myslím si, že ak to budem vedieť, bude to ľahšie pochopiteľné.