<?xml version='1.0' encoding="UTF-8"?>
<!DOCTYPEarticle PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">

<article>
<section>
<title>udev</title>
<refentry lang="pl">
	<refentryinfo>
		<title>udev</title>
		<date>Sierpień 2005</date>
		<productname>udev</productname>
	</refentryinfo>

	<refmeta>
		<refentrytitle>udev</refentrytitle>
		<manvolnum>7</manvolnum>
		<refmiscinfo class="version"></refmiscinfo>
	</refmeta>

	<refnamediv>
		<refname>udev</refname>
		<refpurpose>dynamiczne zarządzanie urządzeniami</refpurpose>
	</refnamediv>

	<refsect1>
		<title>OPIS</title>
		<para>
			udev dynamicznie tworzy katalog urządzeń złożony tylko z plików
			urządzeń rzeczywiście istniejących.
			Tworzy lub usuwa węzły urządzeń w katalogu
			<filename>/dev</filename>
			lub zmienia nazwy interfejsów sieciowych.
		</para>

		<para>
			Na ogół udev działa jako
			<citerefentry><refentrytitle>udevd</refentrytitle><manvolnum>8</manvolnum></citerefentry>
			i otrzymuje zdarzenia UEVENT prosto od jądra,
			jeśli urządzenie zostało dodane lub usunięte z systemu.
		</para>

		<para>
			Jeśli udev otrzyma zdarzenie urządzenia,
			to dla zidentyfikowania go dopasowuje jego reguły
			(określone w plikach konfiguracyjnych)
			do dostępnych atrybutów urządzenia dostarczonych przez sysfs.
			Reguły te mogą dostarczać dodatkowych informacji o urządzeniu,
			określać nazwę jego węzła lub nakazać demonowi udev
			uruchomienie dodatkowych poleceń jako część obsługi zdarzenia.
		</para>
	</refsect1>

	<refsect1>
		<title>KONFIGURACJA</title>
		<para>
			Pliki konfiguracyjne udev umieszczone są 
			w <filename>/etc/udev/</filename>
			oraz <filename>/lib/udev/</filename>.
			Puste ich linie oraz linie
			zaczynające się od '#' są ignorowane.
		</para>

		<refsect2>
			<title>Pliki konfiguracyjne</title>
			<para>
				udev szuka swojej głównej konfiguracji w pliku
				<filename>/etc/udev/udev.conf</filename>.
				Zawiera on zestaw zmiennych pozwalających użytkownikowi
				nadpisywać domyślne wartości udev.
				Następujące zmienne mogą być ustawione:
			</para>
			<variablelist>
				<varlistentry>
					<term>
						<option>
							udev_root
						</option>
					</term>
					<listitem>
						<para>
							Określa, gdzie umieścić węzły urządzeń
							w systemie plików.
							Domyślną wartością jest <filename>/dev</filename>.
						</para>
					</listitem>
				</varlistentry>

				<varlistentry>
					<term>
						<option>
							udev_log
						</option>
					</term>
					<listitem>
						<para>
							Poziom logowania. Prawidłowymi wartościami są 
							liczbowe wartości poziomów logowania syslog oraz
							ich tekstowe odpowiedniki: 
							<option>err</option>, 
							<option>info</option>
							oraz
							<option>debug</option>.
						</para>
					</listitem>
				</varlistentry>
			</variablelist>
	</refsect2>

	<refsect2>
		<title>
			Pliki reguł
		</title>
		<para>
			Reguły udev czytane są z plików umieszczonych
			w domyślnym katalogu reguł
			<filename>/lib/udev/rules.d/</filename>,
			systemowym katalogu reguł
			<filename>/etc/udev/rules.d/</filename>
			oraz tymczasowym <filename>/dev/.udev/rules.d/</filename>.
			Wszystkie reguły są sortowane i przetwarzana w porządku alfabetycznym,
			bez względu na to, z którego katalogu pochodzą.
		</para>

		<para>
			Nazwy plików reguł powinny mieć niepowtarzalne nazwy,
			w przeciwnym razie duplikaty są ignorowane. 
			Pliki z katalogu <filename>/etc/udev/rules.d/</filename>
			mają przewagę nad plikami o tej samej nazwie
			z katalogu <filename>/lib/udev/rules.d/</filename>.
			Można to wykorzystać do zignorowania w razie potrzeby domyślnych reguł.
		</para>

		<para>
			Każda linia w pliku reguł składa się z co najmniej jednej pary "klucz-wartość".
			Istnieją dwa rodzaje kluczy: dopasowujące oraz przypisujące.
			Jeśli w momencie otrzymania zdarzenia
			wszystkie podane dopasowujące klucze 
			pasują do zdefiniowanych tam wartości,
			reguła zostaje zastosowana oraz 
			wykonywane są przypisania z kluczy przypisujących.
		</para>

		<para>
			Reguła dopasowująca może określać nazwę węzła urządzenia,
			dodać dowiązanie wskazujące na węzeł 
			lub uruchomić wybrany program jako część obsługi zdarzenia.
			Jeśli nie znaleziono żadnej pasującej reguły,
			tworzony jest domyślny węzeł urządzenia.
		</para>

		<para>
			Reguły mogą składać się z list jednej lub więcej lub więcej
			par "klucz-wartość" oddzielonych przecinkami. Każdy klucz opisuje
			dokładnie jedną operację, zależną od użytego operatora.
			Prawidłowymi wartościami są:
		</para>
		<variablelist>
			<varlistentry>
				<term>
					<option>
						==
					</option>
				</term>
				<listitem>
					<para>
						Sprawdzanie równości.
					</para>
				</listitem>
			</varlistentry>

			<varlistentry>
				<term>
					<option>
						!=
					</option>
				</term>
				<listitem>
					<para>
						Sprawdzanie różności.
					</para>
				</listitem>
			</varlistentry>

			<varlistentry>
				<term>
					<option>
						=
					</option>
				</term>
				<listitem>
					<para>
						Przypisanie wartości do klucza.
						Klucz reprezentujący listę wartości
						zostaje zredukowany do jednej określonej w tym przypisaniu.
					</para>
				</listitem>
			</varlistentry>

			<varlistentry>
				<term>
					<option>
						+=
					</option>
				</term>
				<listitem>
					<para>
						Poszerzenie istniejącej listy wartości klucza o zadaną.
					</para>
				</listitem>
			</varlistentry>

			<varlistentry>
				<term>
					<option>
						:=
					</option>
				</term>
				<listitem>
					<para>
						Ostateczne przypisanie wartości do klucza.
						Nie pozwala ono na późniejsze zmiany.
						Pozwala to zapobiegać dokonywaniu zmian
						przez późniejsze reguły.
					</para>
				</listitem>
			</varlistentry>
		</variablelist>

		<para>
			Niżej zostaną podane nazwy kluczy
			mogące być użyte dla dopasowania właściwości urządzeń.
			Niektóre z kluczy mogą także dopasowywać właściwości urządzeń nadrzędnych w sysfs, 
			a nie tylko urządzenia które wygenerowało zdarzenie.
			Jeśli w pojedynczej regule określonych jest wiele kluczy
			pasujących do nadrzędnego urządzenia, to urządzenie to 
			musi być wskazane jednoznacznie (nie wolno dopasowywać do dwóch różnych nadrzędnych).
		</para>
		<variablelist>
			<varlistentry>
				<term>
					<option>
						ACTION
					</option>
				</term>
				<listitem>
					<para>
						Dopasowuje nazwę akcji zdarzenia.
					</para>
				</listitem>
			</varlistentry>

			<varlistentry>
				<term>
					<option>
						DEVPATH
					</option>
				</term>
				<listitem>
					<para>
						Dopasowuje ścieżkę urządzenia,
						którego zdarzenie zostało wyzwolone.
					</para>
				</listitem>
			</varlistentry>

			<varlistentry>
				<term>
					<option>
						KERNEL
					</option>
				</term>
				<listitem>
					<para>
						Dopasowuje nazwę urządzenia,
						którego zdarzenie zostało wyzwolone.
					</para>
				</listitem>
			</varlistentry>

			<varlistentry>
				<term>
					<option>
						NAME
					</option>
				</term>
				<listitem>
					<para>
						Dopasowuje nazwę węzła lub interfejs sieciowy. 
						Można tego użyć, kiedy klucz NAME
						został ustawiony w jednej z poprzedzających reguł.
					</para>
				</listitem>
			</varlistentry>

			<varlistentry>
				<term>
					<option>
						SUBSYSTEM
					</option>
				</term>
				<listitem>
					<para>
						Dopasowuje podsystem urządzenia,
						którego zdarzenie zostało wyzwolone.
					</para>
				</listitem>
			</varlistentry>
			<varlistentry>
				<term>
					<option>
						DRIVER
					</option>
				</term>
				<listitem>
					<para>
						Dopasowuje nazwę sterownika urządzenia,
						którego zdarzenie zostało wyzwolone.
						Ustawiane tylko dla urządzeń powiązanych ze sterownikiem
						w momencie wyzwolenia zdarzenia.
					</para>
				</listitem>
			</varlistentry>
			<varlistentry>
				<term>
					<option>
						ATTR{<replaceable>nazwa_pliku</replaceable>}
					</option>
				</term>
				<listitem>
					<para>
						Dopasowuje wartości atrybutów sysfs urządzenia,
						którego zdarzenie zostało wyzwolone.
						Maksymalnie w jednej regule użyte może być
						pięć kluczy <option>ATTR</option>. 
						Końcowy biały znak we wzorcu wartości atrybutu jest ignorowany,
						jeśli nie występował na końcu dopasowywanej wartości.
						Zależnie od typu operatora, klucz ten
						jest także używany do ustawienia wartości atrybutu sysfs.
					</para>
				</listitem>
			</varlistentry>

			<varlistentry>
				<term>
					<option>
						KERNELS
					</option>
				</term>
				<listitem>
					<para>
						Przeszukuje w górę ścieżkę urządzenia
						dla dopasowania nazwy podanego lub nadrzędnego urządzenia.
					</para>
				</listitem>
			</varlistentry>

			<varlistentry>
				<term>
					<option>
						SUBSYSTEMS
					</option>
				</term>
				<listitem>
					<para>
						Przeszukuje w górę ścieżkę urządzenia
						dla dopasowania nazwy podanego lub nadrzędnego podsystemu.
					</para>
				</listitem>
			</varlistentry>

			<varlistentry>
				<term>
					<option>
						DRIVERS
					</option>
				</term>
				<listitem>
					<para>
						Przeszukuje w górę ścieżkę urządzenia
						dla dopasowania nazwy jego pasującej nazwy sterownika.
					</para>
				</listitem>
			</varlistentry>

			<varlistentry>
				<term>
					<option>
						ATTRS{<replaceable>nazwa_pliku</replaceable>}
					</option>
				</term>
				<listitem>
					<para>
						Przeszukuje w górę ścieżkę urządzenia dla 
						dopasowania nazwy jego pasującego atrybutu sysfs.
						Na jedną regułę może przypadać 
						maksymalnie pięć kluczy <option>ATTRS</option>.
						Końcowy biały znak we wzorcu wartości atrybutu jest ignorowany, jeśli
						nie występował na końcu dopasowywanej wartości 
						(od tłum: warto zweryfikować tłumaczenie tego zdania lub oryginał).
					</para>
				</listitem>
			</varlistentry>

			<varlistentry>
				<term>
					<option>
						ENV{<replaceable>klucz</replaceable>}
					</option>
				</term>
				<listitem>
					<para>
						Dopasowuje wartość zmiennej środowiskowej.
						Na jedną regułę może przypadać maksymalnie
						pięć kluczy <option>ENV</option>.
						Zależnie od operatora, klucz ten może
						posłużyć również do wyeksportowania zmiennej do środowiska.
					</para>
				</listitem>
			</varlistentry>

			<varlistentry>
				<term>
					<option>
						TEST{<replaceable>maska ósemkowa</replaceable>}
					</option>
				</term>
				<listitem>
					<para>
						Sprawdza istnienie pliku. W razie potrzeby, można podać
						maskę w notacji ósemkowej.
					</para>
				</listitem>
			</varlistentry>

			<varlistentry>
				<term>
					<option>
						PROGRAM
					</option>
				</term>
				<listitem>
					<para>
						Wykonuje zewnętrzny program.
						Klucz ten jest prawdziwy, jeśli program zwrócił zerowy kod wyjścia.
						Dla wykonywanego programu udostępnione jest całe środowisko zdarzenia.
						Standardowe wyjście programu jest dostępne za pomocą klucza RESULT.
					</para>
				</listitem>
			</varlistentry>

			<varlistentry>
				<term>
					<option>
						RESULT
					</option>
				</term>
				<listitem>
					<para>
						Dopasowuje otrzymane wyjście programu 
						wywołanego kluczem PROGRAM.
						Można to wykorzystać w tej samej regule po wywołaniu
						klucza PROGRAM lub w dowolnej późniejszej.
					</para>
				</listitem>
			</varlistentry>
		</variablelist>

		<para>
			Większość pól obsługuje powłokowe wzorce dopasowania. Wspierane są następujące:
		</para>
		<variablelist>
			<varlistentry>
				<term>
					<option>
						*
					</option>
				</term>
				<listitem>
					<para>
						Dopasowuje dowolną liczbę znaków (także zerową).
					</para>
				</listitem>
			</varlistentry>
			<varlistentry>
				<term>
					<option>
						?
					</option>
				</term>
				<listitem>
					<para>
						Dopasowuje dowolny pojedynczy znak.
					</para>
				</listitem>
			</varlistentry>
			<varlistentry>
				<term>
					<option>
						[]
					</option>
				</term>
				<listitem>
					<para>
						Dopasowuje dowolny pojedynczy znak określony pomiędzy nawiasami.
						Przykładowo, wzorzec 'tty[SR]' dopasowuje 'ttyS' oraz 'ttyR'.
						Dopuszczalne jest podanie zakresu za pomocą znaku '-', np.
						[0-9] dla zakresu wszystkich liczb. Jeśli znakiem następującym
						po '[' jest '!', to pasować będzie każdy znak nie ujęty w nawiasie.
					</para>
				</listitem>
			</varlistentry>
		</variablelist>

		<para>
			Wartości można przypisywać następującym regułom:
		</para>
		<variablelist>
			<varlistentry>
				<term>
					<option>
						NAME
					</option>
				</term>
				<listitem>
					<para>
						Nazwa węzła lub interfejsu sieciowego do stworzenia, 
						która może być ustawiona.
						Co najwyżej jedna pasująca reguła z przypisaniem 'NAME=' jest skuteczna,
						następne takie są ignorowane.
					</para>
				</listitem>
			</varlistentry>

			<varlistentry>
				<term>
					<option>
						SYMLINK
					</option>
				</term>
				<listitem>
					<para>
						Nazwa dowiązania symbolicznego wskazującego na węzeł.
						Każda pasująca reguła może dodać taką wartość do listy
						dowiązań symbolicznych tego węzła.
						W jednym kluczu można określić wiele linków naraz,
						rozdzielając je spacją.
					</para>
				</listitem>
			</varlistentry>

			<varlistentry>
				<term>
					<option>
						OWNER, GROUP, MODE
					</option>
				</term>
				<listitem>
					<para>
						Uprawnienia węzła urządzenia. Każda określona tu wartość
						nadpisuje wkompilowane domyślne wartości.
					</para>
				</listitem>
			</varlistentry>

			<varlistentry>
				<term>
					<option>
						ATTR{<replaceable>klucz</replaceable>}
					</option>
				</term>
				<listitem>
					<para>
						Wartość, która powinna być zapisana jako atrybut sysfs
						w urządzeniu wywołującym zdarzenie.
						Przy odpowiednim operatorze klucz ten może być używany
						do dopasowania zadanej wartości.
					</para>
				</listitem>
			</varlistentry>

			<varlistentry>
				<term>
					<option>
						ENV{<replaceable>klucz</replaceable>}
					</option>
				</term>
				<listitem>
					<para>
						Eksportuje zmienną do środowiska. 
						Przy odpowiednim operatorze klucz ten może być używany
						do dopasowania zadanej wartości zmiennej środowiskowej.
					</para>
				</listitem>
			</varlistentry>

			<varlistentry>
				<term>
					<option>
						RUN
					</option>
				</term>
				<listitem>
					<para>
						Dodaj program do listy programów
						mających być wykonanymi dla określonego urządzenia.
						Można tego używać dla bardzo krótkich zadań.
						Uruchomienie obsługi zdarzenia na długi czas
						może blokować obsługę dalszych zdarzeń
						dla tego lub zależnego urządzenia.
						Długo pracujące zadania
						potrzebują być natychmiast odłączone
						od obsługi zdarzenia 
						(od tłum. zapewne to zdanie wymaga lepszej polskiej wersji i
						bez testów się nie obędzie ;)).
					</para>

					<para>
						Jeśli podana wartość zaczyna się od 
						<option>socket:<replaceable>ścieżka</replaceable></option>, 
						wszystkie bieżące wartości zdarzenia
						zostaną przekazane do wskazanego gniazda
						jako komunikat w takim formacie,
						w jakim jądro wysyła zdarzenia UEVENT.
						Jeśli pierwszym znakiem określonej ścieżki
						jest '@', zostanie użyte gniazdo
						z abstrakcyjnej przestrzeni nazw
						zamiast istniejącego pliku gniazda.
					</para>
				</listitem>
			</varlistentry>

			<varlistentry>
				<term>
					<option>
						LABEL
					</option>
				</term>
				<listitem>
					<para>
						Etykieta, do której można skoczyć za pomocą
						<replaceable>GOTO</replaceable>.
					</para>
				</listitem>
			</varlistentry>

			<varlistentry>
				<term>
					<option>
						GOTO
					</option>
				</term>
				<listitem>
					<para>
						Skacze do najbliższej następnej
						etykiety LABEL o pasującej nazwie.
					</para>
				</listitem>
			</varlistentry>

			<varlistentry>
				<term>
					<option>
						IMPORT{<replaceable>typ</replaceable>}
					</option>
				</term>
				<listitem>
				<para>
					Importuje do środowiska zdarzenia zestaw zmiennych
					zależnie od
					<replaceable>typu</replaceable>:
				</para>
				<variablelist>
					<varlistentry>
						<term>
							<option>
								program
							</option>
						</term>
						<listitem>
							<para>
								Wykonuje zewnętrzny program
								określony w przypisanej wartości
								i importuje jego wyjście,
								które musi być w formacie
								klucza przypisania zmiennej środowiskowej.
							</para>
						</listitem>
					</varlistentry>
					<varlistentry>
						<term>
							<option>
								file
							</option>
						</term>
						<listitem>
							<para>
								Importuje treść z określonego w wartości pliku tekstowego
								Treść musi być podana w formacie
								klucza przypisania zmiennej środowiskowej.
							</para>
						</listitem>
					</varlistentry>
					<varlistentry>
						<term>
							<option>
								parent
							</option>
						</term>
						<listitem>
							<para>
								Importuje przez odczyt bazy danych zgromadzone klucze
								z nadrzędnego urządzenia.
								Wartości przypisane do klucza <option>IMPORT{parent}</option>
								użyte są jako filtr nazw kluczy do zaimportowania.
								Filtr ten jest takim samym wzorcem dopasowania
								jak przy porównaniach.
							</para>
						</listitem>
					</varlistentry>
				</variablelist>
				<para>
					Jeśli nie podano żadnej z powyższych opcji,
					udev dokona wyboru między
					<option>program</option> a <option>file</option>
					na podstawie bitu wykonywalności w prawach dostępu.
				</para>
				</listitem>
			</varlistentry>

			<varlistentry>
				<term>
					<option>
						WAIT_FOR
					</option>
				</term>
				<listitem>
					<para>
						Czekaj aż plik stanie się dostępny.
					</para>
				</listitem>
			</varlistentry>

			<varlistentry>
				<term>
					<option>
						OPCJE
					</option>
				</term>
				<listitem>
					<para>
						Opcje reguł i urządzeń:
					</para>
					<variablelist>
						<varlistentry>
							<term>
								<option>
									last_rule
								</option>
							</term>
						<listitem>
							<para>
								Zapobiega wykonaniu dalszych reguł
								spełniających to samo dopasowanie.
								Żadna z takich dalszych reguł
								nie odniesie rezultatu.
							</para>
						</listitem>
						</varlistentry>
						<varlistentry>
							<term>
								<option>
									ignore_device
								</option>
							</term>
							<listitem>
								<para>
									Zupełnie zignoruj to zdarzenie.
								</para>
							</listitem>
						</varlistentry>
						<varlistentry>
							<term>
								<option>
									ignore_remove
								</option>
							</term>
							<listitem>
								<para>
									Nie usuwaj węzła tego urządzenia w momencie
									zdarzenia usunięcia samego urządzenia.
									Może to być przydatnym obejściem problemów
									z nieprawidłowo działającymi sterownikami.
								</para>
							</listitem>
						</varlistentry>
						<varlistentry>
							<term>
								<option>
									link_priority=<replaceable>wartość</replaceable>
								</option>
							</term>
							<listitem>
								<para>
									Określ priorytet tworzenia dowiązań.
									Urządzenia z określonym wyższym priorytetem
									nadpiszą istniejące dowiązania do węzłów innych urządzeń.
									Domyślną wartością jest 0.
								</para>
							</listitem>
						</varlistentry>
						<varlistentry>
							<term>
								<option>
									all_partitions
								</option>
							</term>
							<listitem>
								<para>
									Utwórz węzły urządzeń dla wszystkich dostępnych partycji
									urządzenia blokowego. Można tego użyć dla wymiennych nośników,
									kiedy zmiana nośnika nie jest wykryta.
								</para>
							</listitem>
						</varlistentry>
						<varlistentry>
							<term>
								<option>
									event_timeout=
								</option>
							</term>
							<listitem>
								<para>
									Liczba sekund, w których zdarzenie UDEV
									będzie czekało na zakończenie zadania,
									nim dokona samolikwidacji.
								</para>
							</listitem>
						</varlistentry>
						<varlistentry>
							<term>
								<option>
									string_escape=<replaceable>none|replace
