1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987
|
.\" 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<hello\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/.
|