3962


Lekcja 4

Edycja plików tekstowych

Celem zajęć jest zapoznanie słuchaczy z możliwością tworzenia i edycji plików tekstowych, łączenia komend w potok i przeadresowaniem strumieni wejściowych i wyjściowych.

  1. Przeadresowanie wejścia/wyjścia

Proces mający wykonać pewne działanie na pliku musi go najpierw otworzyć. Otwarcie pliku powoduje przyporządkowanie plikowi liczby całkowitej z przedziału 0-19, nazywanej deskryptorem pliku. Każdemu procesowi w chwili uruchamiania system przypisuje automatycznie pierwsze trzy deskryptory na strumień wejściowy, wyjściowy oraz diagnostyczny:

0 (stdin - standard input file) - standardowy strumień wejściowy domyślnie przypisany do klawiatury;

1 (stdout - standard output file) - standardowy strumień wyjściowy domyślnie przypisany do ekranu terminala;

2 (stderr - standard error file) - standardowy strumień diagnostyczny, który służy do wyprowadzania komunikatów o błędach, domyślnie przypisany do ekranu terminala.

Większość programów oczekuje danych ze standardowego strumienia wejściowego i wypisuje dane do standardowego strumienia wyjściowego. Użytkownik nie musi więc podawać skąd pobierać i dokąd wysyłać informacje.

0x01 graphic

Przeadresowywanie wejścia/wyjścia polega na zamianie standardowych urządzeń wprowadzania i wyprowadzania informacji na inne. Można tego dokonać za pomocą następujących operatorów przeadresowywania:

< plik

Standardowe wejście jest przeniesione z klawiatury na plik, dane będą pobierane nie z klawiatury a z określonego pliku

> plik

Standardowe wyjście jest przeniesione z ekranu do pliku, dane nie będą wyświetlane na ekranie a kierowane do pliku. Jeżeli plik o podanej nazwie istniał wcześnie jego zawartość zostaje skasowana.

>> plik

Standardowe wyjście jest przeniesione z ekranu do pliku. Jeżeli plik istniał wcześniej dane zostaną do niego dopisane, jeżeli nie istniał zostanie założony.

2> plik

Standardowe wyjście diagnostyczne jest przeniesione z ekrany do pliku, komunikaty o błędach nie będą wyświetlane na ekranie a kierowane do określonego pliku.

> plik 2>&1

Połączenie standardowego wyjścia i standardowego wyjścia diagnostycznego w jednym pliku

Komenda ls wyświetla informacje dp standardowego strumienia wyjściowego czyli ekranu. Jeżeli informacje te chcemy zapisać do pliku o nazwie moje_pliki musimy przeadresować standardowe wyjście poleceniem

ls > moje_pliki

jeżeli do pliku moje_pliki chcemy dopisać zawartość katalogu /dane , zrobimy to następująco

ls /dane >> moje_pliki

  1. Filtry

Filtrem nazywa się polecenie, które pobiera dane ze standardowego wejścia, przetwarza je i wyprowadza wyniki na standardowe wyjście. Jeżeli wystąpią błędy, są przesyłane do wyjścia diagnostycznego.

0x01 graphic

Najprostszym filtrem w Unixie jest komenda cat. Nie zmienia ona danych, pobiera je jedynie ze standardowego wejścia i odtwarza na standardowym wyjściu. Rozpatrzmy kilka przypadków:

  1. Wprowadzenie samej komendy cat powoduje oczekiwanie systemu na wprowadzanie znaków ze standardowego wejścia czyli klawiatury. Po zatwierdzenie klawiszem Enter wprowadzony tekst zostaje wyświetlony na standardowym wyjściu czyli ekranie. Po zakończeniu wpisywania klawiszami Ctrl+D kończymy działanie komendy. 

  2. Wywołanie komendy cat z nazwą pliku zmienia standardowy strumień wejściowy z klawiatury na podany plik. Umożliwia to wyświetlanie zawartości pliku na ekranie terminala.

  3. Zmianę standardowego strumienia wyjściowego uzyskujemy korzystając z symbolu przeadresowania >. Operacja ta umożliwia założenie nowego pliku, którego zawartość wprowadzimy z klawiatury. Koniec pliku uzyskujemy klawiszami Ctrl+D.

  4. Można zmienić jednocześnie standardowy strumień wejściowy i wyjściowy. Wpisując komendę
    cat plik1 > plik2
    powodujemy wczytanie danych z pliku plik1 i skierowanie ich do nowego pliku plik2.

  1. Potoki

