abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×

včera 12:00 | Nová verze

Po cca 3 týdnech od vydání Linux Mintu 18.3 s kódovým jménem Sylvia a prostředími MATE a Cinnamon byla oznámena také vydání s prostředími KDE a Xfce. Podrobnosti v poznámkách k vydání (KDE, Xfce) a v přehledech novinek s náhledy (KDE, Xfce). Linux Mint 18.3 je podporován do roku 2021.

Ladislav Hagara | Komentářů: 6
15.12. 12:55 | Nová verze

Byla vydána verze 17.12.0 KDE Aplikací (KDE Applications). Přehled novinek v kompletním seznamu změn a na stránce s dalšími informacemi. Aplikace, které nebyly dosud portovány na KDE Frameworks 5, byly z KDE Aplikací odstraněny.

Ladislav Hagara | Komentářů: 46
15.12. 03:00 | Komunita

Na Humble Bundle lze získat počítačovou hru Company of Heroes 2 (Wikipedie, YouTube) běžící také v Linuxu zdarma. Speciální akce končí v sobotu v 19:00.

Ladislav Hagara | Komentářů: 0
15.12. 02:00 | Zajímavý software

Christian Kellner představil na svém blogu projekt Bolt řešící bezpečnost rozhraní Thunderbolt 3 na Linuxu. Pomocí příkazu boltctl nebo rozšíření GNOME Shellu lze komunikovat s démonem boltd a například zakázat neznámá zařízení a předejít tak útokům typu Thunderstrike nebo DMA.

Ladislav Hagara | Komentářů: 8
15.12. 01:00 | Nová verze

Po půl roce vývoje od vydání verze 11.0 byla vydána verze 11.1 svobodného softwaru pro vytváření datových úložišť na síti FreeNAS (Wikipedie). Nejnovější FreeNAS je postaven na FreeBSD 11.1. Přehled novinek v příspěvku na blogu. Zdůraznit lze zvýšení výkonu OpenZFS, počáteční podporu Dockeru nebo synchronizaci s cloudovými službami Amazon S3 (Simple Storage Services), Backblaze B2 Cloud, Google Cloud a Microsoft Azure

Ladislav Hagara | Komentářů: 0
14.12. 23:55 | Nová verze

Po dvou měsících vývoje od vydání verze 235 oznámil Lennart Poettering vydání verze 236 správce systému a služeb systemd (GitHub, NEWS).

Ladislav Hagara | Komentářů: 10
14.12. 20:00 | Nová verze Ladislav Hagara | Komentářů: 0
14.12. 19:33 | Pozvánky

Pražská Fedora 27 Release Party, oslava nedávného vydání Fedory 27, se uskuteční 19. prosince od 19:00 v prostorách společnosti Etnetera (Jankovcova 1037/49). Na programu budou přednášky o novinkách, diskuse, neřízený networking atd.

Ladislav Hagara | Komentářů: 0
14.12. 18:11 | Nová verze

Byla vydána verze 2.11.0 QEMU (Wikipedie). Přispělo 165 vývojářů. Provedeno bylo více než 2 000 commitů. Přehled úprav a nových vlastností v seznamu změn.

Ladislav Hagara | Komentářů: 0
14.12. 17:44 | Komunita

Canonical oznámil dostupnost kryptografických balíčků s certifikací FIPS 140-2 úrovně 1 pro Ubuntu 16.04 LTS pro předplatitele podpory Ubuntu Advantage Advanced. Certifikace FIPS (Federal Information Processing Standards) jsou vyžadovány (nejenom) vládními institucemi USA.

Ladislav Hagara | Komentářů: 3
Jak se vás potenciálně dotkne trend odstraňování analogového audio konektoru typu 3,5mm jack z „chytrých telefonů“?
 (8%)
 (0%)
 (1%)
 (1%)
 (76%)
 (14%)
Celkem 1003 hlasů
 Komentářů: 45, poslední 1.12. 19:00
    Rozcestník

    Dotaz: Jak odeslat výsledek GREP do proměnné

    13.11. 23:19 Nezmar23
    Jak odeslat výsledek GREP do proměnné
    Přečteno: 1593×
    ahoj nemůžu dát dohromady správnou podobu porřebuju ifconfig wlan0 |grep -m1 inet

    odeslat do nějaké proměnné jako textový řetězec k dalšímu osekání.

    nemůžu nájít správnou podobu

    ifconfig wlan0 |grep -m1 inet > $prom

    prom=ifconfig wlan0 |grep -m1 inet prom << ifconfig wlan0 |grep -m1 inet4 ........ jsem zkošel v tisíce podobách se závorkama isloženejma i bez. Googl vyplivene vždy jen návod na ahoj světe a a 2+3=5


    Řešení dotazu:


    Odpovědi

    Řešení 1× (Nezmar23 (tazatel))
    13.11. 23:40 NN
    Rozbalit Rozbalit vše Re: Jak odeslat výsledek GREP do proměnné
    Napriklad:
    foo=$(ifconfig wlan0 | grep -m1 inet)
    ale muzes klidne pokracovat:
    ifconfig wlan0 | grep -m1 inet | sed ..
    
    Btw. misto ifconfig by bylo vhodnejsi pouzit 'ip'.
    13.11. 23:54 kadel
    Rozbalit Rozbalit vše Re: Jak odeslat výsledek GREP do proměnné
    A proč dělat grep ... | sed ..., když už stejně volám ten sed? Raději sed -ne '/inet/{p;q;}', před p možno nakládat s obsahem dle ctěné libosti.

    Jinak bych taky zvážil, jestli porcovat vástup z ifconfig.
    13.11. 23:59 Nezmar23
    Rozbalit Rozbalit vše Re: Jak odeslat výsledek GREP do proměnné
    super dík. tak tahle varianta posazení $ mě nenapadla.

    já vím, ale ifconfig má jednodužší zápis a informace co potřebuju vrací.
    Řešení 2× (lertimir, Andrej)
    Jendа avatar 13.11. 23:40 Jendа | skóre: 74 | blog: Výlevníček | JO70FB
    Rozbalit Rozbalit vše Re: Jak odeslat výsledek GREP do proměnné
    foo=`příkaz`
    Mimochodem na Linuxu ifconfig nefunguje, pro věci kolem sítě se používá příkaz ip.
    Why did the multithreaded chicken cross the road? to To other side. get the
    14.11. 00:01 kadel
    Rozbalit Rozbalit vše Re: Jak odeslat výsledek GREP do proměnné
    Není pravda:
    $ /sbin/ifconfig
    lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
            inet 127.0.0.1  netmask 255.0.0.0
    ...
    $ uname -srom
    Linux 4.14.0 x86_64 GNU/Linux
    
    Funguje úplně normálně. Na Linuxu.

    Možná jste chtěl říci, na některých Linuxových distribucích... ip tam je taky, ale se nepoužívá, protože jsem si na něj do dnes nezvyk a ani nebyl důvod si zvykat.
    Jendа avatar 14.11. 00:56 Jendа | skóre: 74 | blog: Výlevníček | JO70FB
    Rozbalit Rozbalit vše Re: Jak odeslat výsledek GREP do proměnné
    Ne, nefunguje. A vůbec nezáleží na distribuci, kernel má už 18 let jiný TCP/IP stack konfigurující se pomocí NETLINK a ifconfig používá nefunkční emulaci starých ioctl.
    ~ # ip a s eth1
    4: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
        link/ether 00:e0:4c:68:01:7f brd ff:ff:ff:ff:ff:ff
        inet 192.168.0.134/24 brd 192.168.0.255 scope global eth1
           valid_lft forever preferred_lft forever
        inet 192.168.0.214/24 scope global secondary eth1
           valid_lft forever preferred_lft forever
        inet6 fd91:e2f1:bcd0:0:2e0:4cff:fe68:17f/64 scope global mngtmpaddr dynamic 
           valid_lft forever preferred_lft forever
        inet6 fe80::2e0:4cff:fe68:17f/64 scope link 
           valid_lft forever preferred_lft forever
    ~ # ifconfig eth1|grep 214
    ~ # 
    
    Why did the multithreaded chicken cross the road? to To other side. get the
    14.11. 11:01 kadel
    Rozbalit Rozbalit vše Re: Jak odeslat výsledek GREP do proměnné
    A to je WSL? Můj příklad byl Linux, a docela čerstvé jádro.

    Funguje (a jak je celkem jedno) a hlavně "používá se", ať se to komu líbí nebo ne. Kategorická výpověď, nefunguje a nepoužívá se je prostě naprosto nepravdivá a klidně se postavte na hlavu.
    Jendа avatar 14.11. 13:14 Jendа | skóre: 74 | blog: Výlevníček | JO70FB
    Rozbalit Rozbalit vše Re: Jak odeslat výsledek GREP do proměnné
    A to je WSL?
    Ne, to je aktuální Debian Sid a jádrem 4.9.
    Funguje
    Nefunguje, jak jsem právě ukázal. Nástroj na konfiguraci sítě, který nezobrazuje některé IP adresy, vymýšlí si neexistující síťová rozhraní a podobně prostě nefunguje.
    Why did the multithreaded chicken cross the road? to To other side. get the
    14.11. 20:43 kadel
    Rozbalit Rozbalit vše Re: Jak odeslat výsledek GREP do proměnné
    No vida. Nefunguje to na Debianu. Mně to na Linuxu (ne Debian) funguje. Tedy:
    • nefunguje na některých distribucích: pravda
    • nefunguje na linuxu: nepravda
    Jendа avatar 14.11. 21:28 Jendа | skóre: 74 | blog: Výlevníček | JO70FB
    Rozbalit Rozbalit vše Re: Jak odeslat výsledek GREP do proměnné
    Nefunguje to na Debianu.
    Nefunguje to ani na jiných distribucích, je to rozhraním kernelu.
    Mně to na Linuxu (ne Debian) funguje.
    Nepravda. Můžeš si to zkusit sám, přiřadíš rozhraní dvě IP(v4) adresy a ifconfig ti jednu zatají:
    ip a a 192.168.0.10/24 dev eth0
    ip a a 192.168.0.11/24 dev eth0
    ip a
    ifconfig
    
    Obdobně si můžeš zkusit vytvořit ifconfigem nové rozhraní („alias“) a pak ho dát down - zjistíš, že sis shodil síť i na „ostrém“ rozhraní. Nebo můžeš přidat do iptables pravidlo s -i alias_rozhraní a zjistíš, že to nefunguje.

    Conclusion: ifconfig nezobrazuje některé adresy a vymýšlí si neexistující rozhraní.
    Why did the multithreaded chicken cross the road? to To other side. get the
    14.11. 21:36 R
    Rozbalit Rozbalit vše Re: Jak odeslat výsledek GREP do proměnné
    Obdobně si můžeš zkusit vytvořit ifconfigem nové rozhraní („alias“) a pak ho dát down - zjistíš, že sis shodil síť i na „ostrém“ rozhraní.
    To nie je pravda. ifconfig eth0:0 down zrusi alias a eth0 zostane fungovat bez zmeny.

    Mimochodom, pridanie druhej IP adresy bez aliasu na odpojene rozhranie s DHCP rozbije NetworkManager. Po pripojeni kabla neposiela DHCP requesty.
    15.11. 00:01 kadel
    Rozbalit Rozbalit vše Re: Jak odeslat výsledek GREP do proměnné
    Obhajujete neobhajitelné.
    # ifconfig
    ...
    wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
            inet 192.168.1.22  netmask 255.255.255.0  broadcast 192.168.1.255
    ...
    # ifconfig wlan0:0 192.168.2.22 up
    # ifconfig
    ...
    wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
            inet 192.168.1.22  netmask 255.255.255.0  broadcast 192.168.1.255
    ...
    wlan0:0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
            inet 192.168.2.22  netmask 255.255.255.0  broadcast 192.168.2.255
    ...
    # ifconfig wlan0:0 down
    
    No a pořád si píšeme, tak jsem si nic neshodil. Pravda, jsem zvyklý aliasům dávat... no, aliasy.

    Funguje a hlavně... používá se. Já ho používám. I kdybych byl sám, tak to stačí aby to byla pravda.

    Debian je Linux: nepravda

    Debian v množině Linux: pravda
    15.11. 01:15 Kit | skóre: 40 | Brno
    Rozbalit Rozbalit vše Re: Jak odeslat výsledek GREP do proměnné
    Pravda: V Debianu je Linux.
    Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
    Jendа avatar 15.11. 03:05 Jendа | skóre: 74 | blog: Výlevníček | JO70FB
    Rozbalit Rozbalit vše Re: Jak odeslat výsledek GREP do proměnné
    Udělal jste něco jiného, nepřiřadil jste jednomu rozhraní více IP adres.
    Why did the multithreaded chicken cross the road? to To other side. get the
    k3dAR avatar 16.11. 12:27 k3dAR | skóre: 47
    Rozbalit Rozbalit vše Re: Jak odeslat výsledek GREP do proměnné
    pro zajimavost, jake je to distro?
    porad nemam telo, ale uz mam hlavu... nobody
    16.11. 21:08 kadel the BFU
    Rozbalit Rozbalit vše Re: Jak odeslat výsledek GREP do proměnné
    Co bylo po ruce: Fedora 26, výchozí instalace. Slackware-current, výchozí instalace, ale zjevně vlastní jádro, to my zoufalé lamy děláme, abychom se mohli cítit jako machos. Nebo když máme trochu exotičtější železo. Nejlépe oboje. (k)Ubuntu 17.10 s net-tools. Jména rozhraní se samozřejmě liší podle jejich libosti.

    Určitě existují pokročilé funkce, jako zřizování aliasů bez aliasů, o kterých se nám BFU ani ve snu nezdá, ale určitě je to k něčemu nezbytně nutné, ba chtěné. Ale jinak to funguje a jestli to volá systémová volání zpětné kompatibility je nám luserům šumák, dokud nám je neodstraníte. Hint, hint. No a možná to nepoužívají Jenda s Andrejem, ale používá se to. Ať se to naším guruům líbí nebo ne.

    K jádru pudla. Je OK řící. Jsou funkce, které ifconfig nepodporuje a proto ho nepoužívám a nikomu to nedoporučuji. To je fajn a možná i užitečné. Než říkat ifconfig nefunguje a nepoužívá se a dělat ze sebe s prominutím vola. Dokud ho používám třeba jenom já, protože mi funguje podle mých potřeb, tak se používá a basta. Tvrdit opak je bohapustá lež, dokud ho používat nepřestanu, třeba protože mě a další podobné nešťastníky nějaký znalec zamorduje, aby dokázal svou pravdu a nemusel připustit svou vadnou formulaci.
    17.11. 21:42 Michal Kubeček | skóre: 71 | Luštěnice
    Rozbalit Rozbalit vše Re: Jak odeslat výsledek GREP do proměnné
    Pravda, jsem zvyklý aliasům dávat... no, aliasy.

    Pro vaši informaci: IP aliasing byl odstraněn z jádra s příchodem řady 2.2. To bylo v lednu 1999.

    16.11. 12:05 Andrej | skóre: 44 | blog: Republic of Mordor | Zürich
    Rozbalit Rozbalit vše Re: Jak odeslat výsledek GREP do proměnné

    Ne, on chtěl skutečně říct (konstatovat známý fakt), že ifconfig na Linuxu nefunguje. Na žádné distribuci Linuxu. Je smutné, že si toho někteří nevšimli.

    Ještě jednou a polopatě: Ten příkaz tam zůstal spíš omylem, kvůli kompatibilitě s 20 let starými skripty. Neumí správně konfigurovat a zobrazovat adresy rozhraní, IPv6 ani IPv4. Že shodou šťastných náhod pro několik málo BFU konfigurací zdánlivě funguje, to opravdu nic neznamená.

    Na Linuxu se příkaz pro nastavení sítě jmenuje ip.

    ǑǦŹǓǕǙǞǺǨȞȬḔḦḰḾṊṎṸẄẌỖ
    k3dAR avatar 16.11. 12:30 k3dAR | skóre: 47
    Rozbalit Rozbalit vše Re: Jak odeslat výsledek GREP do proměnné
    je to podobne jako s 32bit Vs 64bit... ifconfig fakticky funguje ve vetsine pripadu, pripady kdy nefunguje jsou takove co BFU (s BFU pozadavky) nepotka, tvurci distribuci ho ale z faktu ze jiz je XX let obsolete vyrazujou z vychozi instalace, aby si to uzivatele uvedomili a prestali to pouzivat, pokud ale nekdo vi o nedostatkach ifconfig a/nebo nepouziva veci co neumi, tak to "je jedno" ;-)
    porad nemam telo, ale uz mam hlavu... nobody
    16.11. 16:54 Andrej | skóre: 44 | blog: Republic of Mordor | Zürich
    Rozbalit Rozbalit vše Re: Jak odeslat výsledek GREP do proměnné

    Nikdo nic nenamítá proti BFU, který chce (z nějakých iracionálních důvodů) v terminálu použít ifconfig. Dotaz byl spíš o psaní skriptu, který má parsovat síťovou konfiguraci. Takový skript se hodí napsat tak, aby nebyl založený na zastaralém programu udržovaném jen kvůli kompatibilitě.

    ǑǦŹǓǕǙǞǺǨȞȬḔḦḰḾṊṎṸẄẌỖ
    17.11. 21:34 Michal Kubeček | skóre: 71 | Luštěnice
    Rozbalit Rozbalit vše Re: Jak odeslat výsledek GREP do proměnné
    Ono ani parsovávní výstupu ip není moc dobrý nápad. Bohužel strojově zpracovatelný formát výstupu (JSON - tj. pro shellové skripty pořád nic moc) se k jednotlivým příkazům z iproute2 teprve přidává.
    17.11. 23:02 Kit | skóre: 40 | Brno
    Rozbalit Rozbalit vše Re: Jak odeslat výsledek GREP do proměnné
    Většina těch, kteří chtějí zjistit IP adresy na nějakém rozhraní, by výstup ip nejraději neparsovala vůbec, ale jiná možnost zřejmě není. Snad jen napsat si vlastní program třeba v C, který ty IP adresy ze systému vytáhne.

    Nezmar23 by určitě ocenil, kdyby se pro jeho účel dalo napsat např. tohle:
    ip addr show wlan0 inet4 --limit=1
    Jenže to bych po té utilitě asi chtěl moc.
    Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
    17.11. 23:26 Michal Kubeček | skóre: 71 | Luštěnice
    Rozbalit Rozbalit vše Re: Jak odeslat výsledek GREP do proměnné
    V shellu bude nějaká externí utilita potřeba, ale třeba pro python vypadá tohle docela pohodlně.
    17.11. 23:44 Kit | skóre: 40 | Brno
    Rozbalit Rozbalit vše Re: Jak odeslat výsledek GREP do proměnné
    Připadá mi to delší a složitější, než parsování výstupu ip. Není to oneliner.
    Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
    18.11. 08:26 dustin | skóre: 61 | blog: dustin
    Rozbalit Rozbalit vše Re: Jak odeslat výsledek GREP do proměnné
    Oneliner to nebývá, protože je např. potřeba import. Třeba u tohoto. Jenže když už budu v pythonu, jaký by mělo smysl se se zbytkem mořit v bashi, když v pythonu to bude daleko pohodlnější.
    18.11. 12:46 Kit | skóre: 40 | Brno
    Rozbalit Rozbalit vše Re: Jak odeslat výsledek GREP do proměnné
    Jistě, už jsem narazil i na to, že můj předchůdce volal shell z PHP jen proto, že nevěděl, že pro konkrétní účel existují funkce přímo v tom PHP, dokonce bez importů. Shell je jen skořápka, jejíž hlavním účelem je volat jiné aplikace a manipulovat s nimi. V Pythonu je filozofie jiná.
    Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
    17.11. 21:26 Michal Kubeček | skóre: 71 | Luštěnice
    Rozbalit Rozbalit vše Re: Jak odeslat výsledek GREP do proměnné
    ifconfig fakticky funguje ve vetsine pripadu

    Řekl byste o kalkulačce, která vám většinou dá správný výsledek (jen po ní prostě nesmíte chtít něco "složitějšího"), že funguje? Já ne.

    pripady kdy nefunguje jsou takove co BFU (s BFU pozadavky) nepotka

    Nemyslím si, že argumentaci BFU je v tomto případě relevantní. Ani ip, ani ifconfig nejsou nástoje určené k tomu, aby je používal BFU. BFU bude editovat ifcfg-* nebo používat něco ještě víc BFU-friendly (třeba YaST).

    Ba co hůř, s nástupem nástrojů jako wicked nebo systemd-networkd se dostáváme do situace, kdy BFU nemusí mít vůbec nainstalované balíčky iproute2 ani net-tools a přesto si bude moci nastavit všechno, co bude potřebovat. (A to není nějaká hypotetická myšlenka, s nápadem, že iproute2 (a spousta dalších admin/debug nástrojů) nepatří do Minimal patternů, už jsem se setkal a svůj pokus to zvrátit prohrál; nakonec tam podle všeho přeci jen bude, ale jen proto, že kvůli tomu začaly failovat openQA testy.)

    17.11. 22:46 kadel
    Rozbalit Rozbalit vše Re: Jak odeslat výsledek GREP do proměnné
    Řekl byste o kalkulačce, která vám většinou dá správný výsledek (jen po ní prostě nesmíte chtít něco "složitějšího"), že funguje? Já ne.
    Pokud, protože jsem prodavačka nebo BFU, mi stačí, že umí sčítat, odčítat, násobit, dělit a to vždy, tak ano. A že to nemá tenhle čudlík. Nebo ho to má, ale ten výsledek, kterému stejně nerozumím, mi může být jedno.

    Jak jsem psal. Jestli to je přes zpětně kompatibilní volání nebo ne, je mi jedno. Mně to, pro mé potřeby funguje. A minimálně já to používám a tím se to používá. Třeba taky proto, že nemusím tolik řešit, před kterým jako-U*X systémem zrovna sedím. Nebo ne tolik, syntaxe se trochu lišit bude, ale základní výpis ne.
    k3dAR avatar 19.11. 17:40 k3dAR | skóre: 47
    Rozbalit Rozbalit vše Re: Jak odeslat výsledek GREP do proměnné
    dost BFU maji zazite na Windows ze kdyz volaji na podporu poskytovatele internetu, oteviraji prikazovy radek a pisou: ipconfig
    priklad s kalkulackou je jen pouha demagogie, ifconfig v kazdem beznem pripade zobrazi vzdy spravne informace, zadne/spatne zobrazi jen v pripadech kdy NonBFU provedl "nebezne" nastaveni pres ip ;)
    porad nemam telo, ale uz mam hlavu... nobody
    19.11. 20:00 Michal Kubeček | skóre: 71 | Luštěnice
    Rozbalit Rozbalit vše Re: Jak odeslat výsledek GREP do proměnné

    To právě vůbec není pravda. Pominu-li, že tím, čemu říkáte "NonBFU", mohl být distribuční inicializační skript nebo jiný konfigurační nástroj, tak třeba už to, že ukazuje nějaká fiktivní rozhraní jako eth0:0, je špatně. Právě ten BFU (ve skutečnosti spíš nějaký mírně (chybně) poučený uživatel než skutečný BFU) se pak bude divit, proč nemůže použít "iptables ... -i eth0:0".

    Stejně tak je špatně už sama koncepce, že rozhraní je přiřazena (jedna) IP adresa, která se nastavuje, na které je syntaxe příkazu ifconfig založena (ovšem jen pro IPv4, kde se pak dokonce místo odebrání adresy fiktivně "nastavuje na nulovou").

    14.11. 11:20 dustin | skóre: 61 | blog: dustin
    Rozbalit Rozbalit vše Re: Jak odeslat výsledek GREP do proměnné
    Zpětné apostrofy jsou v kombinaci s uvozovkami/dopřednými apostrofy hodně nepřehledné. IMO je vhodnější zápis $()
    14.11. 20:44 kadel
    Rozbalit Rozbalit vše Re: Jak odeslat výsledek GREP do proměnné
    A taky se to dá se nestovat.
    13.11. 23:42 Kit | skóre: 40 | Brno
    Rozbalit Rozbalit vše Re: Jak odeslat výsledek GREP do proměnné
    prom=$(ifconfig eth0 |grep -m1 inet)
    Co na tom chceš ještě osekávat? Osekej to rovnou v tomhle.
    Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
    14.11. 00:10 Nezmar23
    Rozbalit Rozbalit vše Re: Jak odeslat výsledek GREP do proměnné
    Grep snad umí vracet jen celý řádek a já pptřebuju jen jeho určitou část.

    prom=$(ifconfig wlan0 |grep -m1 inet) echo ${prom:20:12}

    mi vrátí mojí IP.... .
    14.11. 00:23 Kit | skóre: 40 | Brno
    Rozbalit Rozbalit vše Re: Jak odeslat výsledek GREP do proměnné
    To jsi mohl napsat rovnou, že z toho chceš IP adresu:
    ip=$(ip addr show wlan0 | awk '/inet / { split($2, arr, "/"); print arr[1] }')
    Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
    14.11. 10:56 Nezmar23
    Rozbalit Rozbalit vše Re: Jak odeslat výsledek GREP do proměnné
    Dyž já se začal teď učit scripty, a umět posadit cokoliv do proměnné je dost důležitý :-) Díky
    15.11. 18:16 soyo
    Rozbalit Rozbalit vše Re: Jak odeslat výsledek GREP do proměnné
    Niekedy uplne staci grep -o ...
    22.11. 13:59 bibri | skóre: 33 | Olomouc
    Rozbalit Rozbalit vše Re: Jak odeslat výsledek GREP do proměnné
    Když už, tak

    prom=$(ifconfig wlan0 |grep -m1 inet | cut -c 20-32)
    22.11. 14:41 dustin | skóre: 61 | blog: dustin
    Rozbalit Rozbalit vše Re: Jak odeslat výsledek GREP do proměnné
    Parsovat textový výstup programu na konkrétní pozice znaků, to je peklo. Stačí změnit locale a už je např. maska na jiné pozici. To už bych raději místo bashe použil ten python.
    22.11. 15:01 Michal Kubeček | skóre: 71 | Luštěnice
    Rozbalit Rozbalit vše Re: Jak odeslat výsledek GREP do proměnné
    Např. zrovna ifconfig měl dlouho docela záludný bug, že ořezával jména rozhraní na (IIRC) 9 znaků. Když se to opravilo, tak sice začal dlouhá jména ukazovat celá, ale zase se tím rozbily skripty, které výstup parsovaly tímto způsobem.
    22.11. 15:17 dustin | skóre: 61 | blog: dustin
    Rozbalit Rozbalit vše Re: Jak odeslat výsledek GREP do proměnné
    A vůbec se nemohli divit, když spoléhají na tak nespolehlivou věc.
    k3dAR avatar 22.11. 20:40 k3dAR | skóre: 47
    Rozbalit Rozbalit vše Re: Jak odeslat výsledek GREP do proměnné
    kdyz uz, tak ;)
    prom="$(ifconfig wlan0 | grep 'inet ad' | sed 's/.*dr://;s/ .*//')"
    (grepovat jen s 'ad' a ne 'adr', aby to slo na CZ (adr) i EN (addr) locale :)
    porad nemam telo, ale uz mam hlavu... nobody
    22.11. 22:28 Michal Kubeček | skóre: 71 | Luštěnice
    Rozbalit Rozbalit vše Re: Jak odeslat výsledek GREP do proměnné
    "LC_ALL=C ..." mi přijde spolehlivější a univerzálnější. :-)
    16.11. 12:18 Andrej | skóre: 44 | blog: Republic of Mordor | Zürich
    Rozbalit Rozbalit vše Re: Jak odeslat výsledek GREP do proměnné

    Pár příkladů na toto téma:

    variable="`grep "$USER" /etc/passwd`"
    variable="$(grep "$USER" /etc/passwd)"
    read variable < <(grep "$USER" /etc/passwd)
    

    Připomínám ovšem, jak už tu bylo několikrát řečeno, že příkaz pro správu sítě na Linuxu se jmenuje ip, nikoliv ifconfig.

    ǑǦŹǓǕǙǞǺǨȞȬḔḦḰḾṊṎṸẄẌỖ
    k3dAR avatar 16.11. 12:33 k3dAR | skóre: 47
    Rozbalit Rozbalit vše Re: Jak odeslat výsledek GREP do proměnné
    pro zajimavost, jaky je rozdil (krome prehlednosti) pri pouziti `` nebo $() ?
    porad nemam telo, ale uz mam hlavu... nobody
    16.11. 14:22 Andrej | skóre: 44 | blog: Republic of Mordor | Zürich
    Rozbalit Rozbalit vše Re: Jak odeslat výsledek GREP do proměnné

    V tom triviálním příkladu asi nebude rozdíl. Ve složitějších situacích rozdíl bude.

    Shodné oddělovače (``) znamenají zásadní omezení z hlediska gramatiky, protože se nedají „hnízdit“. Tohle funguje:

    echo "$(echo "$(echo bla)")"
    echo $(echo $(echo bla))
    

    Tohle „funguje“ hodně nečekaně a debuggovat něco takového bych nechtěl:

    echo `echo `echo bla`` # nečekaný výsledek
    

    Takhle je to samozřejmě pěst na oko, ale v delších příkazech se může přesně takový pattern nenápadně schovat a překvapit. Uvozovky tady nepomůžou a například toto nebude fungovat vůbec:

    echo "`echo "`echo bla`"`"  # chyba syntaxe
    
    ǑǦŹǓǕǙǞǺǨȞȬḔḦḰḾṊṎṸẄẌỖ
    17.11. 21:51 Michal Kubeček | skóre: 71 | Luštěnice
    Rozbalit Rozbalit vše Re: Jak odeslat výsledek GREP do proměnné
    Shodné oddělovače (``) znamenají zásadní omezení z hlediska gramatiky, protože se nedají „hnízdit“.

    Také jsem si to dlouho myslel. Ale dají:

      mike@lion:~> ls -l $(echo -e "sk\x$(echo -en '\x32')ec")
      -rw-r--r-- 1 mike users 821 čec 10  2015 sk.c
      mike@lion:~> ls -l `echo -e "sk\x\`echo -en '\x32'\`ec"`
      -rw-r--r-- 1 mike users 821 čec 10  2015 sk.c
    

    Ale pokud samotný pohled na ten příklad někomu nestačí, aby ho přesvědčil, že není dobrý nápad to používat jen proto, že to jde, pak mu asi není pomoci. :-)

    k3dAR avatar 19.11. 17:43 k3dAR | skóre: 47
    Rozbalit Rozbalit vše Re: Jak odeslat výsledek GREP do proměnné
    diky :) takze rozdil je (pravddepodobne) jen v te prehlednosti (at jiz pro uzivatele tak pro interpret) :)
    porad nemam telo, ale uz mam hlavu... nobody
    19.11. 18:08 Kit | skóre: 40 | Brno
    Rozbalit Rozbalit vše Re: Jak odeslat výsledek GREP do proměnné
    Interpretr rozumí snad každému syntakticky správně napsanému skriptu. Čitelnost a srozumitelnost pro člověka je mnohem důležitější.
    Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
    20.11. 10:56 RM
    Rozbalit Rozbalit vše Re: Jak odeslat výsledek GREP do proměnné
    Drobný rozdíl tam je v expanzích. Zkuste si tohle:
        echo $(echo \$HOME)
        echo `echo \$HOME`
    

    16.11. 21:36 kadel
    Rozbalit Rozbalit vše Re: Jak odeslat výsledek GREP do proměnné
    Kromě dříve uvedených a také výše zopakovaných. Vlastně jediný důvod pro zpětný apostrof, kromě případných estetických ohledů je zvyk některých lidí deklarovat /bin/sh jako interpret a pak psát $(...). Jednoho dne narazí na opravdický sh a ne na nalinkovaný bash nebo ksh v kompatibilním módu. Ale pokud tam budou mít ip, tak je stejně jedno, kde se to vysype. BFU rada, piště /bin/bash a používejte $(...), pokud to nikoho od pohledu neuráží a vše bude fajn. A jako bonus se v textovém editoru bude dobře hledat začátek a konec.

    K předchozím doporučením bych si dovolil jednu začátečnickou poznámku, mistři to řešit nemusí. var=$(cmd) a read var < <(cmd) není to samé, ale na to snad přijdete, když zjistíte, že cmd vrací více řádků. Třeba USER je test a v /etc/passwd je test a tester a test123. Hlavně ale, když se vyhnete ifconfig, tak to není třeba řešit.
    16.11. 23:35 Andrej | skóre: 44 | blog: Republic of Mordor | Zürich
    Rozbalit Rozbalit vše Re: Jak odeslat výsledek GREP do proměnné

    Předně, který shell je opravdický? Shell podle standardu totiž $(...) samozřejmě umí. V Dashi, o kterém se povídá, že má ke standardu blízko, funguje $(...) taky.

    Je spousta silných vlastností Bashe, které ve standardu nejsou — třeba numerický typ, příkaz declare nebo (což chybí hodně citelně) pole — indexovaná i hashovací. Ale netřeba hned každou expanzi a substituci dávat do souvislosti s Bashem. :-)

    ǑǦŹǓǕǙǞǺǨȞȬḔḦḰḾṊṎṸẄẌỖ
    16.11. 23:42 Kit | skóre: 40 | Brno
    Rozbalit Rozbalit vše Re: Jak odeslat výsledek GREP do proměnné
    Pole jsou v shellu zcela zbytečná a pouze svádí k nepravostem.
    Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
    17.11. 00:22 dustin | skóre: 61 | blog: dustin
    Rozbalit Rozbalit vše Re: Jak odeslat výsledek GREP do proměnné
    Ale houby. Jsou případy, kdy se hodí, např. když potřebuji pracně a výkonově náročně zjistit sadu nějakých informací a nechci je v rámci složitějšího skriptu opakovaně při každém použití generovat znovu.

    Konkrétně v mém případě např. seznam názvů několika disků vložených do šuplíků serveru s 30 dalšími disky, z jejichž partišen se zbuilduje několik md polí, která se pak připojí do degradovaných rai1 raidů pro zazálohování zálohovacího LXC kontejneru na offline disky. Detekce takových disků/partišen trvá několik sekund a ve skriptu se s nimi pak opakovaně ve funkcích pracuje.

    Kdyby bash neměl pole, vůbec bych jej pro tento účel nepoužil. Pravda, možná bych si býval pythonem hodně usnadnil práci, bash je na této úrovni složitosti spíš masochismus...
    17.11. 00:43 Andrej | skóre: 44 | blog: Republic of Mordor | Zürich
    Rozbalit Rozbalit vše Re: Jak odeslat výsledek GREP do proměnné

    Souhlas, pole se prostě hodí — a nejen jako cache. Taky hashovací tabulky (declare -A) jsou fajn.

    Někdy se dá jako poor man’s pole použít iterace nad wildcardem názvů proměnných:

    a_blah=3
    a_zee=4
    a_nonsense=5
    for name in "${!a_@}"; do echo "${name}: ${!name}"; done
    

    Jenže ukládat do tohoto^^^ je ošklivé, protože vygenerovat dynamicky identifikátor proměnné se těžko dá jinak než pomocí eval. :-( Radši pole.

    ǑǦŹǓǕǙǞǺǨȞȬḔḦḰḾṊṎṸẄẌỖ
    17.11. 00:31 Andrej | skóre: 44 | blog: Republic of Mordor | Zürich
    Rozbalit Rozbalit vše Re: Jak odeslat výsledek GREP do proměnné

    Láryfáry. Kdo pole nechce používat, ať je nepoužívá. (Ale já pak s takovým člověkem zdvořile odmítnu pracovat.)

    Ve skutečnosti jsou pole mimořádně užitečná, protože umožňují vyhnout se prasárnám kolem parsování stringů s mezerami/oddělovači i expanzím proměnných mimo uvozovky. Obojí je hnusný zlozvyk z dob před poli v Bashi, takže asi z 80. let.

    ǑǦŹǓǕǙǞǺǨȞȬḔḦḰḾṊṎṸẄẌỖ
    17.11. 01:06 kadel
    Rozbalit Rozbalit vše Re: Jak odeslat výsledek GREP do proměnné
    Hehe, ale kdo se neasimiluje v ip církvi, toho zastřelit. Tolerance musí mít své meze. :-)
    17.11. 01:12 Andrej | skóre: 44 | blog: Republic of Mordor | Zürich
    Rozbalit Rozbalit vše Re: Jak odeslat výsledek GREP do proměnné

    Odinstalace ifconfig může být řešením v duchu humanismu. Zastřelení pak není nezbytné.

    ǑǦŹǓǕǙǞǺǨȞȬḔḦḰḾṊṎṸẄẌỖ
    17.11. 01:29 kadel
    Rozbalit Rozbalit vše Re: Jak odeslat výsledek GREP do proměnné
    from my cold dead hands
    21.11. 12:48 RM
    Rozbalit Rozbalit vše Re: Jak odeslat výsledek GREP do proměnné
    A spolupracoval byste se mnou :(, kdybych použil místo pole a Bashe poziční parametry? Třeba takhle:
    set -- `ls`
    for i; do echo $i; done
    
    17.11. 00:39 kadel
    Rozbalit Rozbalit vše Re: Jak odeslat výsledek GREP do proměnné
    Předně, který shell je opravdický?
    Výborná otázka. Myslím tím Bourne Shell, takový ten co najdete na "starších" Unixech. Třeba /bin/sh na Solaris 10 a dál, IIRC. Já bych se rozšoupnul a ty dva bajty tam za #! dal, stejně beztak většina myslela bash, tak proč něco předstírat.

    Jo GNU rozšíření jsou kolikrát príma, o tom žádná. Kdo byl někdy odkázán na standardně konformní příkazy jistě rád potvrdí.
    17.11. 00:55 Andrej | skóre: 44 | blog: Republic of Mordor | Zürich
    Rozbalit Rozbalit vše Re: Jak odeslat výsledek GREP do proměnné

    No já když jsem zkoušel, kolik mých skriptů bude fungovat v Dashi, vzdal jsem to a zůstal u Bashe. A to ještě Dash není ani náhodou tak archivní materiál jako původní Bourne shell.

    Na Solarisu pamatuju jenom zsh, protože jsem ho nikdy neviděl v původní proprietární Sun podobě, jenom jako OpenSolaris / OpenIndianu. (Tu open-source verzi jsem, pravda, viděl docela zblízka. Ale stejně jsem si tam zbaběle nainstaloval Bash.)

    ǑǦŹǓǕǙǞǺǨȞȬḔḦḰḾṊṎṸẄẌỖ
    17.11. 01:12 kadel
    Rozbalit Rozbalit vše Re: Jak odeslat výsledek GREP do proměnné
    On tam snad (i ten bash) v běžné instalaci byl, akorát ne výchozí. OpenSolaris ještě před svým koncem ten starý sh vyhodil a místo toho tam byl ksh93 (a sh se stal linkem, jako je na linuxu často na bash, alespoň na mém stroji tedy).

    Co tím chtěl básník říci? Člověk si párkrát namele a naučí se říkat bash, když vlastně chce bash.
    22.11. 21:19 Kit | skóre: 40 | Brno
    Rozbalit Rozbalit vše Re: Jak odeslat výsledek GREP do proměnné
    prom="$(hostname -I | cut -d\  -f1)"
    Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
    27.11. 23:17 BFU
    Rozbalit Rozbalit vše Re: Jak odeslat výsledek GREP do proměnné
    BFU staci hostname -I, protoze vic jak jednu ip nemaj ;D
    27.11. 23:36 Kit | skóre: 40 | Brno
    Rozbalit Rozbalit vše Re: Jak odeslat výsledek GREP do proměnné
    Kromě IPv4 obvykle ještě IPv6.
    Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.

    Založit nové vláknoNahoru

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.