Provided by:
manpages-pl_20051117-1_all 
NAZWA
sh-utils - opis pakietu narzędzi powłokowych GNU
OD TŁUMACZA
Podręczniki man dla narzędzi powłokowych GNU nie są już rozwijane.
Niniejsza strona podręcznika powstała jako tłumaczenie, używanej przez
twórców jako podstawowej, dokumentacji formatu info. W pliku, który
czytasz umieszczono część dokumentacji dotyczącą wspólnych cech i opcji
programów oraz informacje, które z różnych przyczyn nie znalazły się na
stronach opisujących poszczególne polecenia pakietu. Szczegółowe opisy
samych poleceń znajdziesz we właściwych, osobnych stronach podręcznika.
WSTĘP
Niniejszy podręcznik opisuje zestaw narzędzi powłokowych GNU w wersji
2.0.
Podręcznik ten nie jest wyczerpujący. Zakłada się, że na ogół wiesz, co
zrobić, i potrzebujesz tylko przypomnienia jak to zrobić. Nie
usiłowano wyjaśnić podstawowych pojęć w sposób odpowiedni dla
nowicjuszy. Zatem, jeśli jesteś zainteresowany, włącz się, proszę, w
udoskonalanie podręcznika. Skorzysta na tym cała wspólnota GNU.
Niektóre z wymienionych programów przydatne są tylko przy pisaniu
skryptów powłoki. Narzędzia takie stanowią, de facto, "język" skryptów
powłoki (w dużym stopniu). Inne są czasami przydatne interaktywnie.
Narzędzia powłokowe GNU są w większości zgodne ze standardem POSIX.2.
Błędy proszę zgłaszać, w jęz.angielskim, do <bug-sh-utils@gnu.org>.
Pamiętaj, by zamieścić numer wersji, architekturę maszyny, pliki
wejściowe i inne informacje potrzebne do powielenia błędu: wprowadzane
znaki, czego się spodziewałeś, co otrzymałeś i dlaczego jest to źle.
Pliki diff są mile widziane, ale proszę dołączyć również opis problemu,
gdyż czasem ciężko jest wyciągnąć wnioski.
Podręcznik ten powstał pierwotnie na bazie uniksowych stron man
napisanych przez Davida MacKenzie i aktualizowanych przez Jima
Meyeringa. Autorytatywną dokumentacją jest obecnie dokumentacja w
formacie info; strony man nie są już rozwijane i aktualizowane.
Franc,ois Pinard wykonał wstępną konwersję do formatu Texinfo. Karl
Berry wykonał indeksy, trochę reorganizacji i edycji wyników. Richard
Stallman wniósł swój zwykły nieoceniony wgląd w całość procesu.
ZAWARTOŚĆ PAKIETU
Obecnie pakiet narzędzi powłokowych GNU zawiera kilkadziesiąt
programów:
Wypisywanie tekstu
Polecenia wyświetlające łańcuchy tekstowe
echo wypisuje wiersz tekstu
printf formatuje i wypisuje dane
yes wypisuje łańcuch aż do przerwania programu
Warunki
Polecenia przydatne przede wszystkim z uwagi na ich kod zakończenia,
nie zaś wyświetany wynik. Stąd, często używane są jako warunek
instrukcji `if' powłoki lub też jako ostatnie polecenie potoku.
false nic nie robi, zwraca niepowodzenie
true nic nie robi, zwraca powodzenie
test sprawdza typy plików, porównuje wartości
expr rozwija (interpretuje) wyrażenia
Przekierowanie
Powłoki Uniksów powszechnie zapewniają kilka postaci "przekierowania"
-- sposobów zmiany źródła wejścia lub celu wyjścia polecenia. Jednak
jedno przydatne przekierowanie wykonywane jest przez odrębne polecenie,
nie przez powłokę:
tee przekierowuje wyjście do wielu plików
Operacje na nazwach plików
Polecenia do manipulacji nazwami plików
basename obcina katalog i przyrostek z nazwy pliku
dirname obcina niekatalogowy przyrostek nazwy pliku
pathchk sprawdza przenośność nazwy pliku
Kontekst pracy
Polecenia wyświetlające lub zmieniające kontekst, w którym pracujesz:
bieżący katalog, ustawienia terminala i tak dalej. Zobacz także
polecenia związane z użytkownikiem, w następnej sekcji.
pwd wypisuje katalog roboczy
stty wypisuje lub zmienia charakterystyki terminala
printenv wypisuje zmienne środowiska
tty wypisuje nazwę pliku terminala
Informacja o użytkowniku
Polecenia wypisujące informacje związane z użytkownikiem: nazwy
zgłoszeniowe, grupy i tak dalej.
id wypisuje rzeczywisty i efektywny uid i gid
logname wypisuje bieżącą nazwę zgłoszeniową (loginname)
whoami wypisuje efektywny id użytkownika
groups nazwy grup, do których należy użytkownik
users nazwy aktualnie zalogowanych użytkowników
who wypisuje kto jest obecnie zalogowany
Kontekst systemowy
Polecenia wypisujące lub zmieniające informację ogólnosystemową.
date wypisuje lub ustawia datę i czas systemowy
uname wypisuje informację o systemie
hostname wypisuje lub ustawia nazwę systemu
hostid wypisuje numeryczny identyfikator systemu
Zmienione wywoływanie poleceń
Polecenia uruchamiające inne polecenia w kontekście różniącym się od
bieżącego: zmienionym środowisku, jako inny użytkownik itp.
chroot zmienia katalog główny (korzeń)
env zmienia zmienne środowiska
nice zmienia priorytet obsługi zadań
nohup uodpornia na sygnał zawieszenia wykonywania
su zmienia id użytkownika i grupy
Opóźnianie
sleep pauzuje przez zadany czas
Operacje numeryczne
Programy wykonujące operacje związane z liczbami.
factor pokazuje czynniki liczby
seq wypisuje ciągi liczb
OPCJE WSPÓLNE
Pewne opcje dostępne są we wszystkich opisywanych programach (naprawdę
powinien je przyjmować każdy z programów GNU). Odstępstwa od tej zasady
są jawnie opisane w dokumentacji danego polecenia. `--help' lub
`--version' traktowane są jako opcja tylko jeśli występują jako jedyny
argument wiersza poleceń.
--help Wyświetla informację o stosowaniu programu i listę wszystkich
dostępnych opcji, pomyślnie kończy pracę.
--version
Wyświetla numer wersji programu i pomyślnie kończy pracę.
FORMATY WPROWADZANIA DATY
Ta sekcja opisuje tekstowe postaci daty akceptowane przez programy GNU.
Są to łańcuchy znakowe, które możesz, jako użytkownik, podać jako
argumenty różnych programów. Nie jest tu opisany interfejs C (poprzez
funkcję getdate).
Mimo, że opisywana składnia daty umożliwia przedstawienie dowolnej daty
od roku zerowego naszej ery, to liczby całkowite komputera nie są
wystarczająco duże dla takich (względnie) długich okresów czasu.
Najwcześniejszą datą jaka jest dozwolona semantycznie w systemach
uniksowych jest północ 1 stycznia 1970 czasu uniwersalnego (UTC).
Ogólna składnia daty
"Data" jest łańcuchem znakowym (może być pusty) zawierającym wiele
elementów rozdzielonych białymi znakami. Biały znak może być pominięty
jeśli nie spowoduje to niejednoznaczności. Pusty łańcuch oznacza
początek dzisiejszego dnia (tj.północ). Kolejność elementów jest
nieistotna. Łańcuch daty może zawierać wiele różnych odmian elementów:
* datę kalendarzową
* czas dnia (godzinę)
* strefę czasową
* dzień tygodnia
* element względny
* czyste liczby
Opiszemy poniżej po kolei każdy z typów elementu daty.
W większości kontekstów kilka liczb może być zapisanych słownie.
Najbardziej przydaje się to do określania elementów dnia tygodnia lub
elementów względnych (patrz poniżej). Oto lista: `first' (pierwszy) dla
1, `next' (następny) dla 2, `third' (trzeci) dla 3, `fourth' (czwarty)
dla 4, `fifth' dla 5, `sixth' dla 6, `seventh' dla 7, `eighth' dla 8,
`ninth' dla 9, `tenth' dla 10, `eleventh' dla 11 i `twelfth' dla 12.
Również, `last' (ostatni) oznaczający dokładnie -1.
Kiedy w ten sposób zapisywany jest miesiąc, wciąż traktowany jest tak,
jakby został zapisany liczbowo, zamiast potraktowania w sposób "w pełni
zgodny z wymową"; zmienia to dozwolone łańcuchy.
Wielkość liter w datach jest całkowicie ignorowana. Pomiędzy nawiasami
okrągłymi można umieszczać komentarze, póki zawarte nawiasy są
poprawnie zagnieżdżone. Myślniki, po których nie występują cyfry są
obecnie ignorowane. Wiodące zera w liczbach są ignorowane.
Zapis daty kalendarzowej
"Zapis daty kalendarzowej" określa dzień roku. Podawany jest rozmaicie,
w zależności od tego, czy miesiąc określono liczbowo czy słownie.
Wszystkie te łańcuchy określają tę samą datę kalendarzową:
1970-09-17 # ISO 8601.
70-9-17 # załóż 19xx dla 69 do 99, 20xx dla 00 do 68.
70-09-17 # wiodące zera są ignorowane.
9/17/72 # powszechny zapis amerykański.
24 September 1972
24 Sept 72 # wrzesień (September) ma specjalny skrót.
24 Sep 72 # zawsze dozwolone trzyliterowe skróty.
Sep 24, 1972
24-sep-72
24sep72
Można też ominąć rok. W takim przypadku, używany jest ostatnio
określony rok, lub rok bieżący, jeśli nie określono żadnego. Na
przykład:
9/17
sep 17
A oto reguły...
Dla miesięcy podanych liczbowo dozwolony jest format liczbowy ISO 8601
postaci `ROK-MIESIĄC-DZIEŃ', gdzie ROK jest dowolną liczbą całkowitą,
MIESIĄC jest liczbą od 01 do 12, zaś DZIEŃ jest liczbą od 01 do 31.
Jeśli liczba jest mniejsza niż dziesięć to musi być zapisana z zerem
wiodącym. Jeżeli ROK jest wynosi 68 lub mniej, to dodawane jest do
niego 2000; w przeciwnym razie, jeśli ROK jest mniejszy od 100, to jest
do niego dodawane 1900. Akceptowana jest konstrukcja postaci
`MIESIĄC/DZIEŃ/ROK', popularna w Stanach Zjednoczonych. Również
`MIESIĄC/DZIEŃ', z pominięciem roku.
Miesiące słownie mogą być zapisane w pełnej formie: `January'
(styczeń), `February' (luty), `March' (marzec), `April' (kwiecień),
`May' (maj), `June' (czerwiec), `July' (lipiec), `August' (sierpień),
`September' (wrzesień), `October' (październik), `November' (listopad)
lub `December' (grudzień). Słowne określenia miesięcy mogą być skracane
do pierwszych trzech liter, z możliwym dodaniem kropki kończącej skrót.
Dozwolony jest również zapis `Sept' zamiast `September'.
Przy słownym zapisie miesięcy data kalendarzowa może być podana na
jeden z poniższych sposobów:
DZIEŃ MIESIĄC ROK
DZIEŃ MIESIĄC
MIESIĄC DZIEŃ ROK
DZIEŃ-MIESIĄC-ROK
Albo, pomijając rok:
MIESIĄC DZIEŃ
Zapis czasu (godziny)
"Zapis czasu" w łańcuchach daty określa czas (godzinę) zadanego dnia.
Oto kilka przykładów, oznaczających tę samą godzinę:
20:02:0
20:02
8:02pm
20:02-0500 # w strefie EST (Eastern US Standard Time)
Ogólniej, czas może zostać podany jako `GODZINA:MINUTA:SEKUNDA', gdzie
GODZINA jest liczbą od 0 do 23, MINUTA liczbą od 0 do 59, zaś SEKUNDA
liczbą od 0 do 59. Człon `:SEKUNDA' można pominąć, jest on wówczas
przyjmowany jako zero.
Jeśli po określeniu czasu występuje `am' lub `pm' (lub `a.m.' czy
`p.m.'), to GODZINA ograniczona jest do zakresu od 1 do 12 a `:MINUTA'
może być pominięta (przyjmowana za zero). `am' wskazuje na pierwszą
połowę dnia, `pm' na drugą połowę. W tej notacji, godzina 12 poprzedza
godzinę 1: północ jest zapisywana jako `12am', zaś południe jako
`12pm'.
Po zapisie czasu może również wystąpić określenie korekty z uwagi na
strefę czasową. Jest ono wyrażane jako `ZGGMM', gdzie Z jest znakiem
`+' lub `-', GG jest liczbą godzin różnicy dla strefy a MM liczbą
minut. Podanie w ten sposób strefy czasowej wymusza interpretację
podanego czasu względem czasu uniwersalnego (UTC - Coordinated
Universal Time), unieważniając wcześniejsze określenia strefy czasowej
czy lokalnej strefy czasowej. Część opisująca MINUTY w określeniu czasu
nie może być pomijana, jeśli używana jest korekta z uwagi na strefę
czasową. Jest to jedyny sposób określania korekty strefy czasowej o
ułamkowe części godziny.
Można podać korektę `am'/`pm' albo korektę z uwagi na strefę czasową,
ale nie obie jednocześnie.
Strefa czasowa
Element typu "strefa czasowa" określa międzynarodową strefę czasową,
wskazywaną przez niewielki zestaw liter. Są one obsługiwane w celu
zachowania wstecznej zgodności. Ich używanie nie jest jednakże
zalecane, gdyż praktycznie są one dwuznaczne: na przykład, skrót `EST'
posiada inne znaczenie w Australii, a inne w Stanach Zjednoczonych.
Zawarte w nim kropki są ignorowane. Wojskowe miana stref czasowych
używają pojedynczych liter. Obecnie jako pozycje typu strefa czasowa
mogą być przedstawiane wyłącznie strefy o przesunięciu o całkowitą
liczbę godzin. W poprzedniej sekcji znajdziesz opis precyzyjniejszego
sterowania korektą z uwagi na strefę czasową.
Poniżej podano wiele stref czasowych (z wyłączeniem stref "czasów
letnich"), uporządkowanych według przesunięcia w czasie (parametr
GODZINA strefy).
-1200 `Y' wojskowo.
-1100 `X' wojskowo.
-1000 `W' wojskowo.
-0900 `V' wojskowo.
-0800 `PST' dla amerykańskiej strefy Pacific Standard, zaś `U'
wojskowo.
-0700 `MST' dla amerykańskiej strefy Mountain Standard, zaś `T'
wojskowo.
-0600 `CST' dla amerykańskiej strefy Central Standard, zaś `S'
wojskowo.
-0500 `EST' dla amerykańskiej strefy Eastern Standard, zaś `R'
wojskowo.
-0400 `AST' dla amerykańskiej strefy Atlantic Standard, zaś `Q'
wojskowo.
-0300 `P' wojskowo.
-0200 `O' wojskowo.
-0100 `N' wojskowo.
+0000 `GMT' dla średniego czasu Greenwich (Greenwich Mean), `UT' dla
czasu uniwersalnego, `UTC' dla Coordinated Universal, `WET' dla
czasu zachodnioeuropejskiego (Western European), zaś `Z' dla ISO
8601 i zapisu wojskowego.
+0100 `A' wojskowo, `CET' dla czasu środkowoeuropejskiego (Central
European), `MET' dla Midden Europesche Tijd (holenderski), and
`MEZ' dla Mittel-Europa"ische Zeit (Niemcy).
+0200 `B' wojskowo, zaś `EET' dla wschodnioeuropejskiego (Eastern
European).
+0300 `C' wojskowo.
+0400 `D' wojskowo.
+0500 `E' wojskowo.
+0600 `F' wojskowo.
+0700 `G' wojskowo.
+0800 `H' wojskowo.
+0900 `I' wojskowo, zaś `JST' dla strefy japońskiej (Japan Standard).
+1000 `GST' dla amerykańskiej strefy Guam (Guam Standard), zaś `K'
wojskowo.
+1100 `L' wojskowo.
+1200 `M' wojskowo, zaś `NZST' dla strefy nowozelandzkiej (New Zealand
Standard).
Istnieje wiele stref czasowych wynikających z oszczędzania światła
dziennego ("czas letni", strefy DST - daylight-saving time). Również
umieszczając po określeniu strefy zwykłej łańcuch `DTS' jako odrębne
słowo (tj. oddzielone białymi znakami), można podać odpowiednią strefę
czasową oszczędzania energii.
-0700 `PDT' dla amerykańskiej strefy Pacific Daylight.
-0600 `MDT' dla amerykańskiej strefy dla Mountain Daylight.
-0500 `CDT' dla amerykańskiej strefy Central Daylight.
-0400 `EDT' dla amerykańskiej strefy Eastern Daylight.
-0300 `ADT' dla amerykańskiej strefy Atlantic Daylight.
+0100 `BST' dla brytyjskiego czasu letniego (British Summer) oraz
`WEST' dla zachodnioeuropejskiego czasu letniego (Western
European Summer).
+0200 `CEST' dla środkowoeuropejskiego czasu letniego (Central
European Summer), `MEST' dla Midden Europesche S. Tijd
(holenderski) oraz `MESZ' dla Mittel-Europa"ische Sommerzeit
(Niemcy).
+1300 `NZDT' dla nowozelandzkiego czasu New Zealand Daylight.
Dzień tygodnia
Bezpośrednie powołanie się na dzień tygodnia będzie występować po dacie
(tylko jeśli to konieczne) w celu określenia takiego dnia tygodnia w
przyszłości.
Dni tygodnia mogą być pisane w postaci pełnej: `Sunday' (niedziela),
`Monday' (poniedziałek), `Tuesday' (wtorek), `Wednesday' (środa),
`Thursday' (czwartek), `Friday' (piątek) lub `Saturday' (sobota).
Można je skracać do pierwszych trzech liter, opcjonalnie zakończonych
kropką. Dozwolone są także specjalne skróty `Tues' dla wtorku
(Tuesday), `Wednes' dla środy (Wednesday) oraz `Thur' lub `Thurs' dla
czwartku (Thursday).
Dzień tygodnia może być poprzedzony liczbą, by wyrazić przesunięcie w
czasie o daną liczbę tygodni. Najlepiej używany jest w wyrażeniach
takich jak `third monday' (trzeci poniedziałek). W tym kontekście
dopuszczalne są również `last DZIEŃ' lub `next DZIEŃ'; przesuwają one o
tydzień wstecz lub w przód w stosunku do dnia reprezentowanego przez
DZIEŃ.
Przecinek następujący po określeniu dnia tygodnia jest jest ignorowany.
Elementy względne w łańcuchach dat
"Elementy względne" wskazują na datę przesunięta względem danej (lub
daty bieżącej, jeśli nie podano innej) w przód i wstecz. Efekty
elementów względnych sumują się. Oto kilka przykładów:
1 year # 1 rok
1 year ago # 1 roku temu
3 years # 3 lata
2 days # 2 dni
Jednostkę przemieszczenia w czasie można wybrać przy pomocy łańcucha
year lub month dla przesunięcia odpowiednio o całe lata lub miesiące.
Są to jednostki dość rozmyte, gdyż lata i miesiące nie mają jednakowej
długości. Precyzyjniejszymi jednostkami są fortnight, czyli okres 14
dni, week (tydzień) mający 7 dni, day (dzień) mający 24 godziny, hour
(godzina) o 60 minutach, minute (minuta) lub min o 60 sekundach i
second (sekunda) lub sec o długości jednej sekundy. Przyrostek s,
oznaczający w języku angielskim liczbę mnogą, dołączony do tych
jednostek jest akceptowany i ignorowany.
Jednostka czasu może zostać poprzedzona mnożnikiem, podanym jako liczba
(może być ze znakiem). Liczby bez znaku traktowane są jako liczby
dodatnie ze znakiem. Brak liczby oznacza mnożnik 1. Następujące po
elemencie względnym słowo ago (..temu) jest równoważne poprzedzeniu
jednostki dodatkowym mnożnikiem o wartości -1.
Łańcuch znaków tommorow (jutro) ma wartość jednego dnia w przyszłości
(równoważne day), łańcuch yesterday (wczoraj) ma wartość jednego dnia w
przeszłości (równoważny day ago, dzień temu).
Łańcuchy now (teraz) lub today (dziś) są jednostkami względnymi
odpowiadającymi zerowemu przesunięciu w czasie; biorą się one z tego,
że przesunięcie w czasie o wartości zerowej reprezentuje bieżący czas,
jeśli nie zostanie to zmienione przez poprzedzające elementy. Łańcuchów
określających bieżący czas można użyć do uwydatnienia innych elementów,
jak w `12:00 today' (12:00 dziś). Łańcuch this (ten) ma również
znaczenie przesunięcia w czasie o zerowej wartości, ale używany jest
raczej w łańcuchach daty jak `this thursday' (ten czwartek).
Gdy element względny powoduje, że data wynikowa przekracza granicę
między DST (np.czasem letnim, zobacz podsekcja `Strefa czasowa') a
czasem zwykłym (nie-DST), lub odwrotnie, godzina jest korygowana
stosownie do czasu lokalnego.
Czyste liczby w łańcuchach daty
Dokładna interpretacja czystej liczby dziesiętnej zależy od kontekstu w
łańcuchu znakowym określającym datę.
Jeżeli liczba dziesiętna ma postać RRRRMMDD i nie pojawia się przez nią
żaden inny element daty kalendarzowej (patrz `Zapis daty
kalendarzowej'), to RRRR odczytywane jest jako rok, MM jako numer
miesiąca a DD jako dzień miesiąca opisywanej daty.
Jeżeli liczba dziesiętna ma postać GGMM i w łańcuchu daty nie pojawia
się przed nią żaden inny element określający czas, to GG jest
odczytywane jako godzina a MM jako minuty godziny opisywanego czasu
dnia. MM może być też pominięte.
Jeśli po lewej stronie liczby pojawia się zarówno data kalendarzowa jak
i czas, ale nie ma elementu względnego, to liczba unieważnia wcześniej
określony rok.
Autorzy `getdate'
`getdate' zostało pierwotnie zaimplementowane przez Stevena M. Bellovin
(<smb@research.att.com>) podczas pobytu w Chapel Hillwhile na
University of North Carolina. Kod został później nieco zmodyfikowany
przez kilku ludzi na Usenecie, a następnie gruntownie zmieniony przez
Richa $alz (<rsalz@bbn.com>) i Jima Berets (<jberets@bbn.com>) w
sierpniu 1990. Rozmaite wersje dla systemu GNU zrobił David MacKenzie,
Jim Meyering i inni.
Rozdział ten został pierwotnie utworzony przez Franc,oisa Pinard
(<pinard@iro.umontreal.ca>) z kodu źródłowego `getdate.y', a następnie
poprawiony przez K. Berry (<kb@cs.umb.edu>).
ZOBACZ TAKŻE
echo(1) wypisuje wiersz tekstu
printf(1) formatuje i wypisuje dane
yes(1) wypisuje łańcuch aż do przerwania programu
false(1) nic nie robi, zwraca niepowodzenie
true(1) nic nie robi, zwraca powodzenie
test(1) sprawdza typy plików, porównuje wartości
expr(1) rozwija (interpretuje) wyrażenia
tee(1) przekierowuje wyjście do wielu plików
basename(1) obcina katalog i przyrostek z nazwy pliku
dirname(1) obcina niekatalogowy przyrostek nazwy pliku
pathchk(1) sprawdza przenośność nazwy pliku
pwd(1) wypisuje katalog roboczy
stty(1) wypisuje lub zmienia charakterystyki terminala
printenv(1) wypisuje zmienne środowiska
tty(1) wypisuje nazwę pliku terminala
id(1) wypisuje rzeczywisty i efektywny uid i gid
logname(1) wypisuje bieżącą nazwę zgłoszeniową
whoami(1) wypisuje efektywny id użytkownika
groups(1) nazwy grup, do których należy użytkownik
users(1) nazwy aktualnie zalogowanych użytkowników
who(1) wypisuje, kto jest obecnie zalogowany
date(1) wypisuje lub ustawia datę i czas systemowy
uname(1) wypisuje informację o systemie
hostname(1) wypisuje lub ustawia nazwę systemu
hostid(1) wypisuje numeryczny identyfikator systemu
chroot(1) zmienia katalog główny
env(1) zmienia zmienne środowiska
nice(1) zmienia priorytet obsługi zadań
nohup(1) uodpornia na sygnał zawieszenia wykonywania
su(1) zmienia id użytkownika i grupy
sleep(1) pauzuje przez zadany czas
factor(1) pokazuje czynniki liczby
seq(1) wypisuje ciągi liczb