.\" 1999 PTM Przemek Borys (total eclipse today! :) .TH ED 1 "10 listopada 1994" .SH NAZWA ed, red \- edytor tekstu .SH SKŁADNIA ed [\-] [\-Gs] [\-p \fIłańcuch\fR] [\fIplik\fR] .LP red [\-] [\-Gs] [\-p \fIłańcuch\fR] [\fIplik\fR] .SH OPIS \fI Uwaga! To tłumaczenie może być nieaktualne!\fP .PP .B ed jest zorientowanym liniowo edytorem tekstu. Jest o używany do tworzenia, wyświetlania, modyfikowania i innych działań na plikach tekstowych. .B red to .BR ed zastrzeżony (restricted): może edytować tylko pliki z bieżącego katalogu i nie może wykonywać komend powłoki. Po wywołaniu z argumentem .IR pliku , jego kopia jest odczytywana do bufora edytora. Wszelkie zmiany robione są na tej kopii, nie na .I pliku jako takim. Podczas kończenia pracy z .BR ed , wszelkie zmiany, których nie zachowano komendą .I `w' są tracone. Edycja jest dokonywana w dwóch różnych trybach: .I komend i .IR wprowadzania . Po uruchomieniu, .B ed jest w trybie komend. W trybie tym ze standardowego wejścia czytane są komendy, a następnie są one wykonywane na zawartości bufora edytora. Przykładowa komenda może wyglądać tak: .sp .RS ,s/\fIold\fR/\fInew\fR/g .RE .sp co zamienia wszystkie pojawienia się napisu .I old na .IR new . Po podaniu komendy wprowadzania, takiej jak .I `a' (append--dopisz), .I `i' (insert--wstaw) lub .I `c' (change-zmień), .B ed wchodzi w tryb wprowadzania. Jest to podstawowe narzędzie wprowadzania tekstu do pliku. W trybie tym nie ma dostępnych żadnych komend. Zamiast tego, standardowe wejście jest bezpośrednio zapisywane do bufora edytora. Linie składają się z tekstu, aż do (łącznie) znaku .IR "nowej linii" . Tryb wprowadzania jest przerywany wprowadzeniem pojedynczej kropki w linii. Wszystkie komendy .B ed operują na całych liniach, lub zakresach linii; np. komenda .I `d' kasuje (delete) linie; komenda .I `m' przenosi linie, itp. Można też modyfikować tylko część linii, korzystając z narzędzi podmiany, podanych np. w powyższym przykładzie. Jednak nawet tu, komenda .I `s' tyczy się do całych linii naraz. W ogólności, komendy .B ed składają się z zera lub więcej adresów linii, za którymi następuje pojedynczy znak komendy i często dodatkowe parametry; komendy mają więc strukturę: .sp .RS .I [adres [,adres]]komenda[parametry] .RE .sp Adresy wskazują linię, lub zakres linii, których dotyczy komenda. Jeśli podano mniej adresów niż potrzeba komendzie, używane są adresy domyślne. .SS OPCJE .TP 8 \-G Wymusza kompatybilność wsteczną. Dotyczy komend .IR `G' , .IR `V' , .IR `f' , .IR `l' , .IR `m' , .IR `t' , and .IR `!!' . .TP 8 \-s Powstrzymuje diagnostykę. Powinno być używane jeśli standardowe wejście .BR ed 'a jest ze skryptu. .TP 8 .RI \-p \ łańcuch Podaje znak zachęty komend. Może to być włączane, lub wyłączane komendą .IR `P' . .TP 8 .I plik Określa nazwę odczytywanego pliku. Jeśli .I plik jest poprzedzony wykrzyknikiem (!), to jest interpretowany jak komenda powłoki. W tym wypadku to, co jest czytane, jest standardowym wyjściem .I pliku wywołanego przez .IR sh (1). Aby odczytać plik, którego nazwa rozpoczyna się od wykrzyknika, poprzedź go odwrotnym ukośnikiem (\e). Domyślna nazwa pliku jest ustawiana na .I file tylko jeśli nie jest poprzedzona wykrzyknikiem. .SS ADRESOWANIE LINIOWE Adres reprezentuje numer linii w buforze. .B ed obsługuje .IR "adres bieżący" , który jest zazwyczaj przekazywany komendom jako domyślny (w wypadku niepodania tego argumentu). Podczas pierwszego odczytu pliku, adres bieżący jest ustawiany na ostatnią linię. Ogólnie, adres bieżący jest ustawiany na ostatnią linię, dotkniętą przez komendę. Adres linii jest konstruowany z jednej z baz z poniższej listy, za którą opcjonalnie może następować offset numeryczny. Offsety mogą zawierać dowolne kombinacje cyfr, operatorów (np. .IR + , .I - i .IR ^ ) i białych spacji. Adresy są czytane od lewej do prawej, a ich wartości są obliczane względem adresu bieżącego. Wyjątkiem reguły, że adresy reprezentują numery jest adres address .I 0 (zero). Oznacza to "przed pierwszą linią," i jest legalne tam gdzie ma sens. Zakres adresów to dwa adresy, oddzielone przecinkiem lub średnikiem. Wartość pierwszego adresu w zakresie nie może być większa od drugiego. Jeśli w zakresie podany jest tylko jeden adres, to drugi adres jest ustawiany na podany. Jeśli podano .IR n- krotną parę adresów, gdzie .I n > 2, to zakres jest określany przez ostatnie dwa adresy zestawu. Jeśli oczekiwany jest tylko jeden adres, to używany jest ostatni. Każdy adres w zakresie przecinkowym jest interpretowany względem adresu bieżącego. W zakresie średnikowym, pierwszy adres jest używany do ustawienia adresu bieżącego, a drugi względem pierwszego. Rozpoznawane są następujące symbole adresowe. .TP 8 \&. Adres bieżącej linii w buforze. .TP 8 $ Adres ostatniej linii w buforze. .TP 8 n .IR n ta linia w buforze, gdzie .I n jest liczbą w zakresie .I [0,$]. .HP - .TP 8 ^ Poprzednia linia. Jest to równoważne .I -1 i może być powtarzane z rosnącym efektem. .HP -\fIn\fR .TP 8 ^\fIn\fR .IR n ta linia poprzednia, gdzie .I n jest liczbą nieujemną. .TP 8 + Następna linia. Jest to równoważne .I +1 i może być powtarzane z rosnącym efektem. .HP +\fIn\fR .TP 8 biała spacja \fIn\fR .IR n ta następna linia, gdzie .I n jest liczbą nieujemną. .IR "Biała spacja" , za którą następuje liczba .I n jest interpretowana jako .IR +n . .HP , .TP 8 % Zakres od pierwszej do ostatniej linii. Jest to równoważne .I 1,$. .TP 8 ; Zakres od bieżącej do ostatniej linii. Jest to równoważne .I .,$. .TP 8 .RI / re/ Następna linia, zawierająca wyrażenie regularne .IR re . Poszukiwanie gdy jest to konieczne, zakręca na początek bufora i leci dalej aż do linii bieżącej. // powtarza ostatnie szukanie. .TP 8 .RI ? re? Poprzednia linia zawierająca wyrażenie regularne .IR re . Poszukiwanie gdy jest to konieczne, zakręca na koniec bufora i leci aż do linii bieżącej. ?? powtarza ostatnie szukanie. .TP 8 .RI \' lc Linia poprzednio zaznaczona przez komendę .I `k' (marK), gdzie .I lc jest małą literą. .SS WYRAŻENIA REGULARNE Wyrażenia regularne są wzorcami, używanymi w wybieraniu tekstu. Na przykład, komenda .B ed .sp .RS g/\fInapis\fR/ .RE .sp drukuje wszystkie linie, zawierające .IR napis . Wyrażenia regularne są używane też przez komendę .IR `s' , gdzie wybierają stary tekst, zastępowany nowym. W dodatku do podawania napisów, wyrażenia regularne mogą reprezentować klasy łańcuchów znakowych. Łańcuchy tak reprezentowane będą odpowiadać wyrażeniom regularnym. Jeśli jest możliwe, by wyrażenie regularne dopasowało kilka napisów w linii, to wybierane jest dopasowanie najbardziej z lewej. Do konstruowania wyrażeń regularnych używane są następujące symbole: .TP 8 c Dowolny znak .I c nie wymieniony niżej, łącznie z `{', '}', `(', `)', `<' i `>' oznacza samego siebie. .TP 8 \e\fIc\fR Znak .IR c zacytowany lewym ukośnikiem, inny niż `{', '}', `(', `)', `<', `>', `b', 'B', `w', `W', `+' i `?' oznacza właśnie ten znak. .TP 8 \fR.\fR Oznacza pojedynczy znak. (dowolny) .TP 8 .I [klasa-znaków] Oznacza pojedynczy znak z .IR "klasy znaków" . Aby do .IR "klasy znaków" włączyć `]', musi to być pierwszy znak. Zakres znaków można przekazać, rozdzielając jego końce znakiem `-', np. `a-z', który oznacza wszystkie małe litery. Do podawania zestawów znaków w .I klasie znaków można używać następujących literałów: .sp .nf \ \ [:alnum:]\ \ [:cntrl:]\ \ [:lower:]\ \ [:space:] .PD 0 \ \ [:alpha:]\ \ [:digit:]\ \ [:print:]\ \ [:upper:] .PD 0 \ \ [:blank:]\ \ [:graph:]\ \ [:punct:]\ \ [:xdigit:] .fi .sp Gdy znak `-' pojawia się jako pierwszy lub ostatni znak .IR "klasy-znaków" , to dopasowuje sam siebie. Wszystkie inne znaki .I "klasy-znaków" odpowiadają same sobie. .sp Wzorce w .I "klasie-znaków" postaci .sp \ \ [.\fIcol-elm\fR.] lub .PD 0 \ \ [=\fIcol-elm\fR=] .sp gdzie .I col-elm jest .I elementem porównawczym są interpretowane według .IR locale (5) (nie jest to obecnie obsługiwane). Zobacz .IR regex (3) dla objaśnień tych konstrukcji. .TP 8 [^\fIklasa-znaków\fR] Odpowiada dowolnemu pojedynczemu znakowi, innemu niż nowa linia, który nie jest w .IR klasie-znaków . .IR klasa-znaków jest definiowana podobnie jak wyżej. .TP 8 ^ Jeśli `^' jest pierwszym znakiem wyrażenia regularnego, to zaczepia wyrażenie regularne na początku linii. W przeciwnym wypadku oznacza `^'. .TP 8 $ Jeśli `$' jest ostatnim znakiem wyrażenia regularnego, to doczepia wyrażenie regularne do końca linii. W przeciwnym wypadku oznacza `$'. .TP 8 \e(\fIre\fR\e) Definiuje podwyrażenie .IR re . Podwyrażenia mogą być zagnieżdżane. Kolejne wsteczne odniesienia postaci `\e\fIn\fR', gdzie .I n jest cyfrą z zakresu [1,9], rozwijają się do tekstu dopasowanego przez .IR n te podwyrażenie. Na przykład, wyrażenie regularne `\e(a.c\e)\e1' odpowiada napisowi `abcabc', lecz nie `abcadc'. Podwyrażenia są porządkowane względem ich lewego ogranicznika. .TP 8 * Odpowiada dopasowaniu poprzedzającego znaku lub podwyrażenia zero lub więcej razy. jeśli '*' jest pierwszym znakiem wyrażenia regularnego, lub podwyrażenia, to oznacza '*'. Operator `*' daje czasem nieoczekiwane rezultaty. Na przykład wyrażenie `b*' dopasowuje początek napisu `abbb', według podnapisu `bbb'. .HP \fR\e{\fIn,m\fR\e}\fR .HP \fR\e{\fIn,\fR\e}\fR .TP 8 \fR\e{\fIn\fR\e}\fR Odpowiada poprzedzającemu jednoznakowemu wyrażeniu regularnemu, lub podwyrażeniu, dopasowanemu przynajmniej .I n i najwięcej .I m razy. Jeśli .I m jest pominięte, to jest tylko dolne ograniczenie. Jeśli pominięty jest też przecinek, dopasowanie wymaga dokładnie .I n powtórzeń. Jeśli któraś z tych postaci pojawi się na początku, to jest interpretowana literalnie. Np. `\e{2\e}' odpowiada `{2}', itd. .HP \e< .TP 8 \fR\e>\fR Zaczepia wyrażenie znakowe, lub podwyrażenie do początku (\e<) lub końca (\e>) \fIsłowa\fR, czyli w ASCII maksymalnego łańcucha znaków alfanumerycznych, łącznie z podkreśleniem (_). .LP Następujące rozszerzone operatory są poprzedzane lewym ukośnikiem, aby odróżnić je od tradycyjnej składni .BR ed . .HP \fR\e`\fR .TP 8 \fR\e'\fR Bezwarunkowo dopasowuje początek (\e`) lub koniec (\e') linii. .TP 8 \fR\e?\fR Opcjonalnie odpowiada pojedynczemu znakowi, lub podwyrażeniu, które go poprzedza. Np. wyrażenie `a[bd]\e?c' odpowiada `abc', `adc' i `ac'. Jeśli \e? pojawia się na początku linii, to jest traktowane literalnie jako `?'. .TP 8 \fR\e+\fR Odpowiada pojedynczemu znakowi, lub podwyrażeniu, poprzedzającemu go, a powtarzającemu się jeden, lub więcej razy. Tak więc wyrażenie regularne `a+' jest skrótem `aa*'. Jeśli \e+ pojawi się na początku linii, to odpowiada literalnemu `+'. .TP 8 \fR\eb\fR Odpowiada początkowi lub końcowi (łańcuch zerowy) słowa. Tak więc wyrażenie regularne `\ebhello\eb' jest równoważne `\e'. Jednak, `\eb\eb' jest prawidłowym wyrażeniem, podczas gdy `\e<\e>' nim nie jest. .TP 8 \fR\eB\fR Odpowiada (łańcuchowi zerowemu) w słowie. .TP 8 \fR\ew\fR Odpowiada dowolnemu znakowi w słowie. .TP 8 \fR\eW\fR Odpowiada dowolnemu znakowi nie będącemu w słowie. .SS KOMENDY Wszystkie komendy .B ed to pojedyncze znaki, choć niektóre wymagają dodatkowych parametrów. Jeśli parametry komendy rozciągają się na kilka linii, to każda linia poza ostatnią, powinna być zakończona lewym ukośnikiem (\e). Ogólnie, na linię dozwolona jest najwięcej jedna komenda. Jednak większość komend przyjmuje przyrostek drukowania, który może być dowolnym z .I `p' (drukuj-print), .I `l' (listuj-list) , lub .I `n' (wyliczaj-eNumerate), który drukuje ostatnią linię, dotkniętą przez komendę. Przerwanie (zwykle ^C) ma znaczenie przerywania bieżącej komendy i powracania do trybu komend. .B ed rozpoznaje następujące komendy. Komendy pokazane są wraz z domyślnymi adresami, lub zakresami, dostarczanymi gdy nie zostały podane (w nawiasach). .TP 8 (.)a Dokleja do adresowanej linii bufora linię, która może być adresem zerowym. Tekst jest wstawiany w trybie wprowadzania. Adres bieżący jest ustawiany na ostatnią wprowadzoną linię. .TP 8 (.,.)c Zmienia linie w buforze. Adresowane linie są kasowane, a w ich miejsce jest wklejany tekst. Tekst wprowadzany jest w trybie wprowadzania. Bieżący adres jest ustawiany na ostatnią wstawioną linię. .TP 8 (.,.)d Kasuje adresowane linie z bufora. Jeśli za skasowanym zakresem jest linia, to bieżący adres jest na nią ustawiany. W przeciwnym wypadku, jest ustawiany na linię przed skasowanym zakresem. .TP 8 .RI e \ plik Edytuje .IR plik , i ustawia domyślną nazwę pliku. Jeśli .I plik nie jest podany, używana jest domyślna nazwa pliku. Wszelkie linie bufora są kasowane przed odczytem nowego pliku. Bieżący adres jest ustawiany na ostatnią odczytaną linię. .TP 8 .RI e \ !komenda Edytuje standardowe wyjście .IR `!komendy' , (zobacz .RI ! komenda niżej). Domyślna nazwa pliku nie jest zmieniana. Wszelkie linie bufora są kasowane przed odczytaniem wyjścia .IR komendy . Bieżący adres jest ustawiany na ostatnią odczytaną linię. .TP 8 .RI E \ plik Edytuje bezwarunkowo .IR plik . Jest to podobne do komendy .I e lecz niezapisane zmiany są niszczone bez ostrzeżenia. Bieżący adres jest ustawiany na ostatnią odczytaną linię. .TP 8 .RI f \ plik Ustawia domyślną nazwę pliku na .IR plik . Jeśli .I plik nie jest podany, drukowana jest niecytowana domyślna nazwa pliku. .TP 8 .RI (1,$)g /re/lista-komend Aplikuje .I list-komend do każdej linii, odpowiadającej wyrażeniu regularnemu .IR re . Bieżący adres jest ustawiany na obecnie dopasowaną linię przed wykonaniem .IR listy-komend . Na końcu komendy .I `g' adres bieżący jest ustawiany na ostatnią linię, dotkniętą przez .IR listę-komend . Każda komenda w .I liście komend musi być w oddzielnej liście, a każda linia poza ostatnią musi być zakończona lewym ukośnikiem (\e). Dozwolone są wszystkie komendy poza .IR `g' , .IR `G' , .IR `v' , i .IR `V' . Nowa linia w .I liście-komend jest równoważna komendzie .IR `p' . .TP 8 .RI (1,$)G /re/ Interaktywnie edytuje linie odpowiadające wyrażeniu regularnemu .IR re. Dla każdej linii, linia jest drukowana i ustawiany jest adres bieżący, a użytkownik jest pytany o wstawienie .IR listy-komend . Na końcu działania komendy .IR `G' , adres bieżący jest ustawiany na ostatnią linię, dotkniętą przez .IR listę-komend . Format .I listy-komend jest taki sam jak w .IR `g' . Samotna nowa linia działa jak zerowa lista komend. Pojedynczy `&' powtarza ostatnią niezerową listę komend. .TP 8 H Włącza drukowanie wyjaśnień błędów. Domyślnie nie są one drukowane. Zalecanym jest, by skrypty rozpoczynały się tą komendą. Umożliwia to debuggowanie. .TP 8 h Drukuje objaśnienie ostatniego błędu. .TP 8 (.)i Wstawia tekst do bufora przed linię bieżącą. Tekst jest wstawiany w trybie wstawiania. Bieżący adres jest ustawiany na ostatnią wstawioną linię. .TP 8 (.,.+1)j Łączy adresowane linie. Adresowane linie są kasowane z bufora i zamieniane przez pojedynczą linię, zawierającą połączony tekst. Adres bieżący jest ustawiany na wynikową linię. .TP 8 .RI (.)k lc Zaznacza linię małą literą .IR lc . Linia może być wtedy adresowana jako .IR 'lc . Znaczenie nie jest czyszczone aż do skasowania lub zmodyfikowania linii. .TP 8 (.,.)l Drukuje niedwuznacznie adresowane linie. Jeśli jest wywołany z terminala, .B ed pauzuje na końcu każdej strony, aż do wprowadzenia nowej linii. Bieżący adres jest ustawiany na ostatnią drukowaną linię. .TP 8 (.,.)m(.) Przenosi linie w buforze. Adresowane linie są przenoszone za prawostronny adres docelowy, który może być adresem .IR 0 (zero). Bieżący adres jest ustawiany na ostatnią przeniesioną linię. .TP 8 (.,.)n Drukuje adresowane linie wraz z ich numerami linii. Bieżący adres jest ustawiany na ostatnią drukowaną linię. .TP 8 (.,.)p Drukuje adresowane linie. Jeśli jest wywołany z terminala, .B ed pauzuje na końcu każdej strony aż do wprowadzenia nowej linii. Bieżący adres jest ustawiany na ostatnią drukowaną linię. .TP 8 P Włącza i wyłącza znak zachęty komend. O ile nie był on określony opcją linii komend, \fI-p napis\fR, to jest domyślnie wyłączony. .TP 8 q Kończy pracę z ed. .TP 8 Q Kończy pracę bezwarunkowo. Jest to podobne do komendy .I q lecz niezapisane zmiany są niszczone bez ostrzeżenia. .TP 8 .RI ($)r \ plik Odczytuje .I file za adresowaną linię. Jeśli .I plik nie jest podany, używana jest domyślna nazwa pliku. Jeśli nie było wcześniej domyślnej nazwy pliku, domyślna nazwa pliku jest ustawiana na .IR plik . W przeciwnym wypadku, domyślna nazwa pliku jest niezmieniana. Bieżący adres jest ustawiany na ostatnią odczytaną linię. .TP 8 .RI ($)r \ !komenda Wczytuje za adresowaną linią wyjście .IR `!komendy' , (zobacz .RI ! komenda niżej). Domyślna nazwa pliku jest niezmieniona. Bieżący adres jest ustawiany na ostatnią wczytaną linię. .HP .RI (.,.)s /re/zamiana/ .HP .RI (.,.)s /re/zamiana/\fRg\fR .HP .RI (.,.)s /re/zamiana/n .br Zamienia tekst w adresowanych liniach, odpowiadający wyrażeniu regularnemu .I re na .IR zamianę . Domyślnie zamieniane jest tylko pierwsze dopasowanie linii. Po podaniu przyrostka .I `g' (global) zamieniane jest każde dopasowanie. Przyrostek .IR `n' , gdzie .I n jest liczbą dodatnią, powoduje że zmieniane jest tylko .IR n -te dopasowanie. Błędem jest, jeśli nie dokonano żadnych podstawień na żadnej z adresowanych linii. Bieżący adres jest ustawiany na ostatnią dotkniętą linię. .I re i .I zamiana mogą być rozdzielane dowolnym znakiem innym niż spacja i nowa linia (zobacz komendę .IR `s' , niżej). Jeśli jeden, lub dwa z ostatnich ograniczników są pominięte, to ostatnia dotknięta linia jest drukowana tak, jakby podano przyrostek .IR `p' . Niecytowany `&' w .I zamianie jest zamieniany na aktualnie dopasowany tekst. Sekwencja \fI`\em'\fR, gdzie .I m jest liczbą w zakresie [1,9] jest zamieniana .IR m -tą referencją wsteczną wyrażenia dopasowanego tekstu. Jeśli .I zamiana składa się z pojedynczego `%', to używana jest .I zamiana z ostatniego podstawienia. W .I zamianie można osadzać nowe linie po ich zacytowaniu lewym ukośnikiem (\e). .TP 8 (.,.)s Powtarza ostatnie podstawienie. Ta postać komendy .I `s' przyjmuje przyrostek licznika .IR `n' , lub dowolną kombinację znaków .IR `r' , .IR `g' , i .IR `p' . Jeśli podano przyrostek licznika .IR `n' , to zmieniane jest tylko .IR n -te dopasowanie. Przyrostek .I `r' powoduje, że zamiast ostatnie podstawienia, używane jest wyrażenie regularne ostatniego szukania. Przyrostek .I `g' włącza przyrostek global ostatniego podstawienia. Przyrostek .I `p' włącza przyrostek drukowania ostatniego podstawienia. Bieżący adres jest ustawiany na ostatnią dotkniętą linię. .TP 8 (.,.)t(.) Kopiuje adresowane linie za adres, wskazany z prawej strony, który może być adresem .IR 0 (zero). Bieżący adres jest ustawiany na ostatnią kopiowaną linię. .TP 8 u Cofa ostatnią komendę i odtwarza bieżący adres na taki, jaki był przed nią. Komendy globalne .IR `g' , .IR `G' , .IR `v' , i .IR `V' . są traktowane jako pojedyncze. .I `u' jest samo dla siebie inwersją. .TP 8 .RI (1,$)v /re/lista-komend Aplikuje .I listę-komend na każdej z adresowanych linii, nie pasujących do wyrażenia regularnego .IR re . Jest to podobne do komendy .IR `g' . .TP 8 .RI (1,$)V /re/ Edytuje interaktywnie adresowane linie, nie odpowiadające wyrażeniu regularnemu .IR re. Jest to podobne do komendy .IR `G' . .TP 8 .RI (1,$)w \ plik Zapisuje adresowane linie do .IR pliku . Wszelkie poprzednie zawartości .I pliku są tracone bez ostrzeżenia. Jeśli nie ma domyślnej nazwy pliku, to jest ona ustawiana na .IR plik , a w przeciwnym wypadku nie jest zmieniana. Jeśli nie podano nazwy pliku, używana jest nazwa domyślna. Bieżący adres nie jest zmieniany. .TP 8 .RI (1,$)wq \ plik zapisuje adresowane linie do .IR pliku , a następnie wykonuje komendę .IR `q' . .TP 8 .RI (1,$)w \ !komenda Zapisuje adresowane linie na standardowe wejście .IR `!komendy' , (zobacz .RI ! komenda niżej). Domyślna nazwa pliku i bieżący adres nie są zmieniane. .TP 8 .RI (1,$)W \ plik Dokleja adresowane linie do końca .IR pliku . Jest to podobne do komendy .IR `w' , lecz poprzednia zawartość pliku nie jest niszczona. Bieżący adres nie jest zmieniany. .TP 8 (.)x Kopiuje (wstawia) zawartość bufora wycinania za adresowaną linię. Bieżący adres jest ustawiany na ostatnią skopiowaną linię. .TP 8 (.,.)y Kopiuje (wyszarpuje) adresowane linie do bufora wycinania. Bufor wycinania jest nadpisywany przez dalsze wywołania .IR `y' , .IR `s' , .IR `j' , .IR `d' , lub .IR `c' . Bieżący adres nie jest zmieniany. .TP 8 .RI (.+1)z n Przewija .I n linii naraz, rozpoczynając od adresowanej linii. Jeśli .I n nie jest podane, używany jest bieżący rozmiar okna. Bieżący adres jest ustawiany na ostatnią drukowaną linię. .TP 8 .RI ! komenda Wykonuje .I komendę poprzez .IR sh (1). Jeśli pierwszy znak .I komendy to `!', to jest on zamieniany tekstem poprzedniej .IR `!komendy' . .B ed nie przetwarza .I komendy w poszukiwaniu cytatów lewoukośnikowych. Jedna niecytowany .I `%' jest zamieniany domyślną nazwą pliku. Gdy powłoka kończy wykonywanie, na standardowym wyjściu drukowany jest `!'. Bieżąca linia nie jest zmieniana. .TP 8 (.,.)# Rozpoczyna komentarz; reszta linii, aż do nowej linii jest ignorowana. Jeśli po adresie linii następuje średnik, to bieżący adres jest ustawiany na ten adres. W przeciwnym wypadku adres nie jest zmieniany. .TP 8 ($)= Drukuje numer linii adresowanej linii. .TP 8 (.+1)newline Drukuje adresowaną linię i ustawia bieżący adres na tę linię. .SH PLIKI .TP 20 /tmp/ed.* Plik buforowy .PD 0 .TP 20 ed.hup Plik, do którego .B ed zapisuje gdy terminal jest zawieszany. .SH ZOBACZ TAKŻE .IR vi (1), .IR sed (1), .IR regex (3), .IR sh (1). USD:12-13 B. W. Kernighan and P. J. Plauger, .I Software Tools in Pascal , Addison-Wesley, 1981. .SH OGRANICZENIA .B ed przetwarza argumenty .I plikowe z cytatami lewoukośnikowymi, np. wszystkie znaki poprzedzone lewym ukośnikiem w nazwie pliku są interpretowane literalnie. Jeśli plik tekstowy nie jest zakończony znakiem nowej linii, .B ed podczas odczytu/zapisu dopisuje go. W przypadku pliku binarnego, .B ed tego nie robi. .\" per line overhead: 4 ints .SH DIAGNOSTYKA Po błędzie, jeśli wejście .BR ed 'a następuje z pliku regularnego, lub "dokumentu tutaj" (dokumentu włączonego) to kończy; w przeciwnym wypadku drukuje `?' i powraca do trybu komend. Wyjaśnienie ostatniego błędu jest drukowane po komendzie .I `h' (help). Próba zakończenia .B ed lub edycji innego pliku przed zapisaniem zmodyfikowanego bufora powoduje błąd. Jeśli komenda jest wstawiona drugi raz, powiedzie się, lecz zmiany bufora będą utracone. .B ed kończy działanie z zerem, jeśli nie było błędów. W przeciwnym wypadku z wartością >0. .SH "INFORMACJE O TŁUMACZENIU" Powyższe tłumaczenie pochodzi z nieistniejącego już Projektu Tłumaczenia Manuali i \fImoże nie być aktualne\fR. 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 za pomocą polecenia: .IP man \-\-locale=C 1 ed .PP Prosimy o pomoc w aktualizacji stron man \- więcej informacji można znaleźć pod adresem http://sourceforge.net/projects/manpages\-pl/.