Prosíme přihlašte se nebo zaregistrujte.

Přihlašte se svým uživatelským jménem a heslem.
Vaše pomoc je stále potřeba!

Autor Téma: ladeni skriptu globalne  (Přečteno 2568 krát)

Uran

  • Aktivní člen
  • *
  • Příspěvků: 341
ladeni skriptu globalne
« kdy: 31 Března 2009, 10:06:37 »
Experimentuji z bashem a v pripade skriptu bych rad vedel co vlastne provedou.

mam jednoduchy skript ladeni.sh:

Kód: [Vybrat]
#!/bin/bash

mkdir asdfgh

Cilem bylo aby se vypsalo jen to co se bude provadet.

Zkusil jsem prikaz:
Kód: [Vybrat]
$bash -x ladeni.sh
Vysledek byl ovsem jiny nez jsem ocekaval.

Kód: [Vybrat]
bash-3.2$ bash -x ladeni.sh
+ mkdir asdfgh
Navic se adresar vytvoril.

Jde nejak prepinacem bez zasahu do vlastniho skriptu dosahnout toho aby se dane prikazy vypsali a neprovedli?

Dekuji za odpoved.
"Pouze text v MS Wordu je opravdu čistý, příteli."

nettezzaumana

  • Host
Re: ladeni skriptu globalne
« Odpověď #1 kdy: 31 Března 2009, 10:19:12 »
a cos cekal .. ?? oLoL
! `man bash`

Uran

  • Aktivní člen
  • *
  • Příspěvků: 341
Re: ladeni skriptu globalne
« Odpověď #2 kdy: 31 Března 2009, 10:42:40 »
No do man stranky jsem se koukal. Anglicky moc neumim a nejak jsem to v zaplave dat nenasel. Zkousel jsem v googlu ruzne varianty "bash+ladění+debug" ap., ale nebyl jsem z toho nejak moudry.

Zajimalo by me jestli jde nejak jednoduse tuto situaci resit?
"Pouze text v MS Wordu je opravdu čistý, příteli."

premet

  • Host
Re: ladeni skriptu globalne
« Odpověď #3 kdy: 31 Března 2009, 10:44:41 »
http://www.ss64.com/bash/set.html, myslím, že parametr -noexec by měl být to co hledáš.

Uran

  • Aktivní člen
  • *
  • Příspěvků: 341
Re: ladeni skriptu globalne
« Odpověď #4 kdy: 31 Března 2009, 11:02:22 »
Tak jsem se asi trochu zamotal zkusil jsem nasledujici a presto mi to adresare zacinajici 1* smazalo.

ladeni.sh:
Kód: [Vybrat]
#!/bin/bash
rm -rf 1*

Kód: [Vybrat]
$sh -a ladeni.sh set -o noexec set -a
« Poslední změna: 31 Března 2009, 11:03:56 od Uran »
"Pouze text v MS Wordu je opravdu čistý, příteli."

nettezzaumana

  • Host
Re: ladeni skriptu globalne
« Odpověď #5 kdy: 31 Března 2009, 11:09:53 »
umh .. pouziva se to aka ::

set -nx command

arrange

  • Závislák
  • ***
  • Příspěvků: 4031
  • "jdu s hlavou vztyčenou..."
Re: ladeni skriptu globalne
« Odpověď #6 kdy: 31 Března 2009, 11:16:13 »
bash -nv ladeni.sh
http://www.openstreetmap.org - mapy celého světa "wiki style"

Uran

  • Aktivní člen
  • *
  • Příspěvků: 341
Re: ladeni skriptu globalne
« Odpověď #7 kdy: 31 Března 2009, 11:26:41 »
Tak jsem to taky nasel tady. http://www.faqs.org/docs/abs/HTML/debugging.html .

Vysledek je logicky, ale asi jsem se na zacatku spatne vyjadril. Krome vypisu chyb bych chtel videt stejne jako kdyz misto

Kód: [Vybrat]
$rm -rf 1* pouziji

Kód: [Vybrat]
echo rm -rf 1*aniz bych musel pred kazdy prikaz psat to echo

Jde mi o to ze casto mazu/prejmenovavam vice polozek a pak je uzitecne vedet co se prejmenovava.
Prikaz
Kód: [Vybrat]
set -nx ladeni.sh mi neukaze soubory co by se meli mazat.

"Pouze text v MS Wordu je opravdu čistý, příteli."

premet

  • Host
Re: ladeni skriptu globalne
« Odpověď #8 kdy: 31 Března 2009, 11:30:33 »
Tak si zapni ukecanej mod u rm → rm -rfv

arrange

  • Závislák
  • ***
  • Příspěvků: 4031
  • "jdu s hlavou vztyčenou..."
