Portál AbcLinuxu, 5. května 2024 02:50


Dotaz: skript

26.11.2003 10:33 Tom
skript
Přečteno: 207×
Odpovědět | Admin
Zdravím,

Potřeboval bych si v Linuxu napsat malý skriptík.

Měl by obsahovat následující:

1.Najdi soubor napr. "test", pokud nenalezen vypis nejake error info

2.Cestu k souboru uloz do nejake promenne napr CESTA

3. Do teto cesty nakopiruj dalsi soubory

Verim ze je to jednoduche, ale nemam v programovani v linuxu moc zkusenosti, teda zatim...

Tom.
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

26.11.2003 11:28 Peter Golis | skóre: 64 | blog: Bežné záležitosti | Bratislava
Rozbalit Rozbalit vše skript
Odpovědět | | Sbalit | Link | Blokovat | Admin
1;) pri vypise error info zvyknu programy vratit chybovy navratovy kod:
nejakyprogram || ls test
alebo podla tvojej specifikacie:
nejakyprogram > nejaky.log 2>nejaky.err
ak sa dobre pametam ;-)
if [[ -f nejaky.err ]]
then
ls test
fi
2;) na vypis cesty sluzi prikaz dirname (man dirname)
CESTA=`dirname ${nejakysubor_scestou}`
3;) na kopirovanie sluzi prikaz cp
cp ${nejake_subory} ${cesta}

viac serialik tunajsi programujeme v bashi (pozeral si?), alebo internet, ka chces ine projramovacie jazyky/ine interpretery prikazov.
26.11.2003 13:14 unchallenger | skóre: 69 | blog: unchallenger
Rozbalit Rozbalit vše skript
Odpovědět | | Sbalit | Link | Blokovat | Admin
Ohledně hledání ,test` -- kde se má hledat? V aktuálním adresáři -- test -f test (ten první test je jméno příkazu ;-) Někde v nějaké adresářové strkutuře -- find /ce/sta -name test Kdekoli na disku, není nutná 100% aktuálnost, zato rychlost -- locate \*/test Jinde, jinak?
26.11.2003 13:53 kolisko | skóre: 21 | blog: prace
Rozbalit Rozbalit vše skript
cesta="/tmp" hledanysoubor="hledanysoubor" echo "Hledam soubor $hledanysoubor v adresari $cesta" find $cesta -name $hledanysoubor -print|perl -ne 'if (/(.*\/).*/) {print "vyskyt (error info): $1\n"}' pro kopirovani pak pouzij cyklus 'for'
26.11.2003 17:54 unchallenger | skóre: 69 | blog: unchallenger
Rozbalit Rozbalit vše skript
perl a for cykly ... brr
IFS=$'\n' a=$($(find /kde/hledat -name test))
if test ${#a[@]} = 1; then
  cp --target-directory $(basename "$a") -- ostatní soubory
else
  if test -z "$a"; then
    echo Dneska bohužel nic. 1>&2
  else
    echo Našlo se toho kapku moc. 1>&2
  fi
fi
27.11.2003 10:51 Bronislav Klapuch | skóre: 8
Rozbalit Rozbalit vše skript
#!/bin/bash

ADRESAR=`pwd`       #odkud se ma hledat
HLEDANY=soubor*     #co se ma hledat
SOUBOR=`pwd`/test   #co se ma kopirovat
IS_=/tmp/is         #docasny soubor

for NAME in `find $ADRESAR -name $HLEDANY`
   do
      NAME=`dirname $NAME`
      cp -f $SOUBOR $NAME
      touch $IS_
   done
[ -f $IS_ ] && echo "hotovo" || echo "soubor nebyl nalezen"
rm -f $IS_
puvodne byly radky v tomto skriptu spravne odsazene.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.