Potok to mechanizm umożliwiający skierowanie danych z jednego polecenia na drugie. Potok łączy standardowe wyjście pierwszego polecenia ze standardowym wejściem drugiego polecenia. Eliminuje to konieczność tworzenia pomocniczych plików tymczasowych, eliminuje możliwość wystąpienia dodatkowych błędów co przyczynia się do zwiększenia wydajności systemu. Potoki wykorzystywane są w celu połączenia poleceń shellowych, tak aby można było wykonać określone działanie. Poszczególne komendy łączymy w potok przy pomocy symbolu | (Shift + \).

0x01 graphic

Najczęściej wykorzystywanym poleceniem stosowanym w potokach jest komenda more, dzieląca informacje na części odpowiadające wielkości ekranu terminala. Polecenie

ls | more

powoduje połączenie standardowego wyjścia komendy ls ze standardowym wejściem komendy more, w wyniku czego otrzymujemy na ekranie zawartość katalogu podzieloną strona po stronie.

  1. Edytor vi

Edytor vi (visual editor) jest jednym z najważniejszych elementów unixowego oprogramowania. Posiada duże możliwości, ale jest nieprzyjazny i ma zbyt skomplikowaną obsługę. Jego niezaprzeczalnym atutem jest to, że występuje we wszystkich odmianach Unixa i w wielu przypadkach jest jedynym dostępnym edytorem dla zwykłego użytkownika.

Sposób pracy z edytorem vi jest inny niż w przypadku edytorów z systemu DOS czy Windows. Podstawową różnicą jest oddzielenie funkcji wprowadzania tekstu, jego poprawiania oraz wydawania komend. Przełączanie się pomiędzy poszczególnymi trybami pracy przedstawia rysunek:

0x01 graphic

Po uruchomieniu edytora znajduje się on w trybie poprawiania tekstu ogólnie zwanym trybem poleceń. Umożliwia on poruszanie się po tekście, kasowanie znaków i całych linii, anulowanie ostatnich operacji kasowania. Aby przejść do trybu wpisywania tekstu należy nacisnąć jeden z klawiszy i (insert), a (append) lub o (open) umożliwiających wstawianie lub dopisanie tekstu oraz rozpoczęcie nowej linii tekstu. Aby poprawić tekst lub przesunąć kursor w inne miejsce tekstu należy przejść klawisze Escape do trybu poleceń. Tryb wydawania poleceń umożliwia wyszukiwanie ciągu (/ i ?) oraz kopiowanie linii, zapis pliku, ustawienie parametrów pracy edytora i zakończenie edycji. Wykaz najczęściej wykorzystywanych komend przedstawia tabelka:

komenda

opis

h

przesunięcie kursora w lewo

j

przesunięcie kursora o linię w dół

k

przesunięcie kursora o linię do góry

l

przesunięcie kursora w prawo

a

wstawienie tekstu za kursorem

i

wstawienie tekstu w miejscu kursora

o

utworzenie nowego, pustego wiersza pod bieżącym

r

zastąpienie jednego znaku

x

kasowanie znaku

dd

kasowanie linii

u

cofnięcie ostatniej operacji

1G

przejście do pierwszego wiersza

G

przejście do ostatniego wiersza

Esc

przejście z trybu wprowadzania tekstu do trybu poleceń

:w

zapisanie danych

:w nazwa_pliku

zapisanie danych w nowym pliku

:wq lub ZZ

zakończenie pracy z zapisem danych

:q!

zakończenie pracy bez zapisu danych

:set nu / nonum

wyświetlenie / wyłączenie numeracji linii

/ciąg

wyszukiwanie w przód podanego ciągu

?ciąg

wyszukiwanie w tył podanego ciągu

n

wyszukiwanie kolejnego wystąpienia poszukiwanego ciągu

:%s/ciąg1/ciąg2/g

zastąpienie ciągu1 ciągiem2 w całym dokumencie

  1. Lista komend

cat - łączenie i wyświetlanie zawartości plików

cat plik(i) - wyświetla zawartość wybranego pliku

wybrane opcje:

-n - numerowanie wszystkich wyświetlanych wierszy

-nb - numerowanie wyłącznie niepustych wierszy

-v - wyświetlanie znaków kontrolnych jako znaków drukowanych

more - przeglądanie zawartości pliku

more plik -wyświetla zawartość wybranego pliku
komenda | more - dzieli na części wielkości ekranu informacje będące wynikiem działania komendy

wybrane opcje:

-c - wyświetlanie każdej strony od góry

-v -wyświetlanie znaków kontrolnych

+numer wiersza - wyświetlanie pliku od podanego wiersza

+/ciąg - wyświetlanie pliku począwszy od dwóch wierszy poprzedzających ciąg

