Shell Script!

Fórumok

helloka mindenkinek lenne egy olyan kérdésem hogy shell scriptel meglehetne azt oldani ubuntu alatt hogy mondjuk beírom terminálba hogy /hiber.sh és lefutattja a scriptet és lehibernálodik a gép vagy van e vmi beépített megoldás erre azonkivül hogy rendszer kijelentkezés...
a választ elöre is kösz na páá

Hozzászólások

nekem edgy-ben van olyan gombom hogy kijelentkezes/ujrainditas/hibernalas, igaz en kubuntut hasznalok, ezt a funkciot viszont +1xsem

udv Zoli

Hmmm. A LASER (Light Amplification by Stimulated Emission of Radiation) betuszo, tehat leginkabb laser, vagy legfoljebb lézer, bar ez rokon dolog a dízel-lel mivel az is leginkabb Diesel esetleg diesel... Ja, de a laser semmi esetre sem lazer (meg amerikaiul se ;-)

Zsiraf

p.s.: amugy szerintem probald ki: hibernate
meg esetleg man hibernate, vagy man hibernate.conf

meg hat!


#!/bin/bash

. /etc/default/acpi-support
. /usr/share/acpi-support/power-funcs
. /usr/share/acpi-support/policy-funcs

if [ x$ACPI_HIBERNATE != xtrue ] && [ x$1 != xforce ]; then
  exit;
fi

# Unset video posting - it's not needed for suspend to disk
unset POST_VIDEO
unset USE_DPMS

. /etc/acpi/prepare.sh

#if [ x$LOCK_SCREEN = xtrue ]; then
#    for x in /tmp/.X11-unix/*; do
#	displaynum=`echo $x | sed s#/tmp/.X11-unix/X##`
#	getXuser;
#	if [ x"$XAUTHORITY" != x"" ]; then
#	    export DISPLAY=":$displaynum"
#	    . /usr/share/acpi-support/screenblank
#	fi
#    done
#fi

echo -n $HIBERNATE_MODE >/sys/power/disk

if [ -x /sbin/s2disk ]; then
    DEVICE="/dev/disk/by-uuid/`awk -F= '{print $3}' </etc/initramfs-tools/conf.d/resume`"
    if [ -f /etc/usplash.conf ]; then
	. /etc/usplash.conf
	/sbin/s2disk -x "$xres" -y "$yres" $DEVICE
    else
	/sbin/s2disk $DEVICE
    fi
else
    echo -n "disk" >/sys/power/state
fi

$LAPTOP_MODE stop

. /etc/acpi/resume.sh

ezt bemasolod a hiber.sh fajlodba, majd ./hiber.sh, es nezed, hogy le-e hibernalodik-e. a geped jol.

---
"... nem zsaru vagyok, hanem a rendorfonok."

En script helyett a power gomra allitottam ezt be (mondjuk nekem notebookom van es sose kapcsolom ki rendesen, ugyhogy jo ha az csak hibernal, asztali gepen viszont lehet idegesito).
Nalam APM van, de gondolom ACPI-vel is megy. Hmm... most nezem csak:
/etc/acpi/events/powerbtn

sziasztok!
a következő feladatban valaki tudna nekem segíteni?
előre is köszönöm mindenkinek!

Írjunk jelszót generáló shell scriptet. A jelszó legalább 5 és legfeljebb 8 karakter hosszú lehet, az angol ABC kis- és nagybetűit, illetve számokat tartalmazhat. A script a jelszót a standard kimenetre írja.

Ha a tanár "értelmes" akkor az ilyen megoldást simán elfogadja. A mi matek tanárunk volt olyan, hogy adott egy példát. Ha tudtad, hogy ez már ki volt dolgozva a matek könyvben elég volt az oldalszámot beírnod és kész. Nem kell a melegvizet mindig feltalálni...

--
A nyúl egy igazi jellem. Ott ül a fűben, de akkor sem szívja!

ez az mikor értelmes egy tanár:)
van mégegy feladatom a ráérőknek:

Írjunk egy shell scriptet, ami egy paraméterként megadott, legfeljebb 8 bites bináris számnak megadja a 10-es számrendszerbeli alakját. A script csak egy paramétert fogadjon el, ellenőrizze, hogy az a feltételeknek megfelelő-e, ha nem, akkor hibaüzenettek lépjen ki, egyébként írja ki az eredményt a standard kimenetre. A feladatot "elemi" eszközökkel oldjuk meg.



# csak egy paramétert fogadjon el
[[ $# != 1 ]] && echo "tul sok parameter" && exit

# legfeljebb 8 bites
[[ ${#1} > 8 ]] && echo "tul sok szamjegy" && exit

# ellenőrizze, hogy az a feltételeknek (binaris szam) megfelelő-e
t=${1//1/}
t=${t//0/}
[[ ${#t} != 0 ]] && echo "hibas (nem binaris) szam" && exit

# 10-es számrendszerbeli alakját
echo $((2#$1))

--
maszili

??? Attól függ, milyen a fájlrendszer, nem? A fájl tartalma meg tudja a fene. Lehet UTF-8 is akár.

A UNIX világában az a fogalom, hogy "kiterjesztés" egyszerűen nem létezik. Egyes programok mondjuk felhasználják a végződést, de nem követelmény... Általában nem használom, mert felesleges.

1. Ez nem prog.hu. Ne szokj ide, ha csak a házikat akarod ingyen megoldatni. Vedd elő a jegyzeteidet, gondolkozz. Ha mások oldják meg, abból te semmit nem tanulsz. Ha nem megy, nem bírod, akkor ne válaszd ezt a szakmát.
2. Ha elkezted a munkát, és már haladtál is vele, vagy nem értesz valamit, akkor írd oda azt is, mit csináltál eddig, hol tartasz, mit nem értesz. Ez NEM házifeladat-megoldó portál.
3. Tanulj meg kérdezni. Ez nehész, de nem megoldhatatlan. Milyen nyelvben kell ezt megoldani? Írhatok Perl-ben neked egy programot, neked fogalmad nem lesz róla, hogyan működik, de a specifikációnak meg fog felelni. Ja, és az is script.

hello

az lenne a kérdésem, hogy melyik paranccsal lehet kiíratni, hogy egy felhasználó mennyi ideig volt bejelentkezve...akár visszamenőleg is.

hello. van egy változóm aminek a tartalma pl MAPPA="mappa1/mappa2" és azt a / jelet le szeretném cserélni egy _ jelre. ezt hogy lehetne?

hi.hogy lehet megkeresni a futtatható ill nem futtatható állományokat (rwx-nél az x-re gondolok)...

Hello!

Egy olyan kérdésem lenne, hogy hogyan lehetne egy olyan shell scriptet megvalósítani, amely kiszámolja, hogy egy adott könyvtár tartalma mennyi helyet foglal?

ls-el rekurzival listazol, filemereteket leszurod awk-al, es osszegzed. ezt elvileg tanultatok oran, vsz olyan egysoros lesz, mint amikbol ma mar parat megirtam. annak idejen mi sem jartunk be surun oprendszerek gyakorlatra, de valami fogalmunk volt rola, hol kene elindulni...

Nekunk elfogadtak az egy-ket soros megoldásokat.
Nem kell tul bonyolutani, egy shell scriptebe csak be tudod rakni azt az egyszem parancsot.
En is irtam 30+ soros szkripteket, és vertem a fejem a falba amikor rajottem, hogy lehet 4-5 sorból megoldani, ha tudtam a rövid megoldast akkor azt használtam.
Sőt szerintem a feladatok többsége, olyan volt hogyha ismered a rendszert 4-5 sorbol megoldható, ha nem ismered akkor szivsz.

http://tldp.org/LDP/abs/html/
http://tldp.fsf.hu/HOWTO/Bash-Prog-Intro-HOWTO-hu/Bash-Prog-Intro-HOWTO… (régi,de magyar)

hali

A '3' -as billentyű lenyomására olvassunk be egy érvényes, olvasható könyvtár elérési
útvonalát! Addig olvassunk, míg megfelelő könyvtárat nem kapunk. Ezekután a
könyvtárban lévő, összes, nem futtatható fájl sorainak számát számoljuk össze, majd
jelenítsük meg!

addig ok, h leellenőrzöm h futtatható-e vagy nem, meg összeszámolni a sorokat, csak azt nemtudom hogy hogy lehetne végigléptetni egyenként a fájlokat, h le tudjam ellenőrizni...vmi for ciklusra gondoltam, de azzal is hogyan???

probalj ki egy ilyet:


for i in /home/h493266/*; do echo $i; done

ez listazza a konyvtarakat is, ennel valamivel jobb ez (es csak az van benne, amirol a gyakorlat szolt), bar nem tul elegans:


for i in `ls -l /home/h493266/* | grep -v '^d' | awk {'print $9;'}`; do echo $i; done

az aposztrofok iranyara vigyazz :)

mostmár ok, kiírja a sorok számát, ugy ahogy kell...csak minden fájlhoz dob egy hibaüzenetet, mégpedig:
./progi: line xx: let: mappa/file: division by 0 (error token is ".kiterjesztése a fájlnak")
végülis a lényeg megvan de azért nemszép az a sok hibaüzenet... 2> /dev/null -al ok, csak azért ha belenéznek, látják h sunyítok vmit... esetleg még ehhez vmi hozzászólás?

aaaaaa :(

egyreszt teljesen mas hibauzenetet kapsz mint en, masreszt az egesz ls -l | grep | awk dolog elhibazott.

ugyanis letezik egy konyvtar/file, de az ls | grep | awk a file-t adja neked vissza, szoval a bekert_konyvtar valtozot meg ele kene biggyeszteni, amikor hasznalod...
masreszt mi van, ha az ls-ed aliasolva van (gyakori) (alias ls='ls --color'), ezt pl. \ls -el kerulhetet ki, stb stb.

szoval szerintem inkabb a 'find "$BEKERT_KONYVTARNEV" -maxdepth 1 -type f -perm -u-x' -t hasznald a nem futtathato fileok listazasara..

ui.: a for i in `...` se lesz jo neked, probald ki szokozt tartalmazo filenevvel...
szoval vagy atallitod az IFS erteket (IFS=$'\n'), vagy while read -et hasznalsz:
find ... | while read i ; do ... done

az ls-nél $MAPPA/* al megoldottam a problémát, a szóközös neveket valóban nemtudja értelmezni, de wáááá már komolyan... jah még egy kérdés, a find-os megoldásnál ha futtathatóakat keresünk akkor a -perm -nél milyen kapcsolót használjak, mert nemtaláltam semmi értelmes dolgot (man find)..amugy köszi a segítséget, sztem beadom így kókányolva, mex levon pár pontot... így is még flash meg webtervezés kötprogokat el se kezdtem...szoval nem szórakozok ezzel tovabb :)

Hello!

Megtudná valaki mondani, hogy mi lehet ebben a script-ben a hiba? És hogy hogyan javítsam?

#!/bin/bash
s=`ls -l | tail -n +1`

e=`./rspace $a`

if test -z `echo $sor | grep '^d'`;then

osszeg=$(( $osszeg + $e ));

else
list="some list splitted by space"
for aToken in $list; do
echo '|' $aToken
done
echo $s
fi

Fordításnál ezt a hibát adja:

./rspace.sh: line 4: ./rspace: Nincs ilyen fájl vagy könyvtár
./rspace.sh: line 8: + : syntax error: operand expected (error token is " ")

Köszi!

Definiáltam a sort, de sajnos a script nem működik. "Elszáll" valahol.

#!/bin/bash
s=`ls -l | tail -n +1`

e=`./rspace.sh $a`

sor=`echo s | head -n $i | tail -n 1`
if test -z `echo $sor | grep '^d'`;then
osszeg=$(( $osszeg + $0));

else
list="some list splitted by space"
for aToken in $list; do
echo '|' $aToken
done
echo $s
fi

Hogy javítsak rajta, hogy működjön rendesen??

üdv

könyvtárak rekurzív összehasonlítása, és ezek különbségének megjelenítéséről szeretnék kérdezni. hogyan lehet ezt megvalósítani?

ez a feladat amit leírtam. két könyvtárat rekurzívan összehasonlítani. ebből arra következtetek hogy 2 könyvtár tartalmát összehasonlítani (mondjuk a benne lévő fájlokat), és ha nincs egyezés, akkor azt kiírni vagy elmenteni. rekurzió pedig hogy a könyvtárakban lévő alkönyvtárakra is végigcsinálni ugyanezt. van már egy elmletem rá hogykellene, de azért szívesen várok ötleteket, hátha rövidebbek mint az enyém.

Ha az a cél, hogy a két könyvtár szinkronban legyen (pl. mert két helyen dolgozol, és mindig a frissebb verzió a jó), akkor ajánlanám a(z) unison programot. Nagy megelégedéssel használom.

Egyébként én egy ciklus keretében lementeném az egyik könyvtár fájlaira az md5sum-ot egy fáljba, a másik könyvtárét egy másik fájlba, majd azokat diff-fel hasonlítanám össze.

:) az, valóban. de végülis nemgáz, csak amikor felírtam ide, nemnagyon vágtam hogy mimerrehogyan. de szerintem ugykellene, hogy írok egy fgv-t, ami listázza a könyvtárak tartalmát, az egyik tartalmát soronként awk-val szétszedem, és a fájlneveket összehasonlítom a másik könyvtár összes fájlnevével, ami nem egyezik, vagy nincs párja azt kiíratom, aztán ellenőrzöm hogy vannak-e alkönyvtárak benne, ha igen akkor belemegyek és meghívom ugyanezt a függvényt. sztem így jólessz, de ha van egyszerűbb megoldási ötleted szívesen várom.

A kerdesedben a vilagon semmi nem utalt arra, hogy windows, linux, bsd, solaris, vagy urambocsa dos alatt erdekel a megoldas. Arrol sem volt szo, hogy programozasi, vagy uzemeltetesi a kerdes. Ezert kerdeztem azt, hogy mit szeretnel kerdezni, mert a kerdesed elmondott egy nagyon altalanos dolgot. Ez kb. olyan kerdes, hogy "Hogyan lehet telepiteni?" Mit? Hova? Mikor? Mivel? Kinek?

Nezd, ha nem tanulsz meg rendesen kerdezni, a budos eletbe nem fogja neked senki a fejedbol kiolvasni, hogy mit szeretnel. Ulj le, hunyd be a szemed, 2 perc csend, es gondolkozz, hogy hogyan tudnad a kerdest a leghatekonyabban feltenni.