ed

ED(1)                       General Commands Manual                      ED(1)



NAZWA
       ed, red - edytor tekstu

SKÅADNIA
       ed [-] [-Gs] [-p ÅaÅcuch] [plik]

       red [-] [-Gs] [-p ÅaÅcuch] [plik]

OPIS
       ed jest zorientowanym liniowo edytorem tekstu.  Jest o używany do
       tworzenia, wyÅwietlania, modyfikowania i innych dziaÅaÅ na plikach
       tekstowych.  red to 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 pliku, jego kopia jest odczytywana do bufora
       edytora.  Wszelkie zmiany robione sÄ na tej kopii, nie na pliku jako
       takim.  Podczas koÅczenia pracy z ed, wszelkie zmiany, których nie
       zachowano komendÄ `w' sÄ tracone.

       Edycja jest dokonywana w dwóch różnych trybach: komend i
       wprowadzania.  Po uruchomieniu, 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:

              ,s/old/new/g

       co zamienia wszystkie pojawienia siÄ napisu old na new.

       Po podaniu komendy wprowadzania, takiej jak `a' (append--dopisz), `i'
       (insert--wstaw) lub `c' (change-zmieÅ), 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 nowej linii.  Tryb wprowadzania jest
       przerywany wprowadzeniem pojedynczej kropki w linii.

       Wszystkie komendy ed operujÄ na caÅych liniach, lub zakresach linii;
       np.  komenda `d' kasuje (delete) linie; komenda `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 `s' tyczy siÄ do caÅych linii naraz.

       W ogólnoÅci, komendy 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Ä:

              [adres [,adres]]komenda[parametry]

       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.


   OPCJE
       -G      Wymusza kompatybilnoÅÄ wstecznÄ. Dotyczy komend `G', `V', `f',
               `l', `m', `t', and `!!'.

       -s      Powstrzymuje diagnostykÄ. Powinno byÄ używane jeÅli
               standardowe wejÅcie ed'a jest ze skryptu.


       -p ÅaÅcuch
               Podaje znak zachÄty komend. Może to byÄ wÅÄczane, lub
               wyÅÄczane komendÄ `P'.


       plik    OkreÅla nazwÄ odczytywanego pliku. JeÅli plik jest poprzedzony
               wykrzyknikiem (!), to jest interpretowany jak komenda powÅoki.
               W tym wypadku to, co jest czytane, jest standardowym wyjÅciem
               pliku wywoÅanego przez sh(1).  Aby odczytaÄ plik, którego
               nazwa rozpoczyna siÄ od wykrzyknika, poprzedź go odwrotnym
               ukoÅnikiem (\).  DomyÅlna nazwa pliku jest ustawiana na file
               tylko jeÅli nie jest poprzedzona wykrzyknikiem.


   ADRESOWANIE LINIOWE
       Adres reprezentuje numer linii w buforze.  ed obsÅuguje 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.  +, - i ^) 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 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 n-krotnÄ parÄ adresów, gdzie 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.


       .       Adres bieżÄcej linii w buforze.


       $       Adres ostatniej linii w buforze.


       n       nta linia w buforze, gdzie n jest liczbÄ w zakresie [0,$].


       -

       ^       Poprzednia linia.  Jest to równoważne -1 i może byÄ
               powtarzane z rosnÄcym efektem.


       -n

       ^n      nta linia poprzednia, gdzie n jest liczbÄ nieujemnÄ.


       +       NastÄpna linia.  Jest to równoważne +1 i może byÄ powtarzane
               z rosnÄcym efektem.


       +n

       biaÅa spacja n
               nta nastÄpna linia, gdzie n jest liczbÄ nieujemnÄ.  BiaÅa
               spacja, za którÄ nastÄpuje liczba n jest interpretowana jako
               +n.


       ,

       %       Zakres od pierwszej do ostatniej linii. Jest to równoważne
               1,$.


       ;       Zakres od bieżÄcej do ostatniej linii. Jest to równoważne
               .,$.


       /re/    NastÄpna linia, zawierajÄca wyrażenie regularne re.
               Poszukiwanie gdy jest to konieczne, zakrÄca na poczÄtek bufora
               i leci dalej aż do linii bieżÄcej.  // powtarza ostatnie
               szukanie.


       ?re?    Poprzednia linia zawierajÄca wyrażenie regularne re.
               Poszukiwanie gdy jest to konieczne, zakrÄca na koniec bufora i
               leci aż do linii bieżÄcej.  ?? powtarza ostatnie szukanie.


       ´lc     Linia poprzednio zaznaczona przez komendÄ `k' (marK), gdzie lc
               jest maÅÄ literÄ.


   WYRAŻENIA REGULARNE
       Wyrażenia regularne sÄ wzorcami, używanymi w wybieraniu tekstu.  Na
       przykÅad, komenda ed

              g/napis/

       drukuje wszystkie linie, zawierajÄce napis.  Wyrażenia regularne sÄ
       używane też przez komendÄ `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:


       c       Dowolny znak c nie wymieniony niżej, ÅÄcznie z `{', '}', `(',
               `)', `<' i `>' oznacza samego siebie.


       \c      Znak c
                zacytowany lewym ukoÅnikiem, inny niż `{', '}', `(', `)',
               `<', `>', `b', 'B', `w', `W', `+' i `?' oznacza wÅaÅnie ten
               znak.


       .       Oznacza pojedynczy znak. (dowolny)


       [klasa-znaków]
               Oznacza pojedynczy znak z klasy znaków.  Aby do 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 klasie znaków można używaÄ nastÄpujÄcych
               literaÅów:

                 [:alnum:]  [:cntrl:]  [:lower:]  [:space:]
                 [:alpha:]  [:digit:]  [:print:]  [:upper:]
                 [:blank:]  [:graph:]  [:punct:]  [:xdigit:]

               Gdy znak `-' pojawia siÄ jako pierwszy lub ostatni znak klasy-
               znaków, to dopasowuje sam siebie.  Wszystkie inne znaki klasy-
               znaków odpowiadajÄ same sobie.

               Wzorce w klasie-znaków postaci

                 [.col-elm.] lub   [=col-elm=]

               gdzie col-elm jest elementem porównawczym sÄ interpretowane
               wedÅug locale(5) (nie jest to obecnie obsÅugiwane).  Zobacz
               regex(3) dla objaÅnieÅ tych konstrukcji.

       [^klasa-znaków]
               Odpowiada dowolnemu pojedynczemu znakowi, innemu niż nowa
               linia, który nie jest w klasie-znaków.  klasa-znaków jest
               definiowana podobnie jak wyżej.

       ^       JeÅli `^' jest pierwszym znakiem wyrażenia regularnego, to
               zaczepia wyrażenie regularne na poczÄtku linii.  W przeciwnym
               wypadku oznacza `^'.

       $       JeÅli `$' jest ostatnim znakiem wyrażenia regularnego, to
               doczepia wyrażenie regularne do koÅca linii. W przeciwnym
               wypadku oznacza `$'.

       \(re\)  Definiuje podwyrażenie re.  Podwyrażenia mogÄ byÄ
               zagnieżdżane.  Kolejne wsteczne odniesienia postaci `\n',
               gdzie n jest cyfrÄ z zakresu [1,9], rozwijajÄ siÄ do tekstu
               dopasowanego przez nte podwyrażenie.  Na przykÅad, wyrażenie
               regularne `\(a.c\)\1' odpowiada napisowi `abcabc', lecz nie
               `abcadc'.  Podwyrażenia sÄ porzÄdkowane wzglÄdem ich lewego
               ogranicznika.

       *       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'.

       \{n,m\}
       \{n,\}
       \{n\}   Odpowiada poprzedzajÄcemu jednoznakowemu wyrażeniu
               regularnemu, lub podwyrażeniu, dopasowanemu przynajmniej n i
               najwiÄcej m razy.  JeÅli m jest pominiÄte, to jest tylko dolne
               ograniczenie.  JeÅli pominiÄty jest też przecinek, dopasowanie
               wymaga dokÅadnie n powtórzeÅ. JeÅli któraÅ z tych postaci
               pojawi siÄ na poczÄtku, to jest interpretowana literalnie. Np.
               `\{2\}' odpowiada `{2}', itd.

       \<
       \>      Zaczepia wyrażenie znakowe, lub podwyrażenie do poczÄtku (\<)
               lub koÅca (\>) sÅowa, czyli w ASCII maksymalnego ÅaÅcucha
               znaków alfanumerycznych, ÅÄcznie z podkreÅleniem (_).


       NastÄpujÄce rozszerzone operatory sÄ poprzedzane lewym ukoÅnikiem, aby
       odróżniÄ je od tradycyjnej skÅadni ed.

       \`
       \'      Bezwarunkowo dopasowuje poczÄtek (\`) lub koniec (\') linii.

       \?      Opcjonalnie odpowiada pojedynczemu znakowi, lub podwyrażeniu,
               które go poprzedza. Np. wyrażenie `a[bd]\?c' odpowiada `abc',
               `adc' i `ac'.  JeÅli \? pojawia siÄ na poczÄtku linii, to jest
               traktowane literalnie jako `?'.

       \+      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 \+ pojawi siÄ na poczÄtku linii, to odpowiada literalnemu
               `+'.


       \b      Odpowiada poczÄtkowi lub koÅcowi (ÅaÅcuch zerowy) sÅowa. Tak
               wiÄc wyrażenie regularne `\bhello\b' jest równoważne
               `\<hello\>'.  Jednak, `\b\b' jest prawidÅowym wyrażeniem,
               podczas gdy `\<\>' nim nie jest.

       \B      Odpowiada (ÅaÅcuchowi zerowemu) w sÅowie.

       \w      Odpowiada dowolnemu znakowi w sÅowie.

       \W      Odpowiada dowolnemu znakowi nie bÄdÄcemu w sÅowie.

   KOMENDY
       Wszystkie komendy 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 (\).

       Ogólnie, na liniÄ dozwolona jest najwiÄcej jedna komenda.  Jednak
       wiÄkszoÅÄ komend przyjmuje przyrostek drukowania, który może byÄ
       dowolnym z `p' (drukuj-print), `l' (listuj-list) , lub `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.

       ed rozpoznaje nastÄpujÄce komendy. Komendy pokazane sÄ wraz z
       domyÅlnymi adresami, lub zakresami, dostarczanymi gdy nie zostaÅy
       podane (w nawiasach).

       (.)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Ä.

       (.,.)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Ä.

       (.,.)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.

       e plik  Edytuje plik, i ustawia domyÅlnÄ nazwÄ pliku.  JeÅli 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Ä.

       e !komenda
               Edytuje standardowe wyjÅcie `!komendy', (zobacz !komenda
               niżej).  DomyÅlna nazwa pliku nie jest zmieniana.  Wszelkie
               linie bufora sÄ kasowane przed odczytaniem wyjÅcia komendy.
               BieżÄcy adres jest ustawiany na ostatniÄ odczytanÄ liniÄ.

       E plik  Edytuje bezwarunkowo plik.  Jest to podobne do komendy e lecz
               niezapisane zmiany sÄ niszczone bez ostrzeżenia. BieżÄcy
               adres jest ustawiany na ostatniÄ odczytanÄ liniÄ.

       f plik  Ustawia domyÅlnÄ nazwÄ pliku na plik.  JeÅli plik nie jest
               podany, drukowana jest niecytowana domyÅlna nazwa pliku.

       (1,$)g/re/lista-komend
               Aplikuje list-komend do każdej linii, odpowiadajÄcej
               wyrażeniu regularnemu re.  BieżÄcy adres jest ustawiany na
               obecnie dopasowanÄ liniÄ przed wykonaniem listy-komend.  Na
               koÅcu komendy `g' adres bieżÄcy jest ustawiany na ostatniÄ
               liniÄ, dotkniÄtÄ przez listÄ-komend.

               Każda komenda w liÅcie komend musi byÄ w oddzielnej liÅcie, a
               każda linia poza ostatniÄ musi byÄ zakoÅczona lewym ukoÅnikiem
               (\).  Dozwolone sÄ wszystkie komendy poza `g', `G', `v', i `V'.
               Nowa linia w liÅcie-komend jest równoważna komendzie `p'.

       (1,$)G/re/
               Interaktywnie edytuje linie odpowiadajÄce wyrażeniu
               regularnemu re.  Dla każdej linii, linia jest drukowana i
               ustawiany jest adres bieżÄcy, a użytkownik jest pytany o
               wstawienie listy-komend.  Na koÅcu dziaÅania komendy `G', adres
               bieżÄcy jest ustawiany na ostatniÄ liniÄ, dotkniÄtÄ przez
               listÄ-komend.

               Format listy-komend jest taki sam jak w `g'.  Samotna nowa
               linia dziaÅa jak zerowa lista komend.  Pojedynczy `&' powtarza
               ostatniÄ niezerowÄ listÄ komend.

       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.

       h       Drukuje objaÅnienie ostatniego bÅÄdu.

       (.)i    Wstawia tekst do bufora przed liniÄ bieżÄcÄ.  Tekst jest
               wstawiany w trybie wstawiania. BieżÄcy adres jest ustawiany na
               ostatniÄ wstawionÄ liniÄ.

       (.,.+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Ä.

       (.)klc  Zaznacza liniÄ maÅÄ literÄ lc.  Linia może byÄ wtedy
               adresowana jako 'lc.  Znaczenie nie jest czyszczone aż do
               skasowania lub zmodyfikowania linii.

       (.,.)l  Drukuje niedwuznacznie adresowane linie. JeÅli jest wywoÅany z
               terminala, ed pauzuje na koÅcu każdej strony, aż do
               wprowadzenia nowej linii. BieżÄcy adres jest ustawiany na
               ostatniÄ drukowanÄ liniÄ.

       (.,.)m(.)
               Przenosi linie w buforze. Adresowane linie sÄ przenoszone za
               prawostronny adres docelowy, który może byÄ adresem 0 (zero).
               BieżÄcy adres jest ustawiany na ostatniÄ przeniesionÄ liniÄ.

       (.,.)n  Drukuje adresowane linie wraz z ich numerami linii. BieżÄcy
               adres jest ustawiany na ostatniÄ drukowanÄ liniÄ.

       (.,.)p  Drukuje adresowane linie. JeÅli jest wywoÅany z terminala, ed
               pauzuje na koÅcu każdej strony aż do wprowadzenia nowej
               linii.  BieżÄcy adres jest ustawiany na ostatniÄ drukowanÄ
               liniÄ.

       P       WÅÄcza i wyÅÄcza znak zachÄty komend.  O ile nie byÅ on
               okreÅlony opcjÄ linii komend, -p napis, to jest domyÅlnie
               wyÅÄczony.

       q       KoÅczy pracÄ z ed.

       Q       KoÅczy pracÄ bezwarunkowo.  Jest to podobne do komendy q lecz
               niezapisane zmiany sÄ niszczone bez ostrzeżenia.

       ($)r plik
               Odczytuje file za adresowanÄ liniÄ. JeÅli 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
               plik.  W przeciwnym wypadku, domyÅlna nazwa pliku jest
               niezmieniana.  BieżÄcy adres jest ustawiany na ostatniÄ
               odczytanÄ liniÄ.

       ($)r !komenda
               Wczytuje za adresowanÄ liniÄ wyjÅcie `!komendy', (zobacz
               !komenda niżej).  DomyÅlna nazwa pliku jest niezmieniona.
               BieżÄcy adres jest ustawiany na ostatniÄ wczytanÄ liniÄ.

       (.,.)s/re/zamiana/
       (.,.)s/re/zamiana/g
       (.,.)s/re/zamiana/n
               Zamienia tekst w adresowanych liniach, odpowiadajÄcy wyrażeniu
               regularnemu re na zamianÄ.  DomyÅlnie zamieniane jest tylko
               pierwsze dopasowanie linii.  Po podaniu przyrostka `g' (global)
               zamieniane jest każde dopasowanie.  Przyrostek `n', gdzie n
               jest liczbÄ dodatniÄ, powoduje że zmieniane jest tylko 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Ä.

               re i zamiana mogÄ byÄ rozdzielane dowolnym znakiem innym niż
               spacja i nowa linia (zobacz komendÄ `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
               `p'.

               Niecytowany `&' w zamianie jest zamieniany na aktualnie
               dopasowany tekst.  Sekwencja `\m', gdzie m jest liczbÄ w
               zakresie [1,9] jest zamieniana m-tÄ referencjÄ wstecznÄ
               wyrażenia dopasowanego tekstu.  JeÅli zamiana skÅada siÄ z
               pojedynczego `%', to używana jest zamiana z ostatniego
               podstawienia.  W zamianie można osadzaÄ nowe linie po ich
               zacytowaniu lewym ukoÅnikiem (\).

       (.,.)s  Powtarza ostatnie podstawienie.  Ta postaÄ komendy `s'
               przyjmuje przyrostek licznika `n', lub dowolnÄ kombinacjÄ
               znaków `r', `g', i `p'.  JeÅli podano przyrostek licznika `n',
               to zmieniane jest tylko n-te dopasowanie.  Przyrostek `r'
               powoduje, że zamiast ostatnie podstawienia, używane jest
               wyrażenie regularne ostatniego szukania.  Przyrostek `g'
               wÅÄcza przyrostek global ostatniego podstawienia.  Przyrostek
               `p' wÅÄcza przyrostek drukowania ostatniego podstawienia.
               BieżÄcy adres jest ustawiany na ostatniÄ dotkniÄtÄ liniÄ.

       (.,.)t(.)
               Kopiuje adresowane linie za adres, wskazany z prawej strony,
               który może byÄ adresem 0 (zero).  BieżÄcy adres jest
               ustawiany na ostatniÄ kopiowanÄ liniÄ.

       u       Cofa ostatniÄ komendÄ i odtwarza bieżÄcy adres na taki, jaki
               byÅ przed niÄ.  Komendy globalne `g', `G', `v', i `V'.  sÄ
               traktowane jako pojedyncze.  `u' jest samo dla siebie inwersjÄ.

       (1,$)v/re/lista-komend
               Aplikuje listÄ-komend na każdej z adresowanych linii, nie
               pasujÄcych do wyrażenia regularnego re.  Jest to podobne do
               komendy `g'.

       (1,$)V/re/
               Edytuje interaktywnie adresowane linie, nie odpowiadajÄce
               wyrażeniu regularnemu re.  Jest to podobne do komendy `G'.

       (1,$)w plik
               Zapisuje adresowane linie do pliku.  Wszelkie poprzednie
               zawartoÅci pliku sÄ tracone bez ostrzeżenia.  JeÅli nie ma
               domyÅlnej nazwy pliku, to jest ona ustawiana na 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.

       (1,$)wq plik
               zapisuje adresowane linie do pliku, a nastÄpnie wykonuje
               komendÄ `q'.

       (1,$)w !komenda
               Zapisuje adresowane linie na standardowe wejÅcie `!komendy',
               (zobacz !komenda niżej).  DomyÅlna nazwa pliku i bieżÄcy
               adres nie sÄ zmieniane.

       (1,$)W plik
               Dokleja adresowane linie do koÅca pliku.  Jest to podobne do
               komendy `w', lecz poprzednia zawartoÅÄ pliku nie jest
               niszczona.  BieżÄcy adres nie jest zmieniany.

       (.)x    Kopiuje (wstawia) zawartoÅÄ bufora wycinania za adresowanÄ
               liniÄ. BieżÄcy adres jest ustawiany na ostatniÄ skopiowanÄ
               liniÄ.

       (.,.)y  Kopiuje (wyszarpuje) adresowane linie do bufora wycinania.
               Bufor wycinania jest nadpisywany przez dalsze wywoÅania `y',
               `s', `j', `d', lub `c'.  BieżÄcy adres nie jest zmieniany.

       (.+1)zn Przewija n linii naraz, rozpoczynajÄc od adresowanej linii.
               JeÅli n nie jest podane, używany jest bieżÄcy rozmiar okna.
               BieżÄcy adres jest ustawiany na ostatniÄ drukowanÄ liniÄ.

       !komenda
               Wykonuje komendÄ poprzez sh(1).  JeÅli pierwszy znak komendy to
               `!', to jest on zamieniany tekstem poprzedniej `!komendy'.  ed
               nie przetwarza komendy w poszukiwaniu cytatów
               lewoukoÅnikowych. Jedna niecytowany `%' jest zamieniany
               domyÅlnÄ nazwÄ pliku.  Gdy powÅoka koÅczy wykonywanie, na
               standardowym wyjÅciu drukowany jest `!'.  BieżÄca linia nie
               jest zmieniana.

       (.,.)#  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.

       ($)=    Drukuje numer linii adresowanej linii.

       (.+1)newline
               Drukuje adresowanÄ liniÄ i ustawia bieżÄcy adres na tÄ liniÄ.

PLIKI
       /tmp/ed.*           Plik buforowy
       ed.hup              Plik, do którego ed zapisuje gdy terminal jest
                           zawieszany.

ZOBACZ TAKŻE
       vi(1), sed(1), regex(3), sh(1).

       USD:12-13

       B. W. Kernighan and P. J. Plauger, Software Tools in Pascal , Addison-
       Wesley, 1981.

OGRANICZENIA
       ed przetwarza argumenty 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, ed podczas
       odczytu/zapisu dopisuje go. W przypadku pliku binarnego, ed tego nie
       robi.


DIAGNOSTYKA
       Po bÅÄdzie, jeÅli wejÅcie 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 `h' (help).

       Próba zakoÅczenia 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.

       ed koÅczy dziaÅanie z zerem, jeÅli nie byÅo bÅÄdów. W przeciwnym
       wypadku z wartoÅciÄ >0.



                               10 listopada 1994                         ED(1)