Polecenie more wyświetla na ekranie zawartość pliku, podobnie jak cat, ale po zapełnieniu ekranu wyświetlanie jest wstrzymywane, co umożliwia dokładne zapoznanie się z tekstem.

Gdy wyświetlanie jest wstrzymane na dole ekranu wyświetlany jest napis --MORE--, a system oczekuje wyboru dalszego działania poprzez naciśnięcie odpowiedniego klawisza:

polecenie

klawisze

przejście do następnej linii

Enter

przejście do następnej strony

Space lub f

przejście do poprzedniej strony

b

przejście o pół strony do przodu

d

lista poleceń (help)

h

wyszukiwanie tekstu

/ciąg

wyświetlenie numeru bieżącej linii

=

koniec przeglądania tekstu

q

nl - numerowanie wierszy w pliku

nl plik - wyświetlenie zawartości pliku z ponumerowanymi liniami
cat plik | nl - wyświetlenie zawartości pliku z ponumerowanymi liniami

wybrane opcje:

-ba - numeruje wszystkie linie łącznie z pustymi

head - wyświetlanie początku pliku

head plik - wyświetlenie początkowych 10 linii z pliku
wybrane opcje:
-n - wyświetlenie n pierwszych linii tekstu

tail - wyświetlenie końcówki pliku

tail plik - wyświetlenie końcowych 10 linii pliku
wybrane opcje:
-n -wyświetlenie n ostatnich linii
+n -wyświetlenie końcowych wierszy od linii o numerze n

touch - zakłada nowy plik

touch plik(i) - zakłada nowy, pusty plik o podanej nazwie

paste - wyświetla pliki obok siebie, a nie jeden pod drugim

paste pliki - wyświetla sąsiadująco zawartość plików 

vi - uruchamia edytor tekstów Visual Editor

vi plik - edycja pliku
view plik - otwiera plik w trybie tylko do odczytu (przeglądanie zawartości pliku)
vedit plik - wersja przyjaźniejsza edytora vi (wyświetlane opisy)

opis edytora vi w części 4.

  1. Ćwiczenia

Nawiąż połączenie z serwerem unix.wlodkowic.pl i zaloguj się swoim nazwiskiem i hasłem (patrz lekcja wprowadzająca). System powinien wyświetlić znak zgłoszenia shella Korna - $.

Wykonaj ćwiczenia powtórzeniowe:

Wykonaj zadania z bieżącej lekcji:

  1. wyświetl zawartość pliku opis z katalogu dokumenty

cd dokumenty

cat opis

plik opis jest długi i nie mieści się w całości na ekranie terminala.

  1. sprawdź ile linii zawiera plik opis

cat - n opis

lub

nl opis

lub

cat opis | nl

komenda nl numeruje tylko linie z tekstem (62), opuszczając linie puste

nl -ba opis

lub

cat opis | nl - ba

teraz numerowane są wszystkie linie - ich ilość 71

  1. wyświetl zawartość pliku opis w trybie przeglądania danych strona po stronie

more opis

sprawdź działanie klawiszy sterujących Spacja, Enter, b, h, =, q zgodnie z opisem w części 5

  1. wyświetl zawartość katalogu /dane łącznie z podkatalogami w trybie przeglądania danych

ls -R /dane | more

  1. wyświetl w formie długiej zawartość katalogu /dev strona po stronie z włączoną numeracją linii

ls -l /dev | nl | more

  1. wyświetl początek pliku opis z numeracją wszystkich linii, łącznie z pustymi

head opis | nl -ba

  1. wyświetl 15 pierwszych linii z pliku opis

head -15 opis

  1. wyswietl końcówkę pliku opis

tail opis

  1. wyświetl dwadzieścia ostatnich linii pliku opis z numeracja wszystkich linii

tail -20 opis | nl -ba

  1. wyświetl z pliku opis wszystkie linie od 50-tej do końca

tail +50 opis

  1. załóż nowy plik o nazwie miasto

touch miasto

ls -l

sprawdź wielkość pliku, datę jego założenia

w rozdziale 1 i 2 opisany został mechanizm przeadresowywania strumienia wejściowego i wyjściowego.
prześledźmy to na przykładach z filtrem cat

  1. Komenda cat bez parametrów pobiera dane ze standardowego źródła i wysyła je do standardowego wyjścia. Wpisz komendę cat, wprowadź dowolny napis i zatwierdź Enterem - tekst pojawi się ponownie na ekranie. Zakończ działanie komendy klawiszami Ctrl+D.

klawiatura > cat > ekran

cat

xfg gxdhg xghgh gh

xfg gxdhg xghgh gh

Ctrl + D