Re: ladeni skriptu globalne
« Odpověď #9 kdy: 31 Března 2009, 11:50:44 »
echo Ti jen "expanduje" ten výraz 1*, takže by úplně stačilo echo 1*, pokud Ti jde jen o zobrazení souborů. Jinak to pro kontrolu běhu programu nefunguje, např. echo ls vypíše jen ls : )
http://www.openstreetmap.org - mapy celého světa "wiki style"

Uran

  • Aktivní člen
  • *
  • Příspěvků: 341
Re: ladeni skriptu globalne
« Odpověď #10 kdy: 31 Března 2009, 12:17:02 »
Jasny ale to bude jen u toho rm. Ja pouzivam jine programy.

Porad mi neni jasne proc se nasledujici skript ladeni.sh:

Kód: [Vybrat]
#!/bin/bash


sssssss
dfgfgfgf
gfdggf
dgdgd
gdgdf

echo ahoj
rm -rf 1*

Vypis adresare kde se spousti skript:
Kód: [Vybrat]
bash-3.2$ ls
erwerew  ladeni.sh  ladeni.sh~  1fgrthghjgjg  1fsfsfsf  1oljvvxdss

Poskytne:

1.
Kód: [Vybrat]
bash-3.2$ bash -n ladeni.sh
bash-3.2$

Mel by prece vypsat nejake chyby (neexistujici sssss .....)?

2.
Kód: [Vybrat]
bash-3.2$ bash -nx ladeni.sh
bash-3.2$
By mel ukazat ahoj+ nejake chyby?


"Pouze text v MS Wordu je opravdu čistý, příteli."

nettezzaumana

  • Host
Re: ladeni skriptu globalne
« Odpověď #11 kdy: 31 Března 2009, 13:06:13 »
umh .. jak ti muze bash vypsat neexistujici prikaz kdyz ho ani nezkusi provest ..

pokud se ti ma vypsat obsah scriptu tak na to pouzij `cat script.sh` ;)

Uran

  • Aktivní člen
  • *
  • Příspěvků: 341
Re: ladeni skriptu globalne
« Odpověď #12 kdy: 31 Března 2009, 14:28:35 »
Sorry, ale uz jsem nejak mimo - nechapu jak to myslis(te).
Tak posledni pokus. Chtel jsem abych mel neco jako "stroj casu" tj. provedl bych nejaky skript (mazani, prejmenovani, konvertovani .....) a pak v pripade, ze se mi to nelibi mohl vzit zmeny zpet.

Predpokladal jsem, ze to pujde jednoduse nejakym prepinacem, ktery zapricini stejny vypis jako by vypisoval ten skript, ale fyzicky by nemanipuloval se zdrojovymi daty. Nejak jak jsem zil porad v presvedceni, ze obdobne jako u rm existuje pro bash fce, ktera by tento ochrany  (proti me blbosti) mechanizmus umoznovala.


Tak posledni otazka: existuje nejaka takovato moznost?
"Pouze text v MS Wordu je opravdu čistý, příteli."

nettezzaumana

  • Host
Re: ladeni skriptu globalne
« Odpověď #13 kdy: 31 Března 2009, 15:50:52 »
ne, musis (alespon tak to delam ja) napsat skript v debugging modu a po ujisteni ze vse bezi jak ma ho nalezite upravit aka ::

if test -d $foo; then
  echo 'rm -rv $foo &>/foo.log';
fi

Martin Kiklhorn

  • Člen občanského sdružení Ubuntu ČR a placené komunitní podpory
  • Administrátor fóra
  • Závislák
  • ******
  • Příspěvků: 4807
  • グーグル!ご存知ですか?
    • HEJ
Re: ladeni skriptu globalne
« Odpověď #14 kdy: 31 Března 2009, 16:45:13 »
Tak posledni pokus. Chtel jsem abych mel neco jako "stroj casu" tj. provedl bych nejaky skript (mazani, prejmenovani, konvertovani .....) a pak v pripade, ze se mi to nelibi mohl vzit zmeny zpet.
Jaký je reverzní příkaz k rm? To je věc diskového/souborového systému.
Nějaké možnosti "stroje času" máte.
snapshoty nad LVM2
snapshoty nad ZFS -v Linuxu není v jádře, ale přes fuse stejně jako NTFS. (a časem snad i grafický time-slider viz screencast)

Jsou ve vašem dotazu OPRAVDU VŠECHNY vám dostupné informace o problému?
Linux user since 2007-10-11, Registered #456007
Virtual
| Distribuce
~/slozka znamená /home/"vase jmeno"/slozka
6521 69DE 0F34 FCBC FB1D  DE76 360E 52B2 F71A B8E8

 

Provoz zaštiťuje spolek OpenAlt.