Treść książki

Przejdź do opcji czytnikaPrzejdź do nawigacjiPrzejdź do informacjiPrzejdź do stopki
ROZDZIAŁ1.KONSOLAIINTERPRETERPOLECEŃ
Ponieważkażdydeskryptormaswójwłasny,niezależnykursorzapisu(patrzrów-
nieżczęśćIVksiążki),którynajpierwjestustawionynapoczątekpliku,toprzykaż-
dejoperacjizapisumogązostaćnadpisanedane,którezostałyzapisane,korzystając
zdrugiegodeskryptora.Możnatoprzetestować,używającpomocniczegoskryptu
(Python2.7):
importsys
sys.stdout.write("aaaaaa")
sys.stdout.flush()
sys.stderr.write("AAA")
Zaprezentowanyprogram(wkontekścieomawianegoprzekierowania)zapisuje
doplikuciąg"aaaaaa",korzystajączdeskryptorastdoutjegokursorzapisujest
zatemprzesuniętyo6bajtówdoprzodu,dziękiczemunastępnyzapiskorzystający
ztegodeskryptorawyemitujedanezajużistniejącymi.Dwieliniedalejzapisanieciągu
"AAA"używainnegodeskryptora,wskazującegonatensamplikstderr.Kursorza-
pisutegodeskryptoracałyczaswskazujenapoczątekpliku,awięctamwłaśnietrafią
dane.Wefekciepowinniśmyotrzymaćciąg"AAAaaa",comożemysprawdzić,uru-
chamiającskryptzprzekierowaniami:
$pythontest.py>xyz2>xyz
$catxyz
AAAaaa
Podsumowując,opisanametodaprzekierowanianiepozwalanaskuteczne
zapisaniewszystkichdanychwypisywanychnastdoutistderr.
1.3.Przykładowepoleceniawykorzystująceprzekierowania
Poniżejzaprezentowałemkilkatypowychprzykładówwykorzystaniaprzekierowańwraz
zichwyjaśnieniem:
(Ubuntu)program|less
(Windows)program|more
Wyświetldanezestandardowegowyjściaprogramupojednejstronieekranowejnaraz.
(Ubuntu)psaux|grep"python"
(Windows)tasklist|find"python"
Przefiltrujstandardowewyjściepoleceńpsauxitasklistwposzukiwaniusłowa
hpython”.WpraktycewypisanezostanąprzedewszystkiminformacjeoprocesachPythona.
(Ubuntu)strace-etrace=fileprogram2>&1|greppasswd
Przefiltrujlogigenerowaneprzezstracewposzukiwaniusłowahpasswd”.Wpraktyce
wypisanezostanąprzedewszystkimbezpośrednieinterakcjeprocesuzplikiempasswd.
32