napis wprowadzony z klawiatury pojawia się powtórzony na ekranie

  1. Standardowe wejście zmienimy wpisując komendę cat z nazwą pliku. Wyświetl zawartość pliku opis. Dane pobrane z pliku opis pojawiają się na ekranie.

plik opis > cat > ekran

cat opis

na ekranie wyświetlana jest zawartość pliku opis

  1. Możemy również przeadresować standardowe wyjście komendy cat przy pomocy symbolu >. Załóż nowy plik o nazwie imie, wpisz w nim Swoje imię i zakoncz komendę.

klawiatura > cat > plik imie

cat > imie

Andrzej

Ctrl + D

ls -l

cat imie

powstał nowy plik o nazwie imie zawierający Twoje imię

  1. Komenda cat umożliwia jednoczesną zmianę strumienia wejściowego i wyjściowego. Powiel zawartość pliku imię w pliku nazwisko.

plik imie > cat > plik nazwisko

cat imie > nazwisko

ls -l

cat nazwisko

plik nazwisko ma identyczna zawartość jak plik imie

  1. Można także dopisać dane do już istniejącego pliku. Dopisz do pliku nazwisko Swoje nazwisko.

klawiatura > cat >> plik nazwisko

cat >> nazwisko

Kowalski

Ctrl + D

ls -l

cat nazwisko

do pliku nazwisko dopisane zostało Twoje nazwisko

  1. zapisz kalendarz na miesiąc październik w pliku o nazwie 10

cal 10 2000 > 10

ls -l

cat 10

  1. zapisz kalendarz na miesiąc listopad w pliku o nazwie 11

cal 11 2000 > 11

ls -l

cat 11

  1. połącz te dwa pliki w jeden nazwany 4kwartal

cat 10 11 > 4kwartal

ls -l

cat 4kwartał

  1. dopisz do tego pliku kalendarz na miesiąc grudzień

cal 12 2000 >> 4kwartal

cat 4kwartał

  1. połącz pliki 10 i 11sąsiadująco (jeden obok drugiego) do pliku 4kw

paste 10 11 > 4kw

cat 4kw

  1. dołacz do tego pliku kalendarz na miesiąc grudzień aby był usytuowany obok dwóch pozostałych

cal 12 2000 > 12

paste 10 11 12 > 4kw

inne metody spowodują wykasowanie zawartości pliki 4kw lub dołączenie pod spodem a nie obok

  1. poddaj edycji pusty plik miasto, sprawdź działanie klawiszy specjalnych opisanych w rozdziale 4

vi miasto

klawiszem [i] przejdź do trybu wprowadzania tekstu

wpisz kilka linijek tekstu

klawiszem [Esc] przejdź do trybu poprawiania tekstu

poruszaj się po tekście klawiszami [h], [j], [k], [l]

wykasuj kilka znaków klawiszem [x]

wykasuj całą linię [d][d]

cofnij ostatnią operację klawiszem [u]

zapisz wprowadzony tekst [:] [w]

ponownie przejdź do trybu wprowadzania tekstu, tym razem w nowej linii klawiszem [o]

wpisz kilka znaków

przejdź do trybu poprawiania tekstu klawiszem [Esc]

zapisz tekst w nowym pliku wies [:] [w] wies

zakończ pracę z edytorem bez zapisywania poprawek w pliku miasto [:] [q] [!]

sprawdź pliki miasto i wies

cat miasto

cat wies

  1. wyświetl zawartość pliku slownik z katalogu programy i znajdź w nim 4 błędy

cd ~/programy

cat slownik

liczny -> logiczny

CPPPPU -> CPU

amięć -> Pamięć

MGX -> MMX

  1. popraw błędy w pliku slownik i zapisz dokonane poprawki

vi slownik

przy pomocy klawiszy [h], [j], [k], [l] ustaw kursor w miejscu podkreślonym -litera l

liczny [a] og [Esc]

przy pomocy klawiszy [h], [j], [k], [l] ustaw kursor w miejscu podkreślonym - druga litera P

CPPPPU [x] [x] [x]

przy pomocy klawiszy [h], [j], [k], [l] ustaw kursor w miejscu podkreślonym - litera a

amięć [i] P [Esc]

przy pomocy klawiszy [h], [j], [k], [l] ustaw kursor w miejscu podkreślonym - litera G

MGX [r] M

zapisz zmiany

[:] [w] [q]

cat slownik

  1. usuń katalogi dokumenty i programy z całą zawartością

cd

rm -r dokumenty programy -

ls -la



Wyszukiwarka

Podobne podstrony:
3962
3962
3962
3962
3962

więcej podobnych podstron