Strona 1 z 1

Bash, skrypt wypisujący polecenia do logu oraz realizujący zadania

: 27 lutego 2012, 14:46
autor: MaRWiD
Witam.
Proszę o podpowiedź w sprawie utworzenia skryptu, tu mam mały problem bo nie wiem czy w bashu da się to zrobić.
Przykładowo w pliku test mam takie coś:

Kod: Zaznacz cały

#!/bin/bash
mkdir /tmp/test
cp costam.tar /tmp/test/
cd /tmp/test
tar xzf costam.tar
configure
make
make install
I chciałbym by utworzył plik log, w którym każde polecenie byłoby wyświetlone na ekranie, a nie tylko wynik np.

Kod: Zaznacz cały

Wykonanie: mkdir /tmp/test
i tu standardowa odpowiedź Linuksa, czyli:

Kod: Zaznacz cały

 Utworzono katalog ,,test''.
[code]wykonanie: cp coś_tam.tar /tmp/test/

Kod: Zaznacz cały

'coś_tam.tar -> '/tmp/test/coś\tam.tar'

Kod: Zaznacz cały

wykonanie: cd /tmp/test

Kod: Zaznacz cały

wykonanie: xzf coś_tam.tar
i tu pokazuje wszystkie wypakowane pliki.

Kod: Zaznacz cały

Wykonanie: cd costam

Kod: Zaznacz cały

Wykonanie: conigure
i tu pokazuje co się dzieje.

Reasumując, chcę by oprócz tego, że plik się wykona stworzył log, w którym wszystkie operacje będą zapisane, po to by sprawdzić, czy nie usuwa pliku. Na ekranie nie da się wszystkiego sprawdzić, tym bardziej jeśli szybko coś się kompiluje.

Pozdrawiam.
Dziękuję za pomoc.

: 27 lutego 2012, 16:10
autor: Bastian
No przecież można tak:

Kod: Zaznacz cały


#!/bin/bash
echo "Tworze katalog /tmp/test.."
mkdir /tmp/test
echo "Kopiuje plik tar..."
cp costam.tar /tmp/test/
echo "wchodze do /tmp/test/"
cd /tmp/test
echo "Rozpakowuje"
tar xzf costam.tar
echo "Konfiguruje źródło"
configure
echo "Rozpoczynam kompilację"
make
make install


: 27 lutego 2012, 16:17
autor: MaRWiD
Wiem, że tak można ale mnie chodzi by ten plik się normalnie wykonał i podczas wykonywania tworzył się log, w którym wszystkie operacje będą zapisane "wszystkie", dokładnie to co jest na ekranie. Jeśli wpisze się w konsoli ręcznie dane polecenie np.:

Kod: Zaznacz cały

./configure
Poza tym wyświetli mi się tylko wynik, a ja chcę również pozostałe informacje.

Myślę, że do tego może posłużyć jakiś skrypt w php albo javascript, ale dopiero zaczynam się tym tematem interesować. Szukam różnych tematów dostępnych w sieci, więc strzelam.

Poza tym ten sposób jest poprawny, jeśli plik ma tyle linii. Ja mam plik co ma setki linii poleceń i chciałbym sprawdzić, czy coś mi powoduje błąd.

: 27 lutego 2012, 18:04
autor: Bastian
Nie rozumiem. Ten skrypt, który przedstawiłeś wykona Ci wszystkie polecania przekazując wynik na ekran. Będziesz miał wszystkie możliwe komunikaty, łącznie z procesem kompilacji, a nie tylko wynik. Skrypt php nie jest do tego potrzebny, a tym bardziej javascript nie ma nic do tego. Chcesz mieć wynik zapisany w pliku, to przekaż wynik tego polecenia do pliku. Jeśli masz tak długi skrypt a chcesz zobaczyć jego przebieg to uruchom go w trybie debuggera.

Kod: Zaznacz cały

/bin/bash -x skrypt.sh


: 27 lutego 2012, 20:29
autor: MaRWiD
Prawda plik ./configure pokaże wszystko ale jeśli wyślę to na drugi plik np /bin/bash -x skrypt.sh > plik.log to w tym pliku mam tylko wyniki a nie to co sie na ekranie pokazuje. Może zadam inne pytanie, jak zapisać to co się dzieje na ekranie do pliku podczas uruchomienia go?

: 27 lutego 2012, 21:29
autor: lessmian2
Zapoznaj się z tee i script. Któreś powinno Ci przypasować.