» »

[Naloga][Linux] BASH skripte

[Naloga][Linux] BASH skripte

Nejcos ::

Živjo!
Imam problem. Učim se za kolokvij, pa mi par stvari ni jasnih oz. ne najdem prave razlage, primerov, da bi stvar zaštekal... Kot vidim, ste tuki majstri za linux, zato upam, da si bo kdo vzel minutko ali dve in mi priskočil na pomoč pri mojih zelo osnovnih vprašanjih ;)
Govora je o skriptih. Imam nekaj nalog, a nobenih rešitev, nobenega vnaprej rešenega primera, zato ne vem, kako se lotiti stvari. Tudi v ućbenikih je večinoma teorija, mene pa zanima, kako gre to v praksi. Napisal bom nekaj nalog, pa upam, da mi bo kdo katero rešil in mal obrazložil.

1.Napišite skript za Linuxovo lupino (ime naj bo owner.sh), ki bo nastavil lastnika in skupino, kateri datoteka pripada na isto vrednost. To vrednost in datoteko bo potrebno podati kot parameter. Primer uporabe: owner.sh janezn x.txt naj postavi janezn za lastnika in skupino datoteke x.txt.

2.Napišite skript za Linuxovo lupino (add.sh), ki kot parameter dobi dve števili in izpiše njuno vsoto. Primer uporabe: add.sh 7 9 izpiše 16 na standardni izhod.

3.Napišite skript, ki izpiše število datotek (samo datotek, ne pa tudi imenikov), ki se nahajajo v trenutnem imeniku.

4.Napišite skript, ki preimenuje vse datoteke s končnico .txt, tako da jim pred ime doda tekst text_. Tako npr. datoteka x.txt postane text_x.txt.


No, to je nekaj nalog, s pomočjo katerih želim osvojiti vsaj osnove skriptov. Kajti, knjih res nisem našel, kjer bi bile naloge z rešitvami. Zato res upam, da si bo kdo vzel čas. Hvala!
  • spremenilo: CCfly ()

@LOL ::

lenoba:|
Ne vem kdo ti bo šel delati ali reševati naloge. Na netu imaš polno bash tutorialov...
In te naloge so tako osnovne da se jih da rešit po kakem 2 dnevnem učenju basha0:)
kva si za en faks da mate bash? upam da ne fri (tukaj smo ga včasih meli) ali feri ker pol folk dobi občutek da so tam res sami noobi če niso sposobni rešiti teh osnovnih nalog>:D
Hippy: The Doors?
Geek: The Windows!

Zgodovina sprememb…

  • spremenil: @LOL ()

Nejcos ::

Prosil sem za pomoč, ne pa za tvoje komentarje. Če ti kaj ne ustreza, pač ne beri te teme.

CCfly ::

Vsak od naštetih trivialnih problemov je obrazložen v:
- Bash Programming Intro HOWTO
- Advanced Bash-Scripting Guide.

Veselo branje.
"My goodness, we forgot generics!" -- Danny Kalev

Nejcos ::

Hvala, zdaj mal študiram tutorial. Ma saj res ni težko, ampak mi par stvari ni jasnih. Take malenkosti, ki so pač tudi pomembne. Bom še mal naokol posikal, sicer se oglasim spet tu.

Nejcos ::

Bi bil en tko dobr, pa mi rešil eno izmed nalog, da vsaj vidim, kakšna je struktura. Težave imam predvsem, ker ne vem, kam napisati ime lupine, pa kako s temi parametri. A potem za ime lupine pišem samo #! ime_lupine ali #!/bin/ime_lupine al kako... Lepo prosim, ker izgubljam dragocen čas.

kekz ::

3. naloga

#!/bin/bash

echo "V privzeti mapi je `find . -maxdepth 1 -type f | wc -l` datotek."

kekz ::

4. naloga

#!/bin/bash

find . -maxdepth 1 -name "*.txt" -exec mv -v {} text_{} \;

kekz ::

1. in 2. sta pa res prelahki in daj sam.

Nejcos ::

Evo slovenska različica strani, ki jo je že posredoval CCfly, če bo kdo imel podobno problematiko kot jaz;)
http://www.lugos.si/delo/slo/HOWTO-sl/B...

Hvala kekz!!!

Nejcos ::

Tisto k mi je kekz napisal za rešitve, mi zgleda mal komplicirano. Je lahko rešitev npr. 4. naloge tudi:

#!/bin/bash
for x in *.txt
do
if test -f $x
then
mv $x text_$x
fi
done

kekz ::

Aha, tu si vgradil še dodatno kontrolo, da preimenuješ samo dodatne fajle, drugih pa ne. Čeprav ni ravno običajno, da bi npr. direktorij imel ime *.txt. OK, to je v redu. Pri moji bi to dosegel samo še z enim switchem -type, podobno kot pri nalogi 3.

Ima pa tvoja procedura en drug BUG. Če je v mapi preveč *.txt datotek, bo zadeva crknila. To se mi je v praksi že dogajalo. For zanka ni najboljša, če ne veš, koliko elementov bo. Najbrž bo problem tudi, če so v imenih fajlov presledki.
Bolje bi bilo uporabiti while (ali until) zanko, ki jo polniš skozi pipo z ls in to potem nima te slabosti.

Zgodovina sprememb…

  • spremenilo: kekz ()

kekz ::

Drugače pa stvar okusa. Meni so bolj razumljive in pregledne kratke in jedrnate skripte.

BigWhale ::

Prav tako lahko find-u poves, da najde samo datoteke in ne direktorijev...

*sigh*

Zgodovina sprememb…

  • vrnilo v prejšnje stanje: STASI ()

BigWhale ::

LOL:

> In te naloge so tako osnovne da se jih da rešit po kakem 2 dnevnem učenju
> basha[0:)]


Dva dni za tole!?

Ce tega ne zgruntas v 2 (dveh) urah, potem je bolje, da si odgriznes desno nogo.

kekz ::

Še različica 3. naloge za tiste, ki jim find ni "všeč":

#!/bin/bash
echo "V privzeti mapi je `ls -la | grep ^- | wc -l` datotek."


Pred leti je mene motilo ravno to, da je mogoče vsako stvar narediti na toliko povsem različnih načinov. :\

STASI ::

Nekaj vaših postov je bilo zbrisanih, zakaj že avtorji vedo!

Od tu naprej se prosim obnašajte ali pa bomo temi dodali ključavnico!

LP

STASI
"WAR IS PEACE, FREEDOM IS SLAVERY, IGNORANCE IS STRENGTH"

abcčdefghijklmnoprsštuvzž

sverde21 ::

Tukajle je še en slovenski vodič ;) .
<?php echo `w`; ?>


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

[bash] Sortiranje fotografij po datumu

Oddelek: Programiranje
101459 (1020) Mike0
»

BASH skripta za ustvarjanje uporabnikov

Oddelek: Programiranje
71070 (839) golobich
»

Pomoč pri ukazih v linuxu

Oddelek: Operacijski sistemi
101500 (1144) brodul
»

Ukazno programiranje

Oddelek: Programiranje
51293 (968) Invictus
»

Linux skript

Oddelek: Programiranje
92117 (1931) MRB0rYS

Več podobnih tem