Hirdetés

2024. március 29., péntek

Gyorskeresés

Hozzászólások

(#501) bambano válasza Votyesz13 (#500) üzenetére


bambano
titán
LOGOUT blog

sed 's/"$VALTOZO"/"$VALSEGED/' phone.txt

ha a sed programja aposztróffal kezdődik, akkor mindegy, hogy van-e belül idézőjel.
ha cseréltetni akarod, akkor idézőjelek közé tedd.
sed -e "s/$VALTOZO/$VALSEGED/" phone.txt

és már csak azt intézd el, hogy egyikben se legyen / jel.

Egy átlagos héten négy hétfő és egy péntek van (C) Diabolis

(#502) FixY67 válasza Votyesz13 (#500) üzenetére


FixY67
senior tag

A while-nak több baja is van.
Nem kerek zárójelek kellenek, hanem egy test parancs:
while test "$a" != "$b" ; do echo a; echo b; echo c; done

Illetve a szokásos forma:
while [ "$a" != "$b" ]; do echo a; echo b; echo c; done

A másik, hogy az ilyen jellegű hasonlításoknál a változót nem árt idézőjelek (") közé tenni (hangsúlyozottan nem aposztróf (') !!! ), hogy ha üres a változód, akkor se legyen gond vele.

...

(#503) bambano válasza FixY67 (#502) üzenetére


bambano
titán
LOGOUT blog

ezért szoktak a unixosok elétenni valamit:

[ x"$a" != x"$b" ]

Egy átlagos héten négy hétfő és egy péntek van (C) Diabolis

(#504) Votyesz13 válasza FixY67 (#502) üzenetére


Votyesz13
tag

A whileal azt szeretném elérni hogy végtelen ciklusba addig olvassa be a név szám párokat amíg vagy a szám vagy a név egy üres sort nem kap.De akkor először be kell kérnem a páraokat a while előtt vagy majd csak a whileon belül és akkor utána adom meg a while feltételének?Mert nem akar folyamatosan bekérni adatot hanem csak egy nevet és számot kér be és leáll...:S

(#505) Stefa0009


Stefa0009
csendes tag

Sziasztok!
Szeretnék írni egy linuxos shell szkriptet amely kiírja két dátum között eltelt
időt a felhasználó által választott mértékben. Az első paramétere egy kapcsoló
(‐ev, ‐honap, ‐nap, ( , p, p, ‐ora, ‐perc, ‐masodperc), második és harmadik paramétere (YYYY‐MM‐DD alakban) dátumok. Hibás dátum esetén hibát írjon ki. Tudna valaki ebben segíteni?
Előre is köszi

(#506) bambano válasza Votyesz13 (#504) üzenetére


bambano
titán
LOGOUT blog

de ha a ciklus feltételébe tartozó változók értéke nem változik a ciklusmagon belül, akkor ez tuttira végtelen ciklus lesz.
nem kell aggódni, a linux azt is végrehajtja 5 másodperc alatt:)

megjegyzés: csak nekem evidens, hogyha nevet akarok tárolni egy változóban, akkor annak az lesz a neve, hogy nev, meg telefonszam?

Egy átlagos héten négy hétfő és egy péntek van (C) Diabolis

(#507) bambano


bambano
titán
LOGOUT blog

miért van nekem olyan érzésem, hogy itten mostan iskolai házifeladatokat oldunk meg?

Egy átlagos héten négy hétfő és egy péntek van (C) Diabolis

(#508) FixY67 válasza bambano (#503) üzenetére


FixY67
senior tag

Még elé is? Az nekem új...

...

(#509) FixY67 válasza bambano (#507) üzenetére


FixY67
senior tag

Jó reggelt... :DD

...

(#510) Votyesz13 válasza bambano (#506) üzenetére


Votyesz13
tag

Nem név és szám lenne a neve hanem az a név pl(Kiss Pista) és a telefonszáma(0671281082) amit bekérek folyamatosan.És ezért kell bele a az if hogy vizsgálja meg hogy ha van már olyan nevű a txt-be amibe beleírunk folyamatosan akkor kérdezzen vissza hogy mi legyen azzal a név szám párossal.Felülírjuk vagy cseréljük arra ami már a txt-be van.Elvileg erről lenne szó:) Csak gyakorlatba nem akar működni:D

(#511) bambano válasza Votyesz13 (#510) üzenetére


bambano
titán
LOGOUT blog

na ennek fuss neki mégegyszer:)

Egy átlagos héten négy hétfő és egy péntek van (C) Diabolis

(#512) Votyesz13 válasza bambano (#511) üzenetére


Votyesz13
tag

#! /bin/bash

kilep=0;
while([ $kilep -eq 0 ]);
do
echo -n "Kerem a nevet: "
read VAL1;
echo -n "Kerem a hozzatartozo telefonszamot: "
read VAL2;
if [ -z `echo $VAL1` ];
then kilep=1;
fi
if [ -z `echo $VAL2` ];
then kilep=1;
fi
if [ $kilep=0 ];
then
VALSEGED=`grep $VAL1 phone.txt`;
if [ -z `echo $VALSEGED` ];
then
echo "$VAL1:$VAL2" >> phone.txt;
else

echo "Csere(1) vagy nem csere(0)? ";
read VALASZ;
if [ $VALASZ -eq 1 ];
then
grep -v "$VAL1" phone.txt > phone2.txt;
cat phone2.txt > phone.txt
echo "$VAL1:$VAL2" >> phone.txt;
fi
fi
fi
done
rm phone2.txt

exit 0;

Na ez egy verzió:)
hát az lenne a program dolga hogy folyamatosan bekéri a név telefonszám párosokat mintha egy telefonkönyv lenne.Beírja őket egy txt-be folyamatosan.Ha egyezést talál akkor megkérdezi hogy kicserélje-e őket vagy eldobja e az új sort.A program akkor áll le ha üres paramétert kap vagy a névnek vagy a telefonszámnak.Ennyi röviden:D

(#513) 8nemesis8


8nemesis8
veterán

Sziasztok!

Hogyan tudnám megvalósítani, hogy a bejelentkezett felhasználók közül listázzam ki azokat akik a bejelentkezés óta eltelt idő 50%-ában idle állapotban vannak, százalék szerint csökkenő sorrendben!?

Úgy próbálkoztam, hogy a who parancsra adott válaszból awk printtel kiszedem az oszlopokat szétbontom kettőspontnál és így vissza tudok számolni másodperceket. Idle ugye lekérhető w vagy fingernél. Viszont szerintem finger használata hasznosabb lehet, ott nevekkel azonosítóval tudom a végén listázni esetleg.
Előre is köszi a segítséget.

(#514) 8nemesis8 válasza 8nemesis8 (#513) üzenetére


8nemesis8
veterán

Nem megoldást várok, csak egy kis segítséget amin el tudok indulni esetleg. :U

(#515) Stefa0009


Stefa0009
csendes tag

Sziasztok!
Szeretnék írni egy linuxos shell szkriptet amely kiírja két dátum között eltelt
időt a felhasználó által választott mértékben. Az első paramétere egy kapcsoló
(‐ev, ‐honap, ‐nap, ( , p, p, ‐ora, ‐perc, ‐masodperc), második és harmadik paramétere (YYYY‐MM‐DD alakban) dátumok. Hibás dátum esetén hibát írjon ki. Szökőévek nem számítanak. Úgy gondoltam hogy az első paramétert valahogy így oldanám meg:
case $1 in
ev) ;;
honap) ;;
nap) ;;
ora) ;;
perc) ;;
masodperc) ;;
esac
Tudna valaki ebben segíteni?
Előre is köszi

[ Szerkesztve ]

(#516) bambano válasza 8nemesis8 (#513) üzenetére


bambano
titán
LOGOUT blog

szerintem sehogy. tudtommal a rendszer nem tárolja az összes idle time-ot, csak az utolsó interakció óta eltelt idle time-ot.

Egy átlagos héten négy hétfő és egy péntek van (C) Diabolis

(#517) bambano válasza Stefa0009 (#515) üzenetére


bambano
titán
LOGOUT blog

date parancs manualja hasznos lehet...

Egy átlagos héten négy hétfő és egy péntek van (C) Diabolis

(#518) 8nemesis8 válasza bambano (#516) üzenetére


8nemesis8
veterán

Igen, ahhoz viszonyítva oldottam már meg nagyrészt. Már csak egy rendezést kell százalék alapján.
Van egy olyan fájlom, hogy idle_time login_time név
Ebből kellene egy százalékos érték alapján sorba rendeznem!
awkra gondoltam idle/login*100 és név hozzárendelve, azonban egy sorban ezt nem tudom megtenni. Hogyan lehetne?

(#519) 8nemesis8 válasza 8nemesis8 (#518) üzenetére


8nemesis8
veterán

Nah sikerült megoldani , bocs a felesleges postokért. :U

(#520) DonVinetoo


DonVinetoo
csendes tag

Sziasztok!

Kéne nekem egy kis segítség egy script megírásához aminek ezt kell csinálnia:
Jelenítse meg a LISTA‐ban felsorolt könyvtárakban a
legfeljebb IDO perce módosított állományok
módosítási idejét és a nevét.

Köszi a segítséget!

(#521) FixY67 válasza DonVinetoo (#520) üzenetére


FixY67
senior tag

Milyen segítség kellene? Mert a kérdésed kb. arra utal, hogy írja meg valaki helyetted...

Ajánlom figyelmedbe pl. a 'for' parancsot, a "find" parancs -mtime, ill. -ctime (?) kapcsolójának tanulmányozását, valamint az 'ls' kapcsolóit.

...

(#522) DonVinetoo válasza FixY67 (#521) üzenetére


DonVinetoo
csendes tag

Igazadvan bocsi!
Tulajdonképpen nekem az is elég ha csak az ls -l parancsbol a 6. 7. 8. oszlopot írja ki
próbálkoztam ezzel a parancsal cut -d " " -f1,[oszlopszám] csak azzal azt értem el hogy akármit írok oszlopszámnak mindig az első oszlopot írja ki!

(#523) Stefa0009


Stefa0009
csendes tag

Sziasztok!
Szeretnék írni egy linuxos shell szkriptet amely kiírja két dátum között eltelt
időt a felhasználó által választott mértékben. Az első paramétere egy kapcsoló
(‐ev, ‐honap, ‐nap, ( , p, p, ‐ora, ‐perc, ‐masodperc), második és harmadik paramétere (YYYY‐MM‐DD alakban) dátumok. Hibás dátum esetén hibát írjon ki. Én erre jutottam:
#!/bin/bash

date2stamp () {
date --utc --date "$1" +%s
}

dateDiff (){
case $1 in
-s) sec=1; shift;;
-m) sec=60; shift;;
-h) sec=3600; shift;;
-d) sec=86400; shift;;
*) sec=86400;;
esac

dte1=$(date2stamp $1)
dte2=$(date2stamp $2)
diffSec=$((dte2-dte1))

if ((diffSec < 0));
then abs=-1; else abs=1;
fi
echo $((diffSec/sec*abs))
}

Valamiért nem akar működni. Valaki segítsen! Előre is köszi

(#524) Stefa0009 válasza Stefa0009 (#523) üzenetére


Stefa0009
csendes tag

Azt írja ki, hogy hozzáférés megtagadva

(#525) bambano válasza Stefa0009 (#523) üzenetére


bambano
titán
LOGOUT blog

a szkriptnek chmod 755 utasítással futtatási jogot kell adni.

a date parancsban javasolt a +%s paramétert aposztrófok közé tenni, hogy a shell ne piszkáljon bele.

Egy átlagos héten négy hétfő és egy péntek van (C) Diabolis

(#526) 8nemesis8


8nemesis8
veterán

Windows alól írtam a shell scriptet puttyon keresztül belépve linux alá, hogyan tudom eltávolítani a rossz újsor kezdő karaktereket, sajnos a dos2unix parancs nem működik.

(#527) bambano válasza 8nemesis8 (#526) üzenetére


bambano
titán
LOGOUT blog

fromdos?

Egy átlagos héten négy hétfő és egy péntek van (C) Diabolis

(#528) pilsner


pilsner
aktív tag

Hello!
Tudna nekem segíteni valaki abban, hogyan tudom letárolni egy változóba az összes paramétert ("$*") mínusz az utolsó paramétert ("$#") ? Azaz hogyan távolítom el az előzőleg már letárolt utolsó paramétert az összes paraméterek listájából? Nagyon köszönöm!

www.sakertour.com - The carpathian birdwatching and hide photography company

(#529) FixY67 válasza pilsner (#528) üzenetére


FixY67
senior tag

A shift parancs mond valamit?
(ha nem, akkor man bash /shift ;) )

...

(#530) 8nemesis8 válasza bambano (#527) üzenetére


8nemesis8
veterán

Sajnos az sincs telepítve:(

(#531) FixY67 válasza 8nemesis8 (#526) üzenetére


FixY67
senior tag

Felesleges ^M karaktereket látsz a szövegben? Vagy milyen az a "rossz újsor"?

Ha a fenti, akkor a legegyszerűbb megoldás:
vi file.neve

:g/{itt nyomsz egy Ctrl-V kombinációt, majd egy Ctrl-M-et}/s///
Aztán elmented.

...

(#532) pilsner válasza FixY67 (#529) üzenetére


pilsner
aktív tag

shift parancs a $n-ből csinál $n-1-et. mindig az első paramétert törli, ami nekem kell, az az összes paraméter, kivéve az utolsó. de már megoldottam

www.sakertour.com - The carpathian birdwatching and hide photography company

(#533) FixY67 válasza pilsner (#532) üzenetére


FixY67
senior tag

És te hogy oldottad meg?

Mert én kb. úgy gondoltam, hogy shiftelgetve az aktuális $1-t mindaddig hozzáfűzöd egy változó értékéhez, míg a paraméterek száma nagyobb, mint 1. Ha már csak egy paramétered van, akkor befejezted, kilépsz...

...

(#534) 8nemesis8 válasza FixY67 (#531) üzenetére


8nemesis8
veterán

Sajnos gedittel nem láttam, csak az első sorban ugye hibát dobot és ez volt a hiba .../bin/bash^M nem tudja értelmezni!
Közbe újra begépeltem linux alatt így már jónak kell lennie, köszi a segítséget.

(#535) pilsner válasza FixY67 (#533) üzenetére


pilsner
aktív tag

végeredményében ugyanígy. egy ciklussal az $1től az $#-1-ig a paramétereket bele egy stringbe. ami megfeleltethető egy változónak is, és így a paraméterek sorszáma sem változik a shift hatására.
kár, hogy a script nem lett tökéletes, de nem ezen múlt

www.sakertour.com - The carpathian birdwatching and hide photography company

(#536) 7


7
addikt

Sziasztok!

Az utóbbi napokban estem át egy mailmigráláson, aminek során az eddigi masszívan gtalkra használt mailcímemet töröltem, de előtte lementettem HTML formátumba a beszélgetéseimet. Mivel ezt scripttel csináltam, ezért a filenevek nemigen értelmesek.

Amire szükségem lenne, az egy olyan script, amivel a html-ben található szöveg alapján átnevezhetném a beszélgetéseket.

Értsd: A HTML file-ok tartalmazzák a következő sort: "Chat with XY". Szeretném ezt az XY-t kiemelni és hozzácsapni a filenév elejéhez.
Tehát ha eddig az volt a file neve, hogy 1234_54321.html, akkor a script lefuttatása után legyen az, hogy XY_1234_54321.html.

Kérdésem, hogy tudnátok-e segíteni legalább abban, hogy hogyan induljak el.
Például fogalmam sincs róla, hogy egyáltalán hogyan tudok tömeges átnevezést végrehajtani, valamint hogy tömeges átnevezésnél hogyan adhatok meg olyan változót, amivel kiegészíthetem a fileneveket.

(#537) FixY67 válasza 7 (#536) üzenetére


FixY67
senior tag

for i in '*filespec*'
do
partner=$(grep -m1 'Chat with' | sed -e '/^.*Chat with //' | cut -d ' ' -f 1)
mv "$i" "$partner_$i"
done

Így hajnalok hajnalán, próba nélkül leírva...
(és feltételezve, hogy a chat-ben résztvevők nickjei kizárólag olyan karaktereket tartalmaznak, amik elfogadhatóak egy file nevében és nincs bennük idézőjel)

...

(#538) Neil Watts válasza dabadab (#495) üzenetére


Neil Watts
veterán

Szia!

Ez inkabb C (legalabb is nagyon ugy nez ki), neki pedig bash-ban kene. :)

Udv. core2

[ Szerkesztve ]

(#539) FixY67 válasza Neil Watts (#538) üzenetére


FixY67
senior tag

Ez bash... :)

...

(#540) Neil Watts válasza FixY67 (#539) üzenetére


Neil Watts
veterán

Akkor en kerek elnezest, ez nekem uj!
Na asszem' most neki a latok valami bash gyorstalpalonak! :))

(#541) FixY67 válasza Neil Watts (#540) üzenetére


FixY67
senior tag

Mivel régebben bourne shellt, meg ksh-t kezdtem tanulni, majd picit belenéztem a C shellbe és megállapítottam, hogy ezzel jáccon akinek két anyja van, igencsak meglepődtem a bash-t látva. :)
Viszont kényelmes. Egy bizonyos szintig még szeretni is lehet. De ahhoz meg kellene ismerni alaposabban. Akkor meg már inkább az awk v. zűrösebb esetekben a perl...

...

(#542) bambano válasza FixY67 (#537) üzenetére


bambano
titán
LOGOUT blog

a for i in filespec sorban a sima aposztróf tuttira nem jó.

Egy átlagos héten négy hétfő és egy péntek van (C) Diabolis

(#543) FixY67 válasza bambano (#542) üzenetére


FixY67
senior tag

jogos. Eredetileg < > akart lenni a két aposztróf. :)

(szóval csak jelezni akartam, hogy oda írjon amit akar)

[ Szerkesztve ]

...

(#544) Neil Watts válasza FixY67 (#541) üzenetére


Neil Watts
veterán

perl... :Y
MOD: OFF

[ Szerkesztve ]

(#545) 7 válasza FixY67 (#537) üzenetére


7
addikt

Koszonom, par nap mulva megprobalom :)

(#546) 7 válasza 7 (#545) üzenetére


7
addikt

Update: köszönöm a kiindulási alapot, megvagyok az átnevezgetéssel. Magamra specializált paraméterek vannak benne :)

#!/bin/bash

for i in *html
do
ident=$(ls "$i" | sed -r 's/_.*html//g')
date=$(cat "$i" | grep -E -m1 '(Mon|Tue|Wed|Thu|Fri|Sat|Sun), .* 20[01][567890] at .* (AM|PM)' | cut -d ' ' -f 2-4 | sed -r 's/,//g' | sed -r 's/(at)//g' | sed -r 's/:/./g' | sed -r 's/ /-/g' )
partner=$(cat "$i" | grep -m2 "&lt;" | sed -r 's/.*dorp.*//g' | grep "$lt;.*&gt;" | sed -r 's/&lt;|&gt;//g' | sed -r 's/[@|%]/_/' | sed -r 's/[@|%]/_/g' | sed -r 's/_msn.*//g')
#echo "$partner"_-_"$ident"_-_"$date"
mkdir "$partner"
mv "$i" "$partner"/"$partner"_-_"$ident"_-_"$date".html
done

[ Szerkesztve ]

(#547) FixY67 válasza 7 (#546) üzenetére


FixY67
senior tag

Egyébként elrontottam, mert a grep mögé elfelejtettem beírni a $i-t.

...

(#548) FixY67 válasza 7 (#546) üzenetére


FixY67
senior tag

ident=$(ls "$i" | sed -r 's/_.*html//g')

helyett én

ident=$(echo "$i" | sed -r 's/_.*html//g')
-t írnék. Az echo belső parancs, nem indít újabb processzt miatta.

A grep-nek közvetlenül is megadhatod a file nevét, nem kell cat-tel egy pipe-ba nyomni a tartalmát.

...

(#549) FixY67 válasza FixY67 (#548) üzenetére


FixY67
senior tag

Lehet, hogy mégsem... legalábbis a routeremen külső parancs, akkor meg hóttmind1.

...

(#550) FixY67 válasza FixY67 (#549) üzenetére


FixY67
senior tag

Amilyen hülye vagyok, azt mindig elfelejtem, hogy a routeren egy butított shell van... bash esetén természetesen belső az echo.

...

Copyright © 2000-2024 PROHARDVER Informatikai Kft.