- sziku69: Szólánc.
- sziku69: Fűzzük össze a szavakat :)
- Luck Dragon: Asszociációs játék. :)
- D1Rect: Nagy "hülyétkapokazapróktól" topik
- gban: Ingyen kellene, de tegnapra
- Elektromos rásegítésű kerékpárok
- Argos: Szeretem az ecetfát
- zebra_hun: Hűthető e kulturáltan a Raptor Lake léghűtővel a kánikulában?
- Gurulunk, WAZE?!
- eBay-es kütyük kis pénzért
Új hozzászólás Aktív témák
-
bambano
titán
unix shell reguláris kifejezést keresett, nem szabvány regexpet.
tehát jó.
bambano@bruti:/tmp/3$ touch back.js
bambano@bruti:/tmp/3$ touch backe.js
bambano@bruti:/tmp/3$ touch backen.js
bambano@bruti:/tmp/3$ touch backend.js
bambano@bruti:/tmp/3$ touch backend-.js
bambano@bruti:/tmp/3$ touch backend-3.js
bambano@bruti:/tmp/3$ touch backend-3.js
bambano@bruti:/tmp/3$ touch backend-34.js
bambano@bruti:/tmp/3$ touch backend34.js
bambano@bruti:/tmp/3$ touch backend345.js
bambano@bruti:/tmp/3$ ls -l backend*.js
-rw-r--r-- 1 bambano bambano 0 ápr 13 13:41 backend345.js
-rw-r--r-- 1 bambano bambano 0 ápr 13 13:41 backend-34.js
-rw-r--r-- 1 bambano bambano 0 ápr 13 13:41 backend34.js
-rw-r--r-- 1 bambano bambano 0 ápr 13 13:41 backend-3.js
-rw-r--r-- 1 bambano bambano 0 ápr 13 13:41 backend-.js
-rw-r--r-- 1 bambano bambano 0 ápr 13 13:41 backend.jsa második kérdésében a grep -E-t kérdezte, az nem unix shell regexp, hanem extended szabvány regexp.
tehát az első kérdésére az én válaszom helyes. hogy a második kérdéséből az derült ki, hogy nem is ezt akarta kérdezni, az mvp -
ddekany
veterán
Jó, akkor: df .| jfilter usagePercentage gte 90. Mi van ezzel?
Parsolással meg nem tudom mi bajod, bár tán tesem... Igen, bele kell rakni egy hívás valami shared library funkcióra, ami az egész mechanizmust "meghívja". Soha nem látott komplexitás szoftverfejlesztés területén...
"meg mindig nem lattunk semmit ami igazolna hogy ez a vilagmegvalto ujitas valoban megsporolna szamottevo idot
"
Visszanézve a két példát, képes vagy ezt így kijelenteni. Valószínűleg direkt szórakozol... vagy van az a bizonyos határtalan dolog is elvégre, nem tudhatom.
-
ddekany
veterán
"azzal, hogy nem valaszoltal"
De akkor mi akart lenni a kérdés? Remélem nem az, hogy hogyan nézem meg, hol nagyobb 90%-nál a foglaltság...
"az meg hogy minden egyes aprocska toolban legyen oda-vissza iranyu json parser es konverter"
Kurva egyszerű lenne pedig a tool író szempontjából, mivel ezek lényegében rendszer funkciók... kb. regisztrálsz két callbackot a toolban, egyik a formázás, másik maga a lényegi feladat elvégzése, és majd az OS(/shell) eldönti, hogy melyiket hívja mikor. Az meg nem tudom leesett-e, hogy ha egy alacsonabb rétegben befektetsz X emberévet, azzal megtakarítasz összességében sokszor X emberévet. Pl. sokkal kevesebb idő megy el tool írásra, mint tool használatra.
-
ddekany
veterán
Gondolom a felvetés itt az lenne, hogy de mi van, ha a JSON feldolgozások után mégis ki akarom írni a végeredményt a felhasználónak.
Először is, mi van jelenleg. Kitéphetek sorokat egy táblázatból, a fejléc meg ugye elmarad (fejléc nélküli táblázat meg azért elég necces). Aztán a táblázat oszlopok szélessége nem a megjelenített, hanem az összes (kiszűrt) cuccokhoz van igazítva, ez sem a legszebb.
Aztán mit lehetne a JSON (vagy ami) csodával... egy dictionary listából eleve lehet automatikusan táblázatot csinálni, aminek fejléce is van meg minden. Nyilván, ehhez az kell, hogy egy tool alapértelmezett kimeneti formátuma (JSON vagy plain text) jól dőljön el. Ezt megadhatnád kapcsolóban (--json VS --plain, mondjuk), vagy ha nem adod meg, akkor alapértelmezésben --plain lesz, kivéve ha egy speciális pipe szimbólumot adsz meg utána, mondjuk legyen .| vagy akármi, és akkor a --json lenne az alapértelmezés a bal oldalán. Aztán ha még csavarni akarsz azon, hogy hogy nézzen ki a táblázat, akkor erre is könnyű tool-okat írni, tehát pl. sokminden .| jtable egyikOszlopNeve=ígyformázva másikOszlopNeve=amúgyformázva ,és akkor ebbe belepipeolod amit akarsz. Sőt... egy másik érdekes lehetőség, hogy mivel a df ezen fiktív változata belül úgy is eleve JSON-ból (pontosabban annak AST-jéből, de most mindegy) formáztatja az embernek szánt kimenetet is, az is lehetne standard opció, hogy visszavezetem bele amit én kikapartam szűrt meg így-úgy rendezett akármicsinált JSON eredményt, hogy na akkor ezt formázd, mintha csak te termelted volna belül magadnak. Szóval elég sok hatékony dolgot lehet ezzel csinálni... Ha meg tényleg csak plain textet akarsz szűrni, azt is lehet, mert nem j-s kimenetet kérsz és kész...
-
bambano
titán
"Vagy, írj egy scriptet, ami csinál valamit (minegy mit), ha neki paraméterként átadott dev-ek bármelyikén 95% alá csökken az üres hely.":
#! /bin/bash
echo 'PÁÁÁÁNIIIK!!!!!!!!!'
ennyi.
persze ha figyelembe vesszük azt is, hogy nyilvánvalóan feltolták a vércukorszintjét és azért írt ökörséget, akkor ennél bonyolultabb scrtiptre is szükség lehet. Hint: 95% alá csökken az üres hely részmondatot szerintem nem így akarta megfogalmazni. -
dabadab
titán
Az egy dolog, hogy te nem teszel bele, de lehet benne es ez pont olyasmi, amire shellscript iraskor tenyleg figyelni kell.
"a peldad meg santit, mert a df nyilvan alapvetoen arra van, hogy EN megnezzem mennyi a szabad hely"
Nem hiszem, hogy "alapvetoen" erre lenne, hiszen ha shellscriptbol meg akarod nezni, hogy mi a helyzet a szabad hellyel, akkor mast nem nagyon tudsz hasznalni. En egyebkent a magam reszerol orulnek, ha az ilyen fancy tooloknak lenne valami rendes, gepi feldolgozasra alkalmasabb kimenete is (ahol pl. nem vagja le a hosszabb nevu device-ok nevenek a veget, hogy mast ne mondjak, vagy nem localefuggo az, hogy mit ir ki).
-
ddekany
veterán
"biztos en vagyok a hulye, de en nem szoktam space-t rakni a filenevbe"
Legalábbis szerveren én sem... viszont nem is én állítom jellemzően elő a fájlokat, vagy nem olyan program amit én írtam, szóval a fölött nincs kontrollom (mint gondolom másnak sincs).
"a peldad meg santit, mert a df nyilvan alapvetoen arra van, hogy EN megnezzem mennyi a szabad hely"
Az van, hogy ott egy rakás tool a toolboxban, és nyilván azt lenne jó akkor használni scriptekben, szóval ezzel megint nincs mit kezdeni nagyon.
Ha meg a példák után is szerinted a JSON-s (vagy akármilyen gépi fogyasztásra strukturált) kimenettel a bonyolultabb minden, vagy nem érné meg globálisan egy ilyen irány, azzal már nem tudok mit kezdeni...
"ranezek a df outputjara, majd egyedul a "grep" parancsot hasznalva mar kesz is a megoldas"
És ha ránézel a shell scripte, amit nem tegnap írtál, vagy nem te írtad, akkor meg nem látod mit csinál... A forráskódokat általában többször olvassák mint írják.
"Alapvetoen nem rossz az otlet, hogy valamilyen szabvanyos feluleten kommunikaljanak egymassal a programok, de ezt rakenyszeriteni a felhasznaloi interakciora kitalalt programokra nagy butasag"
De hát 2x megírni a programokat, egyszer így, egyszer úgy, meg még nagyobb képtelenség. Hiszen a kétféle kimenet generálásnál a forráskód java része közös lenne.
De szóval mindegy... átadtam amire gondoltam ama másik topicban, aztán kész.
-
ddekany
veterán
Hát ez meg a másik... de ez meg itt OFF. Na de mindegy, akkor ide írom be, hogy ezért lenne jobb a JSON-al mert akkor csak simán:
df $dev | jget usagePercentage
Ránézel, és látod mit csinál, nem kell megnézni a kimenetet hány oszlop stb, leszedni a %-ot... Amúgy eredetileg df | jfilter device in @$-re is gondoltam, de mondjuk itt pont gány lenne, mert feleslegesen kérdezne le X device-t. (Csak az erdeti feladat valójában az volt, hogy melyik device-t NE nézze, azt adjuk át... de mindegy, innentől látod mire gondoltam a JSON-os kimenet feldolgozás kapcsán. Jó, ott sem elegáns a filter, de... mindegy, látszik mire jó.)
Ja, az ls meg úgy jeach file in `ls` kb. Ott nincs ez a kavar, mert a kimenet ["file név 1", "file név 2"].
-
ddekany
veterán
for i in `ls -1`; do echo $i ; done
Na, igen, aljas módon pont ezért kérdeztem... mert ez hibás. Az for szegény white-space-nél szeletel, nem csak sortörésnél, és ezért ha szóköz van egy fájlnévbe, akkor több fájlnak fogja nézni. Aljas egy csapda, és azért van, mert eléggé trükkös ahogy a dolgok több körben behelyettesítődnek meg értelmezve lesznek. Hát na, ilyenekre gondoltam ott a másik topicban...
-
doc
nagyúr
nem tul elegans megoldas (nincs parameterellenorzes sem), de mukodik
1 #!/bin/sh
2
3 while true; do
4 for dev in $@ ; do
5 if [ `df $dev | grep -o '[0-9]\+%' | grep -o '[0-9]*'` -gt 5 ]; then
6 echo Low space on $dev
7 fi
8 done
9 sleep 1
10 doneMOD: ehh, nem gondoltam volna hogy megeloznek
mondjuk talaltam jo otletet dabadab scriptjeben, amivel tenyleg szebb lesz (pl. tr -d %)
-
-
lapa
veterán
az lehetséges, hogy az első megoldás a hiányzó 0-kat nem egészíti ki, csak az 1, 2, 3, 4-et? csak valami 80 sor plusz lett az eredetihez képest, pedig párezer 0-s hiányzik.
mire megnyitom és ellenőrzöm tételesen openoffice-ban a nap lemegy...
sajnos nem igazán értem mit csinál a szkripted. ami nem baj, csak nem tudom megnézni a választ a fenti kérdésre.
-
lapa
veterán
huh, hát nagyon köszi. nemsoká belemélyedek.
erre a windows dologra ránéztem, de nincs a repóban:
root@inox:/home/lapa# apt-get install windows
Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Couldn't find package windows
root@inox:/home/lapa#ettől függetlenül vbs-ben megoldottam volna, ezekkel a junixos regulárokkal meg awk-kal nem vagyunk még összemelegedve. pedig a honlap asp-jét is migrálnom kéne már php-ba, ha jól értettem az nagyon hasonló a perlhez, pár idegesítő kivétellel.
ja, régen csináltam logon szkriptet vbs-ben, emlékszem én is valami kompatibilitási gondokra. asszem még olyan is volt, hogy xp-n futott, de 2003-on nem. na azon belilult nekem is a fejem, hiszen szegről-végről ugyanaz.
az inputot le tudom állítani, nem téma. azaz az eredeti fájl nem válozik feldolgozás közben. emiatt nem varázsolnék adatbázissal, de lehet, hogy idővel célszerűbb lenne.
igazából nógatom a digitemp fejlesztőjét (a forrás a digitemp kimenete), hogy csináljon olyan log formátumot, amit a gnuplot egyből szeret. ez szerintem elég generikus igény, tekintve, hogy "a" hőmérő meg "a" grafikon appokról van szó. szóval remélem megcsinálja idővel.
mint írtam mindjárt nekifutok és beszámolok az eredményekről.
-
doc
nagyúr
meg akkor mar legyen teljes, a masodik feladatot megoldo script:
my $line = "";
foreach (<>)
{
my @val = split;
if ($val[2] == 0)
{
print "$line\n" if ($line ne "");
$line = substr($_,0,20).$val[-1];
}
elsif ($line ne "")
{
$line .= " $val[-1]";
}
}
print "$line\n";hasznalata ertelemszeruen perl scriptedneve.pl <javitott.txt
vagy ha egyben akarod a kettot hasznalni:
perl lapa1.pl <data.txt | perl lapa2.pl
sot, ha POSIX-kompatibilis oprendszert hasznalsz (gyakorlatilag a windowson kivul barmi), akkor a script elejere biggyesztve a #!/usr/bin/perl -w sort es futtathato attributumot allitva, ennyi:
lapa1.pl < data.txt | lapa2.pl
-
dabadab
titán
Ha mar egyszer ugyis itt vagyok
for i in `find .` ; do blablabla ; done
Ez egeszen addig mukodik, amig a find altal visszaadott utvonalakban nincs szokoz (vagy tab vagy newline, pontosabban az $IFS valamelyik tagja). Ha van, akkor meghal a dolog. Igazan korrekt megoldast nem tudok mondani, van egyreszt ugye a find . -exec blabla {} \;, de ez csak akkor mukodik, ha a blabla vmi vegrehajthato file, shell functionoket viszont igy nem lehet meghivni (legalabbis kozvetlenul nem es nem tudok mondani semmi normalis trukkot ennek a megkerulesere).
Aztan el lehet sutni azt is, hogy find . | ( while read LINE ; do blabla "$LINE" ; done ), ez nagyreszt mukodik, kiveve, ha konkretan newline van a filenevben (ami mondjuk tenyleg nem gyakori jelenseg, de elofordulat - foleg, ha valaki direkt ki akarja hasznalni a scriptnek ezt a gyengeseget). -
dabadab
titán
"a 'pwd' kimenetehez hozza kell fuzni a filenevet es kesz
"
Egyreszt a filenev tulajdonkeppen lehet abszolut eleresi ut is, akkor dol a mutatvany (persze, egy egyszeru iffel kezelheto a helyzet, de az mar macera
), masreszt meg a realpath a kanonikus eleresi utat adja vissza, ami symlinkeknel lehet hasznos, pl:
db@cucumalac:~$ ls /home/db/x/../lib
mldonkey/ mythtv/
db@cucumalac:~$ ls /home/db/lib
ls: cannot access /home/db/lib: No such file or directory -
Yahoo
tag
Igen, lényegében jól érted...tehát adott egy fájlnév és szeretném ha egy parancs visszadobná nekem az abszolút útvonalát. Tehát nem keresni akarok az adott fájlnévre, mivel pl. ha több van belőle, többet kapnék vissza, más más útvonalakon.
Bocs, hogy csak így a végső stádiumot írom le, de nagyon hosszadalmas lenne teljesen kifejteni az egész szkriptem lényegét, mivel a hátralévő rész ennyi és feltéve, ha létezik és működik ez a parancs, akkor nem kínzom sem magam sem titeket a teljes problémával. Köszönöm. -
szike21
csendes tag
Köszönöm!
Még egy apró problémám lenne.
A feladatot így oldottam meg, de nem tudom kiíratni a végeredményt relatív útvonallal. Először foglalkozom linuxal ezért a sok kérdés.x=$1
ls -lR $x | awk '{print $1}' | tr -s ":" " " | grep '/' > mappa.txt
cat mappa.txt | while read line; do
ls -l $line | grep '^..w..w..w.' | awk '{print $8}'
done
rm mappa.txt
exit 0 -
lapa
veterán
az, hogy az ssh -f a háttérben nyitva hagyja a tunnelt.
ha nem rakom bele az -f -et, akkor meg nem indítja a vnc-t.
az lenne a kívánatos, hogy csak addig van tunnel, amíg az vnc-t be nem zárom. még az is oké, ha ctrl+c-t kell nyomnom a végén, ha egyébként az indítás egy klikkből megy.
-
lapa
veterán
igen, azt meg megint elfelejtettem, hogy jelszót is kér...
itt a parancs(ok):
xterm -e 'ssh -L 5903:gep.homelinux.org:5904 -f -N -o ExitOnForwardFailure=yes -l juzer -p 11111 gep.homelinux.org && xvncviewer -lowcolourlevel=1 -autoselect=0 localhost::5903'
lehet, hogy ez csak akkor fog menni, ha kulcsokat csinálok mindenhez?
-
ivivan
tag
"az egymasba agyazas valoban nehezkes backtick-kel, de az mar eleve csunya (marmint nem a backtick, az jooo
)"
Hát nem értek egyet. Én szeretem az egymásba ágyazást és $(...) módszerrel nagyon szépen és látványosan meg is lehet oldani. (vajon ez szabványos vagy bash specifikus? Életemben nem használtam még más shell-t :-) )
És tényleg át akarnak állni dash-ra? Az miért lesz jobb? Egyáltalán miben lesz más?
-
dabadab
titán
"ha a script sima sh-val fut, akkor futnia kell azzal is, amire a /bin/sh mutat, barmi is legyen az"
Viszont ez nem kommutativ relacio, vagyis ha nalad a /bin/sh fedonev alatt futo bashon fut, az nem jelenti azt, hogy barmilyen sh--kompatibilis shellen is futni fog. (Mondjuk ugy remlik, hogy konkretan a bash ujabb verzio figyelnek erre, es ha /bin/sh neven hivja meg az ember, akkor az extra bashes funkciokat kikapcsolja - de erre azert nem epitenek.)
-
bambano
titán
Nem azzal van a gond, hogy megadod, melyik shellel kell futtatni, hanem azzal, hogy valójában nem adod meg.
Ma már egy unixon soha nem tudhatod, hogy milyen shell van a szabvány sh alá dugva és az mennyire kompatibilis. Ezért szerintem jobb megoldás, ha konkrétan megmondod, hogy melyik shellt akarod. Pl. egy átlag debianon bash van az sh alatt, viszont most akarnak áttérni dash-ra. Az ördögnek pedig árkok vannak a szeme alatt (mert nem alszik
).
A fordított aposztróffal meg nem az a bajom, hogy obsolote, hanem az, hogy nehéz egymásba ágyazni
-
sto1911
veterán
bambano: bash tud pattern matching-et digit-re.
Akkor egy olat tudnal irni? barmennyi szamjegy lehet benne, de betu vagy mas irasjel es szokoz nem.
En ilyenre gondoltam:if [ $a=[0-9]* ] then ...
csak ez vmiert nem muxik jol, valamint integer expression expected hibat ad, ha nem numerikus erteket kap (mondjuk ez ertheto, csak ezt nem rendszeruzenetkent kellene neki kiirni, hanem a programbol. Es ugyanez a problema doc megooldasaval is
)
Új hozzászólás Aktív témák
Hirdetés
- AKCIÓ! Intel Core i7 7700K 4 mag 8 szál processzor garanciával hibátlan működéssel
- ÁRGARANCIA!Épített KomPhone i7 14700KF 32/64GB RAM RTX 5080 16GB GAMER PC termékbeszámítással
- Csere-Beszámítás! Asrock Challanger B580 12GB GDDR6 Videokártya! Bemutató Darab!
- Xiaomi Redmi Note 11 Pro 128GB, Kártyafüggetlen, 1 Év Garanciával
- Bomba ár! HP Elitebook 850 G8 - i5-11GEN I 16GB I 256GB SSD I 15,6" FULLHD I Cam I W11 I Gari!
Állásajánlatok
Cég: CAMERA-PRO Hungary Kft
Város: Budapest
Cég: PC Trade Systems Kft.
Város: Szeged