</replaceable>
								</option>
							</term>
							<listitem>
								<para>
									Na ogół kontrolne lub potencjalne niebezpieczne znaki
									zastępowane są znakami używanymi w nazewnictwie urządzeń.
									W tej opcji można określić tryb zastępowania.
								</para>
							</listitem>
						</varlistentry>
					</variablelist>
				</listitem>
			</varlistentry>
		</variablelist>

		<para>
			Pola
			<option>NAME</option>,
			<option>SYMLINK</option>,
			<option>PROGRAM</option>,
			<option>OWNER</option>,
			<option>GROUP</option>,
			<option>MODE</option> oraz
			<option>RUN</option>
			obsługują podstawienia łańcuchów w stylu printf.
			Znaki formatujące pola
			<option>RUN</option>
			zastosowane są dopiero
			po przetworzeniu wszystkich reguł
			i bezpośrednio przed wykonaniem programu.
			Pozwala to wykorzystać kompletne środowisko
			za sprawą wcześniejszego dopasowania reguł.
			W przypadku innych pól, podstawienia wykonywane są
			w momencie przetwarzania pojedynczej reguły.
			(od. tłum.: tłumaczenie zdań o momencie korzystania
			z podstawień wymaga koniecznie
			porównania z oryginalną wersją i rzeczywistym działaniem).
			Dostępnymi podstawieniami są:
		</para>
		<variablelist>
			<varlistentry>
				<term><option>$kernel</option>, <option>%k</option></term>
				<listitem>
				<para>Nazwa urządzenia dana przez jądro.</para>
				</listitem>
			</varlistentry>
			<varlistentry>
				<term><option>$number</option>, <option>%n</option></term>
				<listitem>
				<para>
				Numer urządzenia dany przez jądro. 
				Przykładowo, numerem 'sda3' jest '3'.
				</para>
				</listitem>
			</varlistentry>
			<varlistentry>
				<term><option>$devpath</option>, <option>%p</option></term>
				<listitem>
				<para>Ścieżka urządzenia.</para>
				</listitem>
			</varlistentry>

			<varlistentry>
				<term><option>$id</option>, <option>%b</option></term>
				<listitem>
				<para>
				Nazwa urządzenia dopasowanego podczas 
				szukania w górę ścieżki urządzenia dla opcji
				<option>SUBSYSTEMS</option>, <option>KERNELS</option>, <option>DRIVERS</option> oraz <option>ATTRS</option>.
				</para>
				</listitem>
			</varlistentry>

			<varlistentry>
				<term><option>$driver</option></term>
				<listitem>
				<para>
					Nazwa sterownika urządzenia dopasowanego podczas
					szukania w górę ścieżki urządzenia dla opcji
					<option>SUBSYSTEMS</option>,
					<option>KERNELS</option>,
					<option>DRIVERS</option> oraz
					<option>ATTRS</option>.
				</para>
				</listitem>
			</varlistentry>

			<varlistentry>
				<term>
					<option>
						$attr{<replaceable>file</replaceable>}
					</option>,
					<option>
						%s{<replaceable>file</replaceable>}
					</option>
				</term>
				<listitem>
					<para>
						Wartość atrybutu sysfs dla urządzenia,
						gdzie wszystkie klucze reguły zostały dopasowane.
						Jeśli dopasowane urządzenie nie posiada takiego atrybutu,
						następuje szukanie w górę łańcucha nadrzędnych urządzeń
						i użyty jest pierwszy dopasowany atrybut.
						Jeśli atrybutem jest dowiązanie (symlink),
						zwracany jest ostatni element z celu dowiązania.
					</para>
				</listitem>
			</varlistentry>

			<varlistentry>
				<term>
					<option>
						$env{<replaceable>key</replaceable>}
					</option>,
					<option>%E{<replaceable>key</replaceable>}
					</option>
				</term>
				<listitem>
					<para>
						Wartość zmiennej środowiskowej.
					</para>
				</listitem>
			</varlistentry>

			<varlistentry>
				<term>
					<option>
						$major
					</option>,
					<option>
						%M
					</option>
				</term>
			<listitem>
				<para>
					Numer główny urządzenia dany przez jądro.
				</para>
			</listitem>
			</varlistentry>

			<varlistentry>
				<term>
					<option>
						$minor
					</option>,
					<option>
						%m
					</option>
				</term>
				<listitem>
					<para>
						Numer podrzędny urządzenia dany przez jądro.
					</para>
				</listitem>
			</varlistentry>

			<varlistentry>
				<term><option>
						$result
					</option>,
					<option>
						%c
					</option>
				</term>
				<listitem>
					<para>
						Łańcuch zwracany przez zewnętrzny program
						wywołany kluczem PROGRAM.
						Spacje w nim zawarte wyznaczają pola,
						do których można odnosić się liczbowo.
						N-te pole zwracane jest przez
						<option>%c{N}</option>.
						Jeśli po liczbie N następuje znak '+'
						(<option>%c{N}</option>),
						zwracany jest łańcuch zaczynający się polem o tym numerze i
						zawierającym wszystkie następne pola.
					</para>
				</listitem>
			</varlistentry>

			<varlistentry>
				<term>
					<option>
						$parent
					</option>,
					<option>
						%P
					</option>
				</term>
				<listitem>
					<para>
						Nazwa węzła nadrzędnego urządzenia.
					</para>
				</listitem>
			</varlistentry>

			<varlistentry>
				<term>
					<option>
						$name
					</option>
				</term>
				<listitem>
					<para>
						Bieżąca nazwa węzła urządzenia. Jeśli nie została
						zmieniona przez którąś z reguł, jest to nazwa dana przez jądro.
					</para>
				</listitem>
			</varlistentry>

			<varlistentry>
				<term>
					<option>
						$links
					</option>
				</term>
				<listitem>
					<para>
						Bieżąca lista dowiązań oddzielonych spacją.
						Wartość ta jest ustawiona tylko, gdy wcześniejsza reguła przypisała wartość
						lub w momencie usuwania urządzenia.
					</para>
				</listitem>
			</varlistentry>

			<varlistentry>
				<term>
					<option>
						$root
					</option>,
					<option>
						%r
					</option>
				</term>
				<listitem>
					<para>
						Wartość zmiennej udev_root.
					</para>
				</listitem>
			</varlistentry>

			<varlistentry>
				<term>
					<option>
						$sys
					</option>,
					<option>
						%S
					</option>
				</term>
			<listitem>
				<para>
					Punkt montowania sysfs.
				</para>
			</listitem>
			</varlistentry>

			<varlistentry>
				<term>
					<option>
						$tempnode
					</option>,
					<option>
						%N
					</option>	
				</term>
				<listitem>
					<para>
						Nazwa stworzonego tymczasowego węzła urządzenia
						umożliwiającego dostęp do urządzenia za pomocą zewnętrznego programu
						zanim zostanie stworzony docelowy węzeł.
					</para>
				</listitem>
			</varlistentry>

			<varlistentry>
				<term>
					<option>
						%%
					</option>
				</term>
				<listitem>
					<para>
						Dosłowny znak '%'.
					</para>
				</listitem>
			</varlistentry>

			<varlistentry>
				<term>
					<option>
						$$
					</option>
				</term>
			<listitem>
				<para>
					Dosłowny znak '$'.
				</para>
			</listitem>
			</varlistentry>
		</variablelist>
		<para>
			Liczbę znaków do podstawienia można ograniczyć formatem długości.
			Dla przykładu, '%3s{file}' wstawi tylko pierwsze trzy znaki atrybutu sysfs.
		</para>
	</refsect2>
	</refsect1>

	<refsect1>
		<title>
			AUTOR
		</title>
		<para>
			Greg Kroah-Hartman <email>greg@kroah.com</email>
			i Kay Sievers <email>kay.sievers@vrfy.org</email>.
			Sporo pomogli Dan Stekloff i wielu innych.
		</para>
	</refsect1>

	<refsect1>
		<title>
			TŁUMACZENIE
		</title>
		<para>
			26.09.2008, Tomasz Nowiński
			<email>
				arctgx [at] tlen.pl
			</email>
			na podstawie podręcznika udev dla wersji 128.
			Kilka zdań wymaga jeszcze solidnego sprawdzenia:
			nie tylko zestawienia z oryginałem, 
			ale i zrobienia dobrych testów.
		</para>
	</refsect1>

	<refsect1>
		<title>
			ZOBACZ TAKŻE
		</title>
		<para>
			<citerefentry>
				<refentrytitle>udevd</refentrytitle>
				<manvolnum>8</manvolnum>
			</citerefentry>, 
			<citerefentry>
				<refentrytitle>udevadm</refentrytitle>
				<manvolnum>8</manvolnum>
			</citerefentry>
		</para>
	</refsect1>
</refentry>
</section>
</article>

