tekst_suzie_4c.pdf
(
1437 KB
)
Pobierz
124532929 UNPDF
Podstawy open source – system SUSE Linux cz. II
2-55
2.3 Zaawansowane wykonywanie poleceń
2.3.1 Stosowanie potokowania (
piping
piping
) i przekierowań
) i przekierowań
Linux ma trzy standardowe kanały danych:
Opis standardowych kanałów:
Kanał
Numer
Opis
Standardowe wejście (stdin) 0 Uruchomiony program na bieżąco czyta
dane z tego kanału (zwykle jest to
klawiatura)
Standardowe wyjście
(stdout)
1 Program wysyła dane do tego kanału
(zwykle jest to monitor)
Standardowe wyjście
błędów (stderr)
2 Błędy są przesyłane do tego kanału
(zwykle na monitor)
Każdy kanał może być przez powłokę przekierowany. Na przykład, standardowe
wejście może być przekierowane na plik, albo dane wyjściowe lub informacje
o błędach mogą być kierowane do pliku.
Symbole przekierowania:
<
przekierowuje standardowe wejście,
>
przekierowuje standardowe wyjście (jest to skrót od „1
>
”),
2
>
przekierowuje standardowe wyjście dla błędów.
„
>
” nadpisze istniejący plik. Jeżeli dane mają być
dopisane do zawartości pliku, należy użyć „
>>
” lub
„2
>>
”.
Poniższe przykłady pokazują standardowe wejście, wyjście,wyjście błędów oraz
2008 Novell Inc.
Licencja Creative Commons Attribution-NonCommercial-ShareAlike 2.5. Wolno kopiować, rozprowadzać, przedstawiać
i wykonywać utwór oraz opracowane na jego podstawie utwory zależne jedynie dla celów niekomercyjnych, przy zachowaniu autorstwa
Novell Inc.
2.3.1 Stosowanie potokowania (
Podstawy open source – system SUSE Linux cz. II
2-56
domyślne zachowanie powłoki (shell).
geeko@da51:~ > ls /opt /recipe
/bin/ls: /recipe: No such file or directory
/opt:
gnome kde3
Wyjaśnienie.
Zawartość katalogu /opt wyświetlona jest w wierszu 3 i 4. Katalog /recipe
nie istnieje. Komunikat błędu wyświetlony jest w wierszu 2.
Jeżeli standardowe wyjście błędów przekierujemy do
/dev/null
, tylko
standardowe wyjście wyświetlone zostanie na ekranie:
geeko@da51:~ > ls /opt /recipe 2> /dev/null
/opt:
gnome kde3
By przekierować standardowe wyjście i standardowe wyjście błędów do pliku
(takiego jak „output”) napiszemy:
geeko@da51:~ > ls /opt /recipe > output 2>&1
geeko@da51:~ >
Wyjaśnienie
. Standardowe wyjście jest przekierowane do pliku output, a następnie
standardowe wyjście błędów jest przekierowane na standardowej wyjście (2>&1). Znak
„&” wskazuje na poprzedzający opis pliku.
W innym przykładzie użyto pliku
list
zamiast
output
. By wyświetlić jego
zawartość użyjemy polecenia
cat
:
geeko@da51:~> cat list
/bin/ls: /recipe: No such file or directory
/opt:
gnome
kde3
Te opcje komunikacji procesów są dostępne nie tylko w powłoce, ale mogą też
być używane bezpośrednio w programach. Wszystkie pliki w systemie mogą
być użyte jako wejście lub wyjście.
Przydatną czasem możliwością jest użycie pliku jako wejścia do programu
oczekującego strumienia danych z klawiatury. Należy wtedy odpowiednio
2008 Novell Inc.
Licencja Creative Commons Attribution-NonCommercial-ShareAlike 2.5. Wolno kopiować, rozprowadzać, przedstawiać
i wykonywać utwór oraz opracowane na jego podstawie utwory zależne jedynie dla celów niekomercyjnych, przy zachowaniu autorstwa
Novell Inc.
Podstawy open source – system SUSE Linux cz. II
2-57
przekierować standardowe wejście:
geeko@da51:~ # echo "Hello Tux,
>
> how are you?
> Is everything okay?" > greetings
geeko@da51:~ # mail tux < greetings
Wyjaśnienie
. Po pierwsze, tekst jest przekierowywany do pliku greetings poleceniem >
(wiersze 1-3). Program mail otrzymuje wejście z pliku greetings (nie z klawiatury),
a następnie wysyła email do użytkownika tux (wiersz 4
).
Ćwiczenie. Stosowanie potokowania i przekierowywania –
część I
Utwórz plik o nazwie Redirection w swoim domowym katalogu, który
zawiera:
… wyjście (wynik działania) polecenia ls /; uzupełniony następnie...
...zawartością zmiennej $PATH, oraz …
...komunikatem o błędnym wykonaniu polecenia cd /root
Wyjście jednego polecenia może być użyte jako wejście do innego przez użycie
potoku (pipe, symbol „
|
”).
składnia:
command1 | command2
W pojedynczym potoku (pipe) może istnieć maksymalnie 4 KB
nieprzetworzonych danych. Jeżeli proces generujący wyjście próbuje zapisać
dane do zapełnionego potoku, jest to zatrzymywane i wznawiane w chwili, gdy
zapis jest już możliwy. Z drugiej strony – proces czytający jest zatrzymywany,
gdy próbuje czytać z pustego potoku.
geeko@da51:~ > ls l /etc | less
Czasami możemy chcieć wynik polecenia mieć zarówno wyświetlony na ekranie
jak i zapisany do pliku. Użyjemy wtedy polecenia
tee
:
2008 Novell Inc.
Licencja Creative Commons Attribution-NonCommercial-ShareAlike 2.5. Wolno kopiować, rozprowadzać, przedstawiać
i wykonywać utwór oraz opracowane na jego podstawie utwory zależne jedynie dla celów niekomercyjnych, przy zachowaniu autorstwa
Novell Inc.
Ćwiczenie. Stosowanie potokowania i przekierowywania –
część I
Podstawy open source – system SUSE Linux cz. II
2-58
geeko@da51:~ > ls l | tee output
W tym przypadku wyjście polecenia zostanie wyświetlone na ekranie
i jednocześnie zapisane do pliku output.
Aby przekierować wyjście sekwencji kilku poleceń w wierszu poleceń, polecenia
te muszą być oddzielone od siebie średnikami i cała sekwencja zamknięta
nawiasami (command1; command2):
geeko@da51:~> (id ; ls ~) > output
geeko@da51:~> cat output
uid=1000(geeko) gid=100(users)
groups=14(uucp),16(dialout),33(video),100(users)
bin
Desktop
Documents
output
public_html
geeko@da51:~>
Ćwiczenie. Stosowanie potokowania i przekierowywania
–
część II
Polecenie
wc
(word count) zlicza słowa w pliku tekstowym. Polecenie
wc
-l
zlicza wiersze w pliku.
Przekaż potokiem wyjście polecenia
ls -l
do polecenia
ws -l
. Co będzie
rezultatem takiej konstrukcji?
________________________________________________________________
Powłoka uruchamia osobną podpowłokę (subshell) dla przetwarzania
indywidualnych poleceń. By przekierować powiązane polecenia, powłoka musi
być zmuszona do wykonywania łańcucha powiązanych poleceń w tej samej
2008 Novell Inc.
Licencja Creative Commons Attribution-NonCommercial-ShareAlike 2.5. Wolno kopiować, rozprowadzać, przedstawiać
i wykonywać utwór oraz opracowane na jego podstawie utwory zależne jedynie dla celów niekomercyjnych, przy zachowaniu autorstwa
Novell Inc.
Ćwiczenie. Stosowanie potokowania i przekierowywania
część II
Podstawy open source – system SUSE Linux cz. II
2-59
podpowłoce. Jest to robione przez zamknięcie wyrażenia w nawiasach.
Po wykonaniu, każdy program zwraca wartość stanu wykonania (status). Jeżeli
ta wartość jest równa zeru – program zakończył się sukcesem. W przypadku
błędu – zwracana jest wartość różna od zera. Zależnie od programu – różne
wartości wskazują na różne błędy (są kodami błędu).
Można użyć polecenia echo $? do wyświetlenia zwracanej wartości:
geeko@da51:~> ls
bin Desktop Documents public_html
geeko@da51:~> echo $?
0
geeko@da51:~>
Zwracany kod może być użyty jako wyzwalacz (trigger) wykonania innego
polecenia:
Wiązanie
Wynik
Polecenie1 &&
polecenie2
Polecenie 2 zostanie wykonane tylko wtedy,
gdy polecenie1 zakończy się bezbłędnie.
Polecenie1 || polecenie2 Polecenie 2 zostanie wykonane tylko wtedy,
gdy polecenie1 zakończy się z błędem.
Przykład:
1
geeko@da51:~> ls recipe || ls ~
2
3
/bin/ls: recipe: No such file or directory
bin Desktop Documents output public_html test
4
5
geeko@da51:~> ls recipe && ls ~
/bin/ls: recipe: No such file or directory
6
geeko@da51:~>
Wyjaśnienie
. Plik recipe nie istnieje i polecenie ls recipe musi zakończyć się
błędem (wiersze 1-2). Z tej przyczyny polecenie ls ~ z wiersza pierwszego jest
wykonywane, a polecenie ls ~ w wierszu czwartym nie jest wykonywane.
2008 Novell Inc.
Licencja Creative Commons Attribution-NonCommercial-ShareAlike 2.5. Wolno kopiować, rozprowadzać, przedstawiać
i wykonywać utwór oraz opracowane na jego podstawie utwory zależne jedynie dla celów niekomercyjnych, przy zachowaniu autorstwa
Novell Inc.
Plik z chomika:
kuba.zysk
Inne pliki z tego folderu:
trwsk_1.pdf
(597 KB)
sk_c09.pdf
(756 KB)
3_Instalacja_karty.pdf
(284 KB)
tekst_suzie_4c.pdf
(1437 KB)
tekst_suzie_3c.pdf
(1768 KB)
Inne foldery tego chomika:
Alles Klar 2a
Android
Aplikacje
Dokumenty
Filmy
Zgłoś jeśli
naruszono regulamin