NAZWA
fileutils - opis pakietu narzędzi plikowych GNU
OD TŁUMACZA
Podręczniki man dla narzędzi plikowych 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.
Dokumentacja niniejsza nie jest już utrzymywana i może być niedokładna lub niekompletna. Autorytatywnym źródłem jest obecnie dokumentacja Texinfo. Dostęp do niej uzyskasz wpisując w wierszu poleceń:
pinfo fileutils
lub
info fileutils.
WSTĘP
Niniejszy podręcznik opisuje zestaw narzędzi plikowych GNU w wersji 4.01.
Podręcznik ten nie jest wyczerpujący: nie usiłowano wyjaśnić podstawowych pojęć dotyczących plików w sposób odpowiedni dla nowicjuszy. Zatem, jeśli jesteś zainteresowany, włącz się, proszę, w udoskonalanie go. Skorzysta na tym cała wspólnota GNU.
Narzędzia plikowe GNU są w większości zgodne ze standardem POSIX.2.
Błędy proszę zgłaszać, w jęz.angielskim, do <bug-fileutils [AT] 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 plikowych GNU zawiera kilkanaście programów:
Listowanie zawartości katalogów
ls lista zawartości
katalogu
dir ls krótko
vdir rozgadane ls
dircolors ustawienie kolorów dla ls, itd.
Podstawowe operacje
cp kopiuje pliki
dd konwertuje i kopiuje plik
install kopiuje pliki i ustawia atrybuty
mv przesuwa pliki/zmienia nazwy
rm usuwa pliki lub katalogi
shred bezpieczniejsze usuwanie plików
Specjalne
typy plików
Niżej wymienione polecenia tworzą pliki
specjalnych typów. (W szczególności
’rmdir’ usuwa katalogi, będące jednym
ze specjalnych typów plików.)
Mimo, że uniksopodobne systemy operacyjne mają znacznie mniej specjalnych typów plików niż inne, nie wszystko może być traktowane wyłącznie jako niezróżnicowany strumień bajtów "zwykłych plików". Na przykład, podczas tworzenia lub usuwania pliku, system musi odnotować tę informację, co czyni w "katalogu" -- specjalnym rodzaju pliku. Można czytać katalogi tak jak zwykłe pliki, jeśli ktoś jest ciekaw, jednak system do wykonania swojej roboty musi narzucić strukturę, pewne uporządkowanie bajtów takiego pliku. Dlatego jest to "specjalny" typ pliku.
Oprócz katalogów, inne typy plików specjalnych obejmują potoki nazwane (FIFO), dowiązania symboliczne, gniazda i tak zwane "pliki specjalne".
ln tworzy dowiązania
(links) między plikami
mkdir tworzy katalogi
mkfifo tworzy FIFO (potoki nazwane)
mknod tworzy blokowe lub znakowe pliki specjalne
rmdir usuwa puste katalogi
Zmiana
atrybutów pliku
Plik to nie tylko jego zawartość, nazwa i typ
pliku (zobacz ’Specjalne typy plików’).
Plik ma także właściciela (id
użytkownika), grupę (id grupy), prawa (co
może zrobić z plikiem jego właściciel,
co mogą członkowie grupy a co wszyscy inni),
różne znaczniki czasu (timestamps) i inne dane.
Zbiorczo, nazywamy je "atrybutami" pliku.
Poniższe polecenia zmieniają atrybuty pliku.
chown zmienia
właściciela i grupę pliku
chgrp zmienia grupę pliku
chmod zmienia prawa dostępu do pliku
touch zmienia znaczniki czasu pliku
Zajętość
dysku
Żaden dysk nie pomieści nieskończonej
ilości danych. Poniższe polecenia podają, jak
bardzo zajęte lub dostępne jest miejsce na
dyskach. (Nie ma to nic wspólnego z tym, ile
pamięci głównej, tj. RAM, używa
dany program podczas pracy; w tym celu potrzebujemy
’ps’, ’pstat’ lub ’swap’
albo jakiegoś podobnego polecenia.)
df raport zajętości
dysku dla systemów plików
du szacunkowe zużycie miejsca przez plik
sync synchronizuje pamięć i dysk
OPCJE WSPÓLNE
Pewne opcje dostępne są we wszystkich opisywanych programach (naprawdę powinien je przyjmować każdy z programów GNU).
--help |
Wyświetla informację o stosowaniu programu i listę wszystkich dostępnych opcji, pomyślnie kończy działanie. |
--version
Wyświetla numer wersji programu i pomyślnie kończy działanie.
Zobacz też w niektórych programach:
Opcje kopii zapasowych:
−b −S −V
Rozmiar bloku: BLOCK_SIZE i −−block−size
Katalog docelowy: −−target−directory
OPCJE KOPII ZAPASOWYCH
Niektóre
z programów GNU (co najmniej ’cp’,
’install’, ’ln’ i ’mv’)
opcjonalnie tworzą kopie zapasowe plików przed
zapisaniem ich nowych wersji. Opcje te sterują
szczegółami robienia kopii. Są one
także krótko wzmiankowane w opisach konkretnych
programów.
-b metoda
--backup[=metoda]
Tworzy kopię zapasową każdego pliku, który inaczej byłby nadpisany lub usunięty. Bez użycia tej opcji wersje pierwotne są niszczone. Posługuje się zadaną metodą do określenia typu kopii zapasowych, jakie mają być wykonywane. Gdy opcja ta jest używana bez określenia metody, do używana jest wartość zmiennej środowiskowej VERSION_CONTROL. A jeśli ta zmienna nie jest ustawiona, to domyślnym typem kopii zapasowej jest ’existing’.
Opcja ta
odpowiada zmiennej ’version-control’ Emacsa:
używane są te same wartości dla metody
tworzenia kopii. Opcje te rozpoznają także
bardziej opisowe synonimy. Prawidłowe wartości to
(unikalne skróty są dopuszczalne):
none, off
Nigdy nie tworzy kopii zapasowych.
t, numbered
Zawsze tworzy numerowane kopie zapasowe.
nil, existing
Tworzy numerowane kopie zapasowe plików, które już je mają, zwykłe kopie dla reszty.
never, simple
Robi zawsze zwykłe kopie zapasowe. Zauważ, proszę, że ’never’ nie powinno być mylone z ’none’.
−S
przyr_kopii
−−suffix przyr_kopii
Dodaje przyrostek przyr_kopii do nazwy każdego pliku kopii zapasowej wykonanego za pomocą −b. Jeśli opcja ta nie zostanie podana, to użyta zostanie wartość zmiennej środowiskowej SIMPLE_BACKUP_SUFFIX. Jeśli ona również nie jest określona, to użyty zostanie domyślny znak ’~’, jak w Emacsie.
--version-control=metoda
Opcja ta jest przestarzała i w przyszłych wydaniach zostanie usunięta. Została zastąpiona przez --backup.
ROZMIAR BLOKU
Niektóre z programów GNU (co najmniej ’df’, ’du’ i ’ls’) wyświetlają wielkości plików w "blokach". Możesz dopasować rozmiar bloku by uczytelnić rozmiary plików. Rozmiar bloku do wyświetlania jest niezależny od rozmiaru bloku jakiegokolwiek systemu plików.
Normalnie wyświetlane zajętości dysku zaokrąglane są w górę, ilość wolnego miejsca w dół, a inne rozmiary do najbliższego bloku, z połówkami zaokrąglanymi do liczb parzystych.
Domyślny
rozmiar bloku wybierany jest przez sprawdzenie kolejno
poniższych zmiennych środowiska; pierwsza,
która jest ustawiona określa rozmiar bloku.
DF_BLOCK_SIZE
Określa domyślny rozmiar bloku dla polecenia ’df’. Podobnie, DU_BLOCK_SIZE określa wielkość domyślną dla ’du’, zaś LS_BLOCK_SIZE’ dla ’ls’.
BLOCK_SIZE
Określa domyślny rozmiar bloku dla wszystkich trzech poleceń, jeśli nie są ustawione wymienione wyżej zmienne specyficzne dla poszczególnych poleceń.
POSIXLY_CORRECT
Jeżeli nie jest ustawiona ani zmienna polecenie_BLOCK_SIZE ani też BLOCK_SIZE, ale ta zmienna jest ustawiona, to domyślną wartością bloku jest 512.
Jeśli nie jest ustawiona żadna z powyższych zmiennych środowiskowych, to obecnie domyślny rozmiar bloku wynosi 1024 bajty, lecz liczba ta może w przyszłości się zmienić.
Rozmiaru bloku może opisywać dodatnia liczba całkowita, określająca liczbę bajtów bloku, bądź jeden z napisów human-readable lub si, wybierający format w postaci czytelnej dla człowieka.
W przypadku formatów czytelnych dla człowieka wyświetlane rozmiary kończone są literą przyrostka potęgi, jak ’M’ dla megabajtów. BLOCK_SIZE=human-readable posługuje się potęgami 1024; ’M’ oznacza 1,048,576 bajtów. BLOCK_SIZE=si jest podobne, ale używa potęg 1000; ’M’ oznacza tu 1,000,000 bajtów. (SI, Międzynarodowy System Jednostek, definiuje wymienione przyrostki kolejnych potęg liczby 1000.)
Całkowity rozmiar bloku może być zakończony literą określającą wielokrotność tego rozmiaru. Przy użyciu tej notacji, litery rozmiarów normalnie oznaczają potęgi 1024, i może po nich wystąpić opcjonalna litera ’B’ dla oznaczenia "bajtów"; ale jeżeli po literze rozmiaru występuje ’D’ ("bajty dziesiętnie"), oznacza to potęgi 1000. Na przykład, ’BLOCK_SIZE=4MB’ jest równoważne ’BLOCK_SIZE=4194304’, a ’BLOCK_SIZE=4MD’ jest równoważne ’BLOCK_SIZE=4000000’.
Zdefiniowane są poniższe litery. Bardzo wielkie rozmiary, jak ’1Y’ mogą być odrzucone przez twój komputer z powodu ograniczeń jego arytmetyki.
k |
kilo: 2^10 = 1024 dla ’human-readable’ lub 10^3 = 1000 dla ’si’. | ||
M |
Mega: 2^20 = 1,048,576 lub 10^6 = 1,000,000. | ||
G |
Giga: 2^30 = 1,073,741,824 lub 10^9 = 1,000,000,000. | ||
T |
Tera: 2^40 = 1,099,511,627,776 lub 10^12 = 1,000,000,000,000. | ||
P |
Peta: 2^50 = 1,125,899,906,842,624 lub 10^15 = 1,000,000,000,000,000. | ||
E |
Exa: 2^60 = 1,152,921,504,606,846,976 lub 10^18 = 1,000,000,000,000,000,000. | ||
Z |
Zetta: 2^70 = 1,180,591,620,717,411,303,424 lub 10^21 = 1,000,000,000,000,000,000,000. | ||
Y |
Yotta: 2^80 = 1,208,925,819,614,629,174,706,176 lub 10^24 = 1,000,000,000,000,000,000,000,000. |
Domyślne rozmiary bloków mogą być unieważniane przez jawne użycie opcji --block-size=rozmiar. Opcja -k lub -kilobytes jest równoważna --block-size=1k, co jest ustawieniem domyślnym, chyba że ustawiono zmienną środowiskową POSIXLY_CORRECT. Opcja -h lub --human-readable jest równoważna --block-size=human-readable. Opcja -H lub -si jest równoważna --block-size=si.
KATALOG DOCELOWY
Niektóre
programy GNU (co najmniej ’cp’,
’install’, ’ln’ i ’mv’)
pozwalają na określenie katalogu docelowego przez
tę opcję:
--target-directory=KATALOG
Określa KATALOG docelowy.
Interfejs większości programów przewiduje, że po przetworzeniu opcji i skończonej liczby (może być to zero) argumentów stałopozycyjnych, pozostała lista argumentów powinna być albo pusta albo być listą pozycji (zwykle plików), które będą identycznie traktowane. Program xargs(1) zaprojektowano do pracy z taką konwencją.
Polecenia z rodziny mv są niezwyczajne przez to, że pobierają zmienną liczbę argumentów, specjalnie traktując ostatni z nich (czyli katalog docelowy). Powoduje to, że wykonanie niektórych operacji nie jest banalne, np., "przesuń wszystkie pliki stąd do ../d/", gdyż ’mv * ../d/’ może wyczerpać przestrzeń argumentów [będzie ich zbyt wiele na możliwość rozwinięcia znaku ’*’ przez powłokę]. Z kolei ’ls | xargs ...’ nie daje czystego sposobu na określenie dodatkowego, końcowego argumentu dla każdego wywołania odpowiedniego polecenia. (Da się to zrobić przez polecenie powłoki, ale wymaga to więcej ludzkiej pracy i wysiłku umysłowego niż powinno.)
Opcja --target-directory pozwala programom cp, install, ln i mv na wygodne użytkowanie z xargs. Na przykład, można przesunąć pliki z bieżącego katalogu do równoległego katalogu ’d’ w ten sposób (jednak, nie przesuwa to plików o nazwach rozpoczynających się ’.’)
ls | xargs mv −−target−directory=../d
Korzystając z programu find w wersji GNU, można przesunąć wszystkie pliki takim poleceniem:
find .
−mindepth 1 −maxdepth 1 \
| xargs mv −−target−directory=../d
Zawiedzie ono jednak, jeżeli w bieżącym katalogu nie ma żadnych plików lub któryś z plików ma nazwę zawierającą znak nowej linii. Poniższy przykład usuwa te ograniczenia i wymaga równocześnie GNU find i GNU xargs:
find .
−mindepth 1 −maxdepth 1 −print0 \
| xargs −−null
−−no−run−if−empty \
mv −−target−directory=../d
PRAWA PLIKU
Każdy z plików posiada zestaw "praw dostępu" kontrolujących rodzaje dostępu, jakie mają do niego użytkownicy. Prawa dla pliku są również nazywane jego "trybem dostępu". Mogą być przedstawiane w formie symbolicznej lub jako liczba ósemkowa.
Struktura
praw pliku
Istnieją trzy rodzaje praw, jakie w stosunku do pliku
może posiadać użytkownik:
1. |
prawo do odczytu pliku. Dla katalogów oznacza ono prawo do przeglądania (listowania) zawartości danego katalogu. | ||
2. |
prawo do zapisu (zmiany) pliku. Dla katalogów oznacza ono prawo do tworzenia i usuwania plików w danym katalogu. | ||
3. |
prawo do wykonywania pliku (uruchomienia go jako programu). Dla katalogów oznacza ono prawo dostępu do plików w danym katalogu. |
Istnieją trzy kategorie użytkowników, którzy mogą mieć różne prawa do wykonywania dowolnej z powyższych czynności dla pliku:
1. właściciel pliku
2. inni użytkownicy należący do grupy pliku
3. wszyscy inni użytkownicy systemu
Właściciel i grupa przypisywane są plikom podczas ich tworzenia. Zwykle właścicielem jest bieżący użytkownik, a grupą jest grupa katalogu, w którym znajduje się plik, ale może być różnie w zależności od systemu operacyjnego, systemu plików, w którym jest tworzony plik i sposobu jego tworzenia. Możesz zmienić właściciela i grupę pliku przy pomocy poleceń chown i chgrp.
Oprócz wymienionych powyżej trzech zestawów trzech uprawnień prawa pliku zawierają trzy specjalne składniki, działające jedynie w odniesieniu do plików wykonywalnych (programów) oraz, na niektórych systemach, katalogów:
1. |
podczas wykonywania ustaw efektywny identyfikator użytkownika procesu na identyfikator właściciela pliku (zwany bitem "setuid", od "set user id"). Nie działa na katalogach. | ||
2. |
podczas wykonywania ustaw efektywny identyfikator grupy procesu na identyfikator grupy pliku (zwany bitem "setgid", od "set group id"). Na niektórych systemach, zastosowany do katalogu ustawia dla plików w nim tworzonych grupę danego katalogu, bez względu na grupę użytkownika, który je tworzy. | ||
3. |
zachowaj tekst programu na urządzeniu buforującym (swap), tak by ładował się szybciej przy uruchomieniu (zwany "sticky bit", "bitem lepkim" lub "bitem ochrony"). Na niektórych systemach, zastosowany do katalogu zabrania użytkownikom usuwania w nim innych plików poza własnymi; nazywane jest to ustawianiem katalogu "tylko-do-dodawania" ("append-only"). |
Tryby
symboliczne
"Tryby symboliczne" pokazują zmiany praw do
plików jako operacje na jednoznakowych symbolach.
Pozwalają na zmianę wszystkich lub wybranych
części praw plików, opcjonalnie w oparciu o
ich uprzednie wartości i być może
również o aktualne ustawienie umask
(zobacz Umask i ochrona). Formatem trybów
symbolicznych jest:
[ugoa...][[+-=][rwxXstugo...]...][,...]
Poniższe sekcje opisują operatory i inne szczegóły dotyczące trybów symbolicznych.
Ustawianie
praw dostępu
Podstawowymi operacjami symbolicznymi na prawach pliku
są dodawanie, usuwanie i ustawianie prawa, jakie
mają pewni użytkownicy do czytania, zapisu i
wykonywania pliku. Operacje te mają
następujący format:
użytkownicy operacja prawa
Spacje pomiędzy powyższymi trzema częściami pokazano wyłącznie dla czytelności; tryby symboliczne nie mogą zawierać spacji.
Część użytkownicy mówi, jakim użytkownikom zmieniany jest dostęp do pliku. Składa się z jednej lub więcej liter (może też być pusta; zobacz ’Umask i ochrona’, gdzie znajdziesz opis, co wówczas się dzieje). Kiedy podano więcej niż jedną z tych liter, ich kolejność nie ma znaczenia.
u |
(user) użytkownik, który jest właścicielem pliku | ||
g |
(group) inni użytkownicy należący do grupy pliku | ||
o |
(other) inni użytkownicy systemu; | ||
a |
(all) wszyscy użytkownicy; to samo co ugo. |
Część operacja mówi, jak zmienić zadanym użytkownikom prawa dostępu do pliku, i jest jednym z następujących symboli:
+ |
dodaje prawa do dowolnych praw pliku, jakie mają już użytkownicy. Następuje uzupełnienie już posiadanych praw o podane. | ||
- |
usuwa prawa spośród dowolnych praw pliku, jakie mają już użytkownicy. | ||
= |
ustawia podane prawa jako jedyne prawa pliku, jakie powinni mieć do niego użytkownicy. Usuwa ewentualne uprzednie prawa. |
Część prawa mówi, jaki rodzaj dostępu do pliku powinien zostać zmieniony; jest to zero lub więcej poniższych liter. tak jak w przypadku części użytkownicy, kolejność liter, jeśli jest więcej niż jedna, nie ma znaczenia. Pominięcie części prawa przydatne jest tylko z operacją ’=’, gdzie nie daje ona użytkownikom żadnego dostępu do pliku.
r |
prawo do odczytu (read) pliku |
|||
w |
prawo do zapisu (write) pliku |
|||
x |
prawo do wykonywania (execution) pliku |
Na
przykład, aby odebrać każdemu prawo do
odczytu i zapisu pliku, ale nie do jego wykonywania,
posłuż się:
a=rw
Usunięcie prawa zapisu dla wszystkich
użytkowników innych niż
właściciel pliku można zrealizować
przez:
go-w
Powyższe polecenie nie zmieni dostępu, jaki ma do
pliku jego właściciel, nie nie ma też
wpływu na to, czy inni użytkownicy mogą
czytać bądź wykonywać plik.
Chcąc nie
dać nikomu poza właścicielem pliku
żadnych praw do niego, możesz
posłużyć się podanym poniżej
trybem. Inni użytkownicy mogą nadal
usunąć plik, jeżeli mają prawo zapisu w
katalogu, w którym się on znajduje.
go=
Innym sposobem określenia tego samego jest:
og-rxw
Kopiowanie
istniejących praw
Możesz ustalić prawa pliku w oparciu o jego prawa
już istniejące. By to zrobić wystarczy
zamiast używania ’r’, ’w’ czy
’x’ po operatorze użyć liter
’u’, ’g’ lub ’o’. Na
przykład tryb
o+g
dodaje prawa dla użytkowników, którzy
należą do grupy pliku do praw, jakie
posiadają inni użytkownicy pliku. Zatem,
jeśli plik początkowo miał tryb 644
(’rw-rw-r--’), to powyższe dopisanie zmieni
mu tryb na 666 (’rw-rw-rw-’). Jeżeli tryb
początkowo miał tryb 741
(’rwxr----x’), to nastąpi zmiana na tryb
745 (’rwxr--r-x’). Operacje ’-’ i
’=’ działają analogicznie.
Zmiana praw
specjalnych
Oprócz zmiany praw odczytu, zapisu i wykonywania
pliku, możesz zmienić także jego prawa
specjalne. W podsekcji ’Struktura praw pliku’
znajdziesz ich krótki opis.
W celu zmiany prawa pliku ustawiającego identyfikator użytkownika przy wykonaniu posłuż się literą u w części użytkownicy trybu symbolicznego oraz s w części prawa.
W celu zmiany prawa pliku ustawiającego identyfikator grupy przy wykonaniu posłuż się literą g w części użytkownicy trybu symbolicznego oraz s w części prawa.
W celu zmiany prawa pliku decydującego o pozostawieniu tekstu programu na urządzeniu wymiany (swap), posłuż się literą o w części użytkownicy trybu symbolicznego oraz t w części prawa.
Na
przykład, chcąc dodać prawo ustawiania ID
użytkownika dla programu, możesz użyć
trybu
u+s
Usunąć mu zarówno prawo ustawiania ID
użytkownika jak i grupy, możesz trybem:
ug-s
Użycie trybu
o+t
spowoduje z kolei zachowanie programu na urządzeniu
wymiany.
Pamiętaj,
że prawa specjalne działają tylko w
odniesieniu do plików wykonywalnych, plus, na
niektórych systemach, katalogach (w tym przypadku
mają inne znaczenie; patrz ’Struktura praw
pliku’). Użycie ’a’ w
części użytkownicy trybu symbolicznego
nie powoduje zmian praw specjalnych; zatem,
a+s
nic nie robi. Musisz użyć jawnie
’u’, ’g’ lub ’o’ by
zmienić prawa specjalne. Również kombinacje
’u+t’, ’g+t’ i ’o+s’ nic
nie robią.
Operator
’=’ niezbyt się przydaje przy prawach
specjalnych; na przykład, tryb:
o=t
spowoduje zachowanie pliku na urządzeniu wymiany, ale
równocześnie usunie wszystkie prawa odczytu,
zapisu i wykonania, które mogli mieć
wcześniej użytkownicy nie należący do
grupy pliku.
Warunkowa
wykonywalność
Istnieje jeszcze jeden specjalny typ praw symbolicznych;
jeśli użyjesz X zamiast x, to prawo
wykonywania jest zmieniane tylko wtedy, gdy plik ma już
prawo wykonywania lub jest to katalog. Zmienia on prawa
wykonywania dla katalogów nawet, jeśli uprzednio
nie miały ustawionego żadnego prawa
wykonywania.
Na
przykład, ten tryb:
a+X
daje wszystkim użytkownikom prawo wykonywania
plików (lub przeszukiwania katalogów)
jeśli ktoś już wcześniej je
posiadał.
Dokonywanie
wielu zmian
Format trybów symbolicznych jest faktycznie bardziej
złożony, niż opisano to powyżej (zobacz
’Ustawianie praw dostępu’). Umożliwia
on dwa sposoby dokonywania wielu zmian w prawach
plików.
Sposób pierwszy polega na wielokrotnym określeniu części operacja i prawo po części użytkownicy trybu symbolicznego.
Na
przykład, tryb:
og+rX-w
daje użytkownikom innym niż właściciel
pliku prawo odczytu oraz, jeśli jest to katalog lub
ktoś już ma prawo wykonywania tego pliku, daje im
prawo wykonywania; równocześnie odbiera im prawo
zapisu tego pliku. Nie ma to wpływu na prawa, jakie
posiada do niego właściciel pliku. Powyższy
tryb jest równoważnikiem dwu trybów:
og+rX
og-w
Drugi
sposób dokonywania wielu zmian polega na
określeniu więcej niż jednego prostego trybu
symbolicznego, oddzielonego od poprzedniego przecinkiem. Na
przykład, ten tryb:
a+r,go-w
nadaje każdemu prawo do odczytu pliku i usuwa prawo
zapisu wszystkim użytkownikom oprócz jego
właściciela. Inny przykład:
u=rwx,g=rx,o=
ustawia wprost wszystkie nie-specjalne prawa pliku. (Nie
daje użytkownikom spoza grupy w ogóle
żadnych praw do pliku.)
Opisane dwie
metody mogą być ze sobą łączone.
Ten tryb
a+r,g+x-w
daje wszystkim użytkownikom prawo odczytu pliku,
użytkownikom należącym do grupy pliku
również prawo jego wykonywania, ale bez prawa
zapisu. Powyższy tryb można zapisać na kilka
różnych sposobów; innym sposobem jest:
u+r,g+rx,o+r,g-w
Umask i
ochrona
Jeśli w trybie symbolicznym pominięto
część określającą
użytkowników, to domyślnie jest ona
przyjmowana za ’a’ (dotyczy wszystkich
użytkowników), z wyjątkiem tego, że
prawa ustawione w zmiennej systemowej umask
nie są zmieniane. Wartość umask
można zmienić posługując się
poleceniem umask. Wartość domyślna tej
zmiennej jest różna dla różnych
systemów.
Pominięcie części użytkownicy trybu symbolicznego nie jest na ogół użyteczne przy operacjach innych niż ’+’. Przydaje się przy ’+’, gdyż pozwala na użycie ’umask’ jako łatwo dostosowywalnej ochrony przeciw rozdawaniu większych praw do plików niż faktycznie zamierzasz.
Na
przykład, jeśli ’umask’ ma
wartość 2, co usuwa prawa zapisu dla
użytkowników nie należących do grupy
pliku, to tryb:
+w
dodaje prawo zapisu do pliku jego właścicielowi i
innym użytkownikom należącym do grupy pliku,
ale nie pozostałym użytkownikom. Inaczej
jest w przypadku trybu:
a+w
ignoruje on ’umask’ i daje prawo zapisu
do pliku wszystkim użytkownikom.
Tryby
liczbowe
Prawa pliku są wewnętrznie zapisywane jako liczby
całkowite. Zamiast podawać tryb symbolicznie,
możesz podać liczbę ósemkową (o
podstawie układu równej 8),
odpowiadającą wewnętrznej reprezentacji
nowego trybu. Liczba ta jest zawsze interpretowana jako
ósemkowa; nie musisz dodawać wiodącego 0,
tak jak w C. Tryb 0055 jest tym samym, co tryb 55.
Tryb liczbowy jest zwykle krótszy w zapisie niż odpowiadający mu tryb symboliczny, ale jego ograniczeniem jest to, że nie możesz przy jego określaniu korzystać z poprzednich praw pliku; możesz jedynie ustawiać je bezwzględnie.
Na większości systemów prawa nadane użytkownikowi, innym użytkownikom grupy pliku i pozostałym użytkownikom spoza grupy są przechowywane jako trójki bitów, każda przedstawiana przez jedną cyfrę ósemkową. Układ bitów, poczynając od najmniejszej wartości, pokazano poniżej:
Wartość trybu Odpowiadające mu prawo
Pozostali
użytkownicy spoza grupy pliku:
1 wykonanie (x)
2 zapis (w)
4 odczyt (r)
Inni
użytkownicy należący do grupy pliku:
10 wykonanie (x)
20 zapis (w)
40 odczyt (r)
Właściciel
pliku:
100 wykonanie (x)
200 zapis (w)
400 odczyt (r)
Prawa
specjalne:
1000 zachowaj obraz na urządzeniu wymiany
2000 ustaw ID grupy przy wykonaniu
4000 ustaw ID użytkownika przy wykonaniu
Na przykład, tryb liczbowy 4755 odpowiada trybowi symbolicznemu ’u=rwxs,go=rx’, zaś tryb 664 trybowi ’ug=rw,o=r’. Numeryczny tryb 0 odpowiada symbolicznemu ’ugo=’.
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 [AT] research.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 [AT] bbn.com>) i Jima Berets
(<jberets [AT] 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 [AT] iro.ca>) z kodu źródłowego ’getdate.y’, a następnie poprawiony przez K. Berry (<kb [AT] cs.edu>).
ZOBACZ TAKŻE
lista zawartości katalogu |
||||
ls krótko |
||||
rozgadane ls |
ustawienie kolorów dla ls
kopiuje pliki |
||||
konwertuje i kopiuje pliki |
kopiuje pliki i nadaje atrybuty
przesuwa pliki/zmienia nazwy |
||||
usuwa pliki lub katalogi |
||||
bezpieczniejsze usuwanie plików |
||||
tworzy dowiązania (links) między plikami |
||||
tworzy katalogi |
||||
tworzy FIFO (potoki nazwane) |
||||
tworzy blokowe lub znakowe pliki specjalne. |
||||
usuwa puste katalogi |
||||
zmienia właściciela i grupę pliku |
||||
zmienia grupę pliku |
||||
zmienia prawa dostępu do pliku |
||||
zmienia znaczniki czasu pliku |
||||
raport zajętości dysku dla systemów plików |
||||
szacunkowe zużycie miejsca przez plik |
||||
synchronizuje pamięć i dysk |
INFORMACJE O TŁUMACZENIU
Powyższe tłumaczenie pochodzi z nieistniejącego już Projektu Tłumaczenia Manuali i może nie być aktualne. W razie zauważenia różnic między powyższym opisem a rzeczywistym zachowaniem opisywanego programu lub funkcji, prosimy o zapoznanie się z oryginalną (angielską) wersją strony podręcznika.