Pomoc oko pravljenja skripti

3

Pomoc oko pravljenja skripti

offline
  • caiser 
  • Novi MyCity građanin
  • Pridružio: 25 Sep 2007
  • Poruke: 1

soxxx ::Za pravljanje tar arhive:

# Brisanje svih foldera i datoteka iz foldera u kome zelim da sacuvam backup

sudo rm -rf ~/krak/aplikacije/podesavanja/backup/*

echo -n "Proveravamo dali su svi fajlovi uspesno obrisani ... "

if [ $? -ne 0 ]
then
   echo "neki fajlovi nisu obrisani"
else
   echo "fajlovi uspesno obrisani"
fi




Ja se izvinjavam sto ovako upadam Smile ali samo da kazem da ova provera nema smisla i da nece raditi. Smile Provera return koda ce uvek hvatati izlazni kod echo funkcije umesto rm komande. Dobra je praksa da se izlaz svake komande koju hoces da proveris dodeli nekoj promenjivoj i da se posle radi sa tom promenjivom umesto direktno sa samim izlaznim kodom.


sudo rm -rf ~/krak/aplikacije/podesavanja/backup/*
RET=$?

echo -n "Proveravamo dali su svi fajlovi uspesno obrisani ... "

if [ ${RET} -ne 0 ]
then
   echo "neki fajlovi nisu obrisani"
else
   echo "fajlovi uspesno obrisani"
fi



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
offline
  • soxxx 
  • Prijatelj foruma
  • Pridružio: 25 Maj 2005
  • Poruke: 1482
  • Gde živiš: Gracanica, Kosovo

Hvala na ispravci. Wink Ustvari je to bio komentar a kasnije sam ja dodao echo i zaboravio da promenim (kad sam to pisao bilo je 5 i nesto ujutru Wink).



offline
  • bocke  Male
  • Moderator foruma
  • Glavni moderator Linux foruma
  • Veliki Pingvin
  • Guru
  • Pridružio: 16 Dec 2005
  • Poruke: 12488
  • Gde živiš: Južni pol

@caiser: Samo napred. Svaki doprinos je dobrodosao. Wink

offline
  • soxxx 
  • Prijatelj foruma
  • Pridružio: 25 Maj 2005
  • Poruke: 1482
  • Gde živiš: Gracanica, Kosovo

Sad kad pogledam skriptu i nije bas bas...ali dobro, recimo ako neki fajlovi nisu obrisani moglo bi da se stavi exit 1. Ali posto je tema vec resena da ne "trujem" vise onda... Very Happy

offline
  • Pridružio: 20 Feb 2005
  • Poruke: 4505
  • Gde živiš: planeta Zemlja

1. Sada me zanima kako da namestim da mi izbacuje samo moje echo recenice (primer: pise echo "backup je gotov) i da ne prikazuje output svih komandi koje sam pre toga zadao (prilikom kreiranja iso fajla i rezanja istog na disk imam previse texta sto mi ne treba. Zelim da me posle svake operacije samo obavesti u jednoj prosto prosirenoj recinici ("Backup je gotov, zavrseno je kopiranje conf fajlova...)).

2. Kako da namestim da mi izbacuje poslednji red outputa (recimo zadam mu komandu da mi zapakuje 30 foldera u 7z ali zelim samo da vidim da li je pakovanje uspelo (to se prikazuje u poslednjem redu u p7zip programu))?

3. Zelim da napravim skriptu koja ce da radi sledece:
- konvertuje sve avi datoteke iz zadatog foldera u mp4
-da svaki fajl zadrzi svoje ime (primer: kada prekonverujem fajl pod imenom "3koj3k.avi" u mp4 da ime tog fajla bude "3koj3k.mp4")

Ja znam kako da ovo uradim za za 1 fajl ali ne znam kako da tu komandu ubacim u skriptu koja ce bez pitanja da konvertuje 20, 40 ili 1000 fajlova u mp4 format sa zadrzavanjem imena!

Hvala Mr. Green

offline
  • soxxx 
  • Prijatelj foruma
  • Pridružio: 25 Maj 2005
  • Poruke: 1482
  • Gde živiš: Gracanica, Kosovo

.::Wizard::. ::1. Sada me zanima kako da namestim da mi izbacuje samo moje echo recenice (primer: pise echo "backup je gotov) i da ne prikazuje output svih komandi koje sam pre toga zadao

Mislim da ti treba ovo: http://tldp.org/HOWTO/Bash-Prog-Intro-HOWTO-3.html

ili ovo: http://cfaj.freeshell.org/shell/tuesday-tips/#tt-2004-08-24

(hint: > /dev/null 2>&1)

Za 2. neznam.

.::Wizard::. ::3. Zelim da napravim skriptu koja ce da radi sledece:
- konvertuje sve avi datoteke iz zadatog foldera u mp4
-da svaki fajl zadrzi svoje ime (primer: kada prekonverujem fajl pod imenom "3koj3k.avi" u mp4 da ime tog fajla bude "3koj3k.mp4")

Ja znam kako da ovo uradim za za 1 fajl ali ne znam kako da tu komandu ubacim u skriptu koja ce bez pitanja da konvertuje 20, 40 ili 1000 fajlova u mp4 format sa zadrzavanjem imena!


Pa ti postavi kako radis to za jedan fajl pa da vidimo! Wink

offline
  • bocke  Male
  • Moderator foruma
  • Glavni moderator Linux foruma
  • Veliki Pingvin
  • Guru
  • Pridružio: 16 Dec 2005
  • Poruke: 12488
  • Gde živiš: Južni pol

2. Koristi odgovarajuci filter. Mislim da je tail najpodesniji za posao. Preusmeris output komande u tail -n 1.

3. Kreni da pises, pa cemo korigovati. Za menjanje samo ekstenzije mozes koristiti Perl, SED ili awk... Napisacu primer kako to uraditi u Perlu kasnije... Ali prvo postavi skicu (prvu verziju) skripta.

offline
  • Pridružio: 20 Feb 2005
  • Poruke: 4505
  • Gde živiš: planeta Zemlja

Ok. Evo skripte:

#!/bin/sh
#skripta za pravljenje backupa

echo "Pocinjem pravljenje backupa..."

#Brisanje predhodnog app-backupa
if [ -f ~/krak/aplikacije/podesavanja/backup.7z ]
then
   echo "Brisem predhodno napravljen app-backup..."
rm -r -f ~/krak/aplikacije/podesavanja/backup.7z
fi

#Backupovanje konfiguracionih datoteka
echo "Backupujem konfiguracione fajlove"
7z a ~/krak/aplikacije/podesavanja/backup.7z ~/.gnome2 ~/.evolution ~/.config ~/.gajim ~/.gconf ~/.gconfd ~/.mozilla ~/.nautilus ~/.profile ~/.face ~/.wvdial.conf ~/.audacity ~/.gnome2_private ~/.gnome ~/.gnupg ~/.conkyrc ~/.gtk-bookmarks ~/.hwdb ~/.themes ~/.icons ~/.gtkrc-2.0 ~/.gtkrc ~/.gimp-2.2 ~/.inkscape ~/.qt ~/.sagcad ~/.fluxbox ~/.tilda ~/.ut2004demo ~/.gmshrc ~/.pcmanfm
#Testiranje ispravnosti
7z t ~/krak/aplikacije/podesavanja/backup.7z

#Backupovanje Jeleninih *.odt fajlova
echo "Kopiram Jelenina dokumenta..."
cp ~/*.odt ~/krak/jelena/

echo "Selektujem foldere za backup..."

#Kreiranje slike (iso) foldera koji zelim da backup-ujem
echo "Pravim iso fajl..."
mkisofs -o ~/Desktop/file-backup-`date +%d-%m-%y`.iso -J -R -A -V ~/krak/
echo "Pravljenje iso fajla gotovo!"

#Brisanje predhodnog sadrzaja sa diska
umount /dev/hdc/
echo "Brisanje starog backupa sa diska je u toku..."
dvd+rw-format -blank=full /dev/hdc

#Rezanje backupa na disk
echo "Rezem novi backup na disk..."
wodim -v dev=/dev/hdc speed=2 ~/Desktop/file-backup-`date +%d-%m-%y`.iso
echo "Rezanje je zavrseno!"

#Brisanje temp iso fajla
echo "Brisem temp iso fajl..."
rm -r -f ~/Desktop/file-backup-`date +%d-%m-%y`.iso

echo "Backup je gotov :]"


Malo cu da prostudiram tail

Evo i kako konvertovati avi u mpeg:
ffmpeg -i [snimak.flv] -ab 56 -ar 22050 -b 500 -s 320x240 konvertovani-snimak.mpg

p.s. Ovu skriptu prvenstveno koristim za konvertovanje flv u mpg ali moze se upotrebiti na 101 nacin Wink

Dopuna: 25 Okt 2007 10:20

[dopuna]

Tail (last line):
tail myfile.txt -n-1

Sada cu da procitam jedan tutorial pa mi mozda nesto padne na pamet za skriptu za kovertovanje Smile

p.s. Meni je hdd crkao pa necu moci da probam skriptu do sledece nedelje. Imam vremena sa "kuvam(o)" skriptu prilicno dugo Mr. Green

Dopuna: 25 Okt 2007 22:12

sto se tice skripte za kovertovanje nasao sam nesto sto bih mozda mogao da iskoristim:

#!/bin/bash
#  cvt.sh:
#  Converts all the MacPaint image files in a directory to "pbm" format.
#  Uses the "macptopbm" binary from the "netpbm" package,
#+ which is maintained by Brian Henderson (bryanh@giraffe-data.com).
#  Netpbm is a standard part of most Linux distros.
OPERATION=macptopbm
SUFFIX=pbm          # New filename suffix.
if [ -n "$1" ]
then
  directory=$1      # If directory name given as a script argument...
else
  directory=$PWD    # Otherwise use current working directory.
fi 
 
#  Assumes all files in the target directory are MacPaint image files,
# + with a ".mac" suffix.
for file in $directory/*    # Filename globbing.
do
  filename=${file%.*c}      #  Strip ".mac" suffix off filename
                            #+ ('.*c' matches everything
                            #+ between '.' and 'c', inclusive).
  $OPERATION $file > $filename.$SUFFIX
                            # Redirect conversion to new filename.
  rm -f $file               # Delete original files after converting.   
  echo "$filename.$SUFFIX"  # Log what is happening to stdout.
done
exit 0


Malo mi je konfuzno stoga ce mi trebati neko vreme da to proucim Wink

offline
  • bocke  Male
  • Moderator foruma
  • Glavni moderator Linux foruma
  • Veliki Pingvin
  • Guru
  • Pridružio: 16 Dec 2005
  • Poruke: 12488
  • Gde živiš: Južni pol

Nice... To jos nisam probao. Evo tutorijal koji ukljucje i to:
http://tldp.org/LDP/abs/html/index.html - Advanced Bash scripting guide

Pre svega ovaj odeljak http://tldp.org/LDP/abs/html/globbingref.html

offline
  • soxxx 
  • Prijatelj foruma
  • Pridružio: 25 Maj 2005
  • Poruke: 1482
  • Gde živiš: Gracanica, Kosovo

Prvi pokusaj Smile :
#!/usr/local/bin/bash

# Direktorijum sa fajlovima
FLVDIR=/dir/do/fajlova

# Ili ako su fajlovi razbacani onda moze ovako nesto pa kombinuj
# find . -name '*.flv' -print | while read i
for snimak in $FLVDIR/*
do
   KRAJNJI_MPG=`basename $snimak .flv`.mpg

   # ili mozda ovako :):)
   KRAJNJI_MPG=${snimak%.*v}

   # ili ovako? :D:D
   KRAJNJI_MPG=${snimak/.flv/}.mpg
   
# na kraju konverzija
ffmpeg -i "$snimak" -ab 56 -ar 22050 -b 500 -s 320x240 "$KRAJNJI_MPG"

done

echo "konverzija uspesno zavrsena!"
# kraj

Nisam trenutno na *NIX sistemu tako da nemogu da ovo isprobam.

P.S. Moj script-fu sucks, ali mozda te uputim na pravi put... Test and wear a condom. Wink

DOPUNA:

Jel sigurno mora da se navede .flv za pocetni i .mpg za izlazni fajl? Onda ne mora da se radi ovo sa 'skidanjem' sufiksa.

Moze li ovo biti "oneliner"?

find /dir/sa/fajlovima -name '*.flv' -print0 | xargs -0 ffmpeg '{}' -i -ab 56 -ar 22050 -b 500 -s 320x240 '{}'.mpg \;

Ko je trenutno na forumu
 

Ukupno su 1262 korisnika na forumu :: 42 registrovanih, 8 sakrivenih i 1212 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 3466 - dana 01 Jun 2021 17:07

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: A.R.Chafee.Jr., amaterSRB, Andrija357, cavatina, cifra, Denaya, DonRumataEstorski, dragoljub11987, FOX, goxin, ikan, Istman, ivica976, jackreacher011011, JOntra, Karla, kybonacci, ladro, M1los, mikrimaus, milenko crazy north, Mixelotti, nemkea71, nenad81, nextyamb, opt1, pein, Petarvu, Raso75, rodoljub, royst33, sasa76, Sirius, solic, stalja, Tvrtko I, vlvl, wolverined4, yrraf, YugoSlav, zziko, 1107