Új hozzászólás Aktív témák
-
doc
nagyúr
válasz
bambano #2126 üzenetére
nincs olyan hogy 'unix shell regexp', amire te annak hivsz az sima glob expression
egyebkent az altala adott peldabol is egyertelmu volt hogy regexpet keres nem pedig shell filemaskot
MOD: amennyiben utobbi csak utolag kerult bele a valaszom utan, akkor a fenti termeszetesen targytalan
-
doc
nagyúr
válasz
cappa72 #1625 üzenetére
tobb variacio is van
hasznalhatod pl. a "szamjegy" jelolest: \d, vagyis ket szamjegynel: \d\d
vagy mondhatod azt is hogy "barmilyen karakter" ami a pont, vagyis ket akarmi: ..
de vannak meg variaciokmod: ugy tunik a \d nem megy sed-ben, akkor marad a "bobeszedubb" megoldas ha szamjegyre akarsz keresni: [0-9]
-
doc
nagyúr
válasz
ddekany #1493 üzenetére
akkor leirom meg egyszer: irj egy olyan parancsot/scriptet az altalad kitalalt szintakszis szerint, ami kilistazza a lefgeljebb 10% szabad helyet tartalmazo particiokat
Maga a parsolas hiaba rendszerfunkcio, attol meg bele kell rakni a programba. Nem mondhatod azt a librarynek hogy "itt a json input amit kaptam, csinalj belole helyettem olyat amilyet akarok" (ld: "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")
alacsonabb rétegben befektetsz X emberévet, azzal megtakarítasz összességében sokszor X emberévet
meg mindig nem lattunk semmit ami igazolna hogy ez a vilagmegvalto ujitas valoban megsporolna szamottevo idot -
-
doc
nagyúr
amugy forditsuk meg a dolgot:
ddekany, irj egy olyan parancsot/scriptet az altalad kitalalt szintakszis szerint, ami kilistazza a lefgeljebb 10% szabad helyet tartalmazo particiokat!
(ez jelenleg igy nez(het) ki: df | grep '[09][0-9]%') -
doc
nagyúr
válasz
dabadab #1487 üzenetére
persze, a scriptnek nyilvan robosztusnak kell lennie, ezert is irtam hogy kicsit tobb odafigyelessel, de megoldhato (ha mar mindenaron bash-ben gondolkodunk)
A df azert keszult hogy a user megtudja, mennyi a szabad hely. Persze a rendszer rugalmas felepitesenek es a szoveges kimenetnek koszonethoen akar masik script/program is feldolgozhatja amit a df kiad.
Egyebkent ha egy adott feladat annyira bonyolultta valik hogy pl. bash-ben megvalositani komoly problema, akkor valoszinuleg erdemes inkabb mas kornyezetben megoldani (ld. pl. a lenti df-es peldat Perlben).
A 'gepi feldolgozasra alkalmas kimenet' meg ahogy korabban mar irtam is, nem feltetlenul rossz otlet, de megprobalni rakenyszeriteni minden letezo parancssoros toolra mar az (marpedig ha egyikkel-masikkal mukodik, a tobbivel nem, akkor megette a fene az egeszet).
-
doc
nagyúr
válasz
ddekany #1481 üzenetére
biztos en vagyok a hulye, de en nem szoktam space-t rakni a filenevbe (sem ekezetes karaktereket, sem hasonlo aljassagokat - szivtam ezzel eleget a windowsos rendszergazdasagom alatt...)
ha ez megis elofordult, akkor a problema valamivel bonyolultabb lesz, de kozel sem megoldhatatlana peldad meg santit, mert a df nyilvan alapvetoen arra van, hogy EN megnezzem mennyi a szabad hely
tehat ha jsonozni akarsz, akkor meg kell mondani neki hogy "fogalmazzon bonyolultan", majd meg kell keresnem hogy hogyan is hivja o a sajat kimeneteben a usage percentage-t. Mig most egyetlen ranezessel latszik, hogy eleg megkeresnem a "99%" format, addig a te megoldasodnal a json kimenetben turkalva kene megkeresnem a megfelelo nevet.szerintem a df --jsonoutput $dev | jget usagePercentage nem segit annyit a df $dev | grep -o '[0-9]\+%' | grep -o '[0-9]*' valtozathoz kepest, hogy az alapveto, brutalis munkat megkovetelo architekturalis valtozasokat indokolna (ranezek a df outputjara, majd egyedul a "grep" parancsot hasznalva mar kesz is a megoldas)
Alapvetoen nem rossz az otlet, hogy valamilyen szabvanyos feluleten kommunikaljanak egymassal a programok, de ezt rakenyszeriteni a felhasznaloi interakciora kitalalt programokra nagy butasag, es felesleges is (baromi sok pluszmelot igenyelne, es ha valaki eppen nem, vagy nem jol koveti az elvarast, akkor MINDEN borul)
Egyebkent nem talaltal ki semmi ujat, nezd meg pl. a DBUS-t - csak azt nem akarjak olyan helyeken is eroltetni, ahova nem valo. -
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 %)
-
doc
nagyúr
egy masik topicbol, hogy ne azt kelljen szenne offolni
Akkor próbálj két dolgot megcsinálni, csak kapásból. Mondtad az ls-t. Akkor írt egy scriptet, ami az ls(!) kimenete alapján csinál valamit (mindegy mint... akár csak írja ki) az összes felsorolt fájl nevével.
ehhez nem kell script, nagyon egyszeruen megoldhatok par karakterbol:
for i in `ls -1`; do echo $i ; done
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.
ez mar egy hajszallal erdekesebb feladat, mindjart megirom es hozom, csak elotte eszek valamit -
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
-
doc
nagyúr
nem azert utalom, mert fuj microsoft meg fuj windows, hanem mert irtozatosakat szoptam vele, millioszor elofordult hogy a talalt megoldas nem mukoott, mert kiderult hogy 'ja igen, ez windows 2000-nel meg megvolt, aztan senki nem tudja miert, de a ms kivette, az xp-ben mar nem mukodik'
raadasul erre a feladatra semmi nem indokolja a vbs-t, szovegfeldolgozasra perl, esetleg awk kell
gyorsan osszedobtam egy ronda, de mukodo megoldast perlben az 1. problemara:
my ($MAX, $last, $lastline, @prevs) = (4, -1,"");
foreach (<>)
{
my $nr = (split(" ",$_))[2];
print substr($lastline,0,20).($last+1).substr($prevs[$last+1],21) if (!($nr == 0 && $last == $MAX) && ($nr != ($last+1)) && (defined $prevs[$last+1]));
$prevs[$last = $nr] = $lastline = $_;
print;
}a hasznalata siman ennyi:
perl scriptedneve.pl < adatok.txt
ha uj file-ba akarod iranyitani, akkor:
perl scriptedneve.pl < adatok.txt > javitott.txt
-
doc
nagyúr
es szerinted ha azt mondod a gepnek hogy 'log.txt' akkor az honnan fogja tudni, hogy te a gepeden levo 15 db log.txt kozul arra gondolsz, amelyik a ~/akarmi/logs/log.txt file?
a scriptedben meg ne az ls-t hasznald rekurziv bejarasra (ha igen, akkor meg kell irni a parsert ami megcsinalja), ott az altalam mar emlitett nagyon egyszeru find . -
doc
nagyúr
akkor egy ilyesmi esetleg:
xterm -e 'ssh root@192.168.1.151 & ( sleep 15 ; watch df -h)'
igy a masodik (zarojeles) blokk az elsovel parhuzamosan fut. vagyis az ssh bekeri a jelszot, kozben megy a 15 masodperces timer, es ha lejar, elindul a watch
igy nem kell a -f, viszont nem is megy backgroundba az ssh, vagyis ottmarad az ablak (bar az a vnc miatt gondolom amugy is maradna)
-
doc
nagyúr
xterm -e 'wget http://prohardver.hu/index.html && watch df -h'
nekem Ubuntu 10.4 alatt teljesen jol mukodik
ha valami olyan specialis parancsot/parameterezest hasznalsz hogy nem megy, akkor esetleg a ; (pontosvesszo) karakterekkel illetve zarojelezessel lehet probalkozni
MOD: ha nem megy, akkor masold ide a konkret parancssort, aztan megnezzuk
-
doc
nagyúr
csak most kapcsolodtam be a szalba, az elozmenyekbe csak gyorsan beleneztem, de ha azt a fo feladat, hogy terminalablakot feldobva tortenjen valami, akkor megcsinalhatod pl igy:
xterm -e 'wget http://prohardver.hu/index.html'
letolti az oldalt, kozben latod a progressbart, majd miutan vegzett, becsukodik
-
doc
nagyúr
válasz
bozsikjanos #609 üzenetére
akkor meg mar:
echo $((4+5+7+3-2))
-
doc
nagyúr
-
doc
nagyúr
egyelőre a debian az a linux, amiből legtöbbet lehet profitálni, ha át kell ülni nagyobb gépre.
mire gondolsz? en pont azt latom benne, hogy mindenre van sajat, debian-only megoldasa, vagyis az "ismerem a linuxot" es az "ismerem a debiant" kozel sem ugyanaz, a kereskedelmi unixoktol meg meg messzebb all -
doc
nagyúr
viszont pont azert szokas /bin/sh-t hasznalni, mert az az 'sh-szintig' kompatibilis, tehat ha a script sima sh-val fut, akkor futnia kell azzal is, amire a /bin/sh mutat, barmi is legyen az
mondju a debiannak rogeszmeje mindig mindent mashogy csinalni mint mindenki mas :-/az egymasba agyazas valoban nehezkes backtick-kel, de az mar eleve csunya (marmint nem a backtick, az jooo
)
-
doc
nagyúr
válasz
Eszeveszett #381 üzenetére
gondolom a vizsganak mar vege
egy lehetseges megoldas:#!/bin/sh
if [ $# -ne 1 ]; then
echo hasznalat: x.sh PID
else
PID=$1
while true; do
if [ `ps ax | cut -f 1 -d ' '| grep $PID` ]; then
echo fut
else
echo nem fut
fi
sleep 2
done
fi -
doc
nagyúr
nem kellett volna berakni a for-ba, a find végiggyalogol a könyvtárszerkezeten
de valamiert tenyleg nem jo
akkor csinald kicsit "parasztabb" modszerrel
csinalsz egy futtathato file-t, mondjuk rendez.sh neven a kovetkezo tartalommal:#!/bin/sh
mv "$1" `echo $1 | sed 's/ /_/g'`ez ugye annyit csinál, hogy a paraméterben adott file-t átnevezi szóköz nélkülire
aztán ezt kell meghívni minden file-ra:
find -exec ./rendez.sh {} \;
ugyan nem atnevezessel, hanem sima echo-val, de nekem mukodik
Ui: vajon miert nem tudja vegrehajtani a find a shell fuggvenyeket? sokkal szebb lenne...
-
doc
nagyúr
jónak tűnik
ami nem kell, az a *.* helyette használj simán *-ot, mert így csak azokat a file-okat találja meg aminek a nevében van pont
vagy ha a ponttal kezdődőek is kellenek, akkorfor i i n * .*
MOD: hopp most látom a zárójelet, helyette a ` jelet használd (altgr+7)
tehát így:for i in *
do
mv $i ` echo$i | sed 's/ /_/g' `
done
Új hozzászólás Aktív témák
Hirdetés
- iPhone topik
- Motorola Edge 50 Neo - az egyensúly gyengesége
- GTA V
- BestBuy topik
- Kettő együtt: Radeon RX 9070 és 9070 XT tesztje
- Samsung Galaxy Felhasználók OFF topicja
- Kertészet, mezőgazdaság topik
- Vírusirtó topic
- Kazy Computers - Fehérvár - Megbízható?
- Kerékpárosok, bringások ide!
- További aktív témák...
- Eladó steam/ubisoft/EA/stb. kulcsok Bank/Revolut/Wise (EUR, USD, crypto OK)
- Kaspersky, McAfee, Norton, Avast és egyéb vírusírtó licencek a legolcsóbban, egyenesen a gyártóktól!
- Assassin's Creed Shadows Collector's Edition PC
- Microsoft licencek KIVÉTELES ÁRON AZONNAL - UTALÁSSAL IS AUTOMATIKUS KÉZBESÍTÉS - Windows és Office
- Eredeti Microsoft termékek - MEGA Akciók! Windows, Office Pro Plus, Project Pro, Visio Pro stb.
Állásajánlatok
Cég: Promenade Publishing House Kft.
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest