sop 2009 lab05


Uniwersytet w Białymstoku
Wydział Matematyki i Informatyki
Instytut Informatyki
Materiały bazowe do zajęć z przedmiotu:
Systemy operacyjne
Laboratorium nr 05
Temat:
Kompresja plików,
globalne i Lokalne zmienne środowiskowe,
Tworzenie zmiennych
Edytor plików tekstowych vi,
Aliasy poleceń
mgr Adam Bonda
Białystok 2008
Cel laboratorium: Zapoznanie się programami do kompresji i archiwizacji plików,
roli i sposobu tworzenia zmiennych środowiskowych, oraz poruszaniem się w
edytorze plików tekstowych  vi.
(1) Kompresja danych
compress, uncompress, zcat kompresuj i dekompresuj dane
compress redukuje rozmiar podanych plików u\ywając zmodyfikowanego algorytmu
Lempel-Ziv (LZW  autor Terry A. Welch). Zawsze, je\eli jest to mo\liwe, do nazwy pliku
dodawane jest rozszerzenie .Z, przy zachowaniu informacji o właścicielu pliku, trybie
dostępu oraz czasie dostępu i modyfikacji. Je\eli nie podano nazwy \adnego pliku, dane
do kompresji pobierane są ze standardowego wejścia, a po skompresowaniu zapisywane
na standardowe wyjście. compress kompresuje jedynie zwykłe pliki. W szczególności,
ignoruje dowiązania symboliczne. Je\eli plik ma wiele twardych dowiązań, compress nie
podda go kompresji, chyba \e zostanie uruchomiony z opcją -f.
uncompress uruchamiany jest z listą plików w linii poleceń. Następnie ka\dy plik, którego
nazwa kończy się rozszerzeniem .Z i w nagłówku pliku znajduje się prawidłowa liczba
(magic number) jest dekompresowany i z jego nazwy usuwane jest rozszerzenie .Z.
Zdekompresowny plik będzie miał te same właściwości, co plik skompresowany, tzn.
właściciela, tryb dostępu oraz czas dostępu i modyfikacji. Opcja -c powoduje, \e
programy compressi uncompress zapisują pliki wyjściowe na standardowe wyjście; w ten
sposób oryginalne pliki są nienaruszane.
zcat działa tak samo, jak uncompress -c. zcat dekompresuje pliki z listy podanej w linii
poleceń lub pobiera dane ze standardowego wejścia, a następnie zapisuje
zdekompresowane dane na standardowe wyjście. zcat dokonuje dekompresji plików po
sprawdzeniu, \e w nagłówku pliku znajduje się właściwa liczba (magic number); nie jest
wymagane, aby nazwa pliku miała rozszerzenie .Z.
Składnia:
compress [-dfcv] [-b maxbit] plik
uncplress [-fcv] plik
zcat -V plik
Opcje:
-d  dekompresja skompresowanego pliku
-c  wyprowadzenie wynikowej postaci pliku na standardowe wyjście, bez usuwania
pliku wejściowego
-f  zastąpienie poprzedniej wersji pliku wyjściowego nową wersją
-v  tryb  głośny (ang. verbose)  wyprowadza komunikaty o procesie kompresji
Przykłady:
$ compress nazwa.doc # utworzy plik nazwa.doc.Z i usunie nazwa.doc
$ uncompress nazwa.doc.Z # odtworzy plik nazwa.doc i usunie plik skompresowany
$ zcat nazwa.doc.Z # wyprowadzi na ekran rozpakowaną zawartość zródła
$ tar cvf - * | compress > nazwa.tar.z # utworzy skompresowane archiwum
plików bie\ącego katalogu
tar program archiwizujący
tar, słu\ącego do zapisywania i ekstrakcji plików z archiwum nazywanego tarfile.
Archiwum tarfile mo\e zostać utworzone w napędzie taśmy, chocia\ często tworzy się
je w postaci zwykłego pliku. Pierwszym argumentem programu tar musi być jedna z opcji:
Acdrtux, po której następują opcjonalne funkcje. Końcowymi argumentami programu tar
są nazwy plików lub katalogów, które powinny zostać zarchiwizowane. U\ycie nazwy
katalogu oznacza, \e znajdujące się w nim podkatalogi równie\ powinny zostać
zarchiwizowane.
Wybrane opcje:
-c  utworzenie nowego archiwum (je\eli archiwum o podanej nazwie istnieje to jest
nadpisywane; je\eli nazwa jest katalogiem, to do archiwum przenoszona jest
rekurencyjnie cała jego zawartość
-r  dołączenie plików do archiwum na jego końcu
-t  wypisanie zawartości archiwum
-u  dołączenie tylko tych plików, które są nowsze ni\ egzemplarze w archiwum
-x  ekstrakcja plików z archiwum
-j  kompresja/dekompresja archiwum programem bzip2
-Z  kompresja/dekompresja archiwum programem compress
-z  kompresja/dekompresja archiwum programem gzip
Składania:
tar -[opcje] nazwa_archiwum.[tar|bz2|gz|z] pliki katalogi
Przykłady:
$ tar -xvf plik.tar # rozpakowuje plik.tar
$ tar -xvzf plik.tar.gz [lub plik.tgz] # rozpakowuje tar, dekompresując
uprzednio gzip'em
$ tar -cvf plik.tar.gz katalog/ # archiwizuje zawartość katalogu katalog w
pliku plik.tar.gz
gzip, gunzip, zcat kompresuje i dekompresuje pliki
gzip korzysta z algorytmu Lempel-Ziv u\ytego w programach zip i PKZIP. Wydajność
kompresji zale\y od wielkości danych wejściowych, ilości bitów u\ywanych w kodach oraz
rozmieszczenia w danych jednakowych podciągów. Stopień kompresji jest przewa\nie
du\o większy ni\ przy u\yciu kodowania LZW.
gzip redukuje rozmiar podanych plików u\ywając algorytmu Lempel-Ziv (LZ77).
Zawsze, je\eli jest to mo\liwe, do nazwy pliku dodawane jest rozszerzenie .gz, przy
zachowaniu informacji o właścicielu pliku, trybie dostępu, oraz czasie dostępu i
modyfikacji.
Skompresowane pliki mogą być odtworzone do pierwotnej postaci przy u\yciu poleceń
gzip -d, gunzip lub zcat (działa tak samo, jak gunzip -c).
Opcje:
-d  zdekompresuj plik,
-f  kompresuj plik, nawet je\eli istnieją do niego twarde dowiązania lub plik
wyjściowy ju\ istnieje, lub te\, je\eli dane są uprzednio skompresowane,
-l  dla ka\dego skompresowanego pliku wypisuje informacje typu: rozmiar
skompresowanego i zdekompresowanego pliku, współczynnik kompresji,
metoda kompresji, 32-bitowa suma kontrolna CRC zdekompresowanych
danych, pole daty/czasu oryginalnego pliku,
-r  kompresuj rekurencyjnie zawarto katalogów podanych w linii poleceń ,
-t  sprawdz spójność skompresowanego pliku.
Składnia:
gzip [ -acdfhlLnNrtvV19 ] [-S rozszerzenie] [ nazwa ... ]
gunzip [ -acfhlLnNrtvV ] [-S rozszerzenie] [ nazwa ... ]
zcat [ -fhLV ] [ nazwa ... ]
Przykłady:
$ gzip plik # kompresja pliku,
$ gzip -d plik.gz # dekompresja pliku.
bzip2, bunzip2, sortujący bloki kompresor/dekompresor plików
bzcat, dekompresuje pliki na standardowe wyjście
bzip2recover odzyskuje dane ze zniszczonych archiwów bzip2
bzip2 kompresuje pliki u\ywając algorytmu sortowania bloków Burrowsa-Wheelera i kodu
Huffmana. Kompresja jest generalnie sporo lepsza od konwencjonalnych kompresorów
opartych o metodę LZ77/LZ78, i jest porównywalna z osiągnięciami statystycznych
kompresorów z rodziny PPM.
bzip2 oczekuje listy plików towarzyszących parametrom linii poleceń. Ka\dy plik jest
zastępowany przez swoją skompresowaną wersję, z nazwą oryginalny_plik.bz2.
bzip2 i bunzip2 standardowo nie nadpisują istniejących ju\ plików. Jeśli chcesz aby to
robiły, musisz u\yć parametru -f.
bunzip2 (lub bzip2 -d) dekompresuje wszystkie podane pliki.
bzcat (lub bzip2 -dc) dekompresuje wszystkie wybrane pliki na standardowe wyjście.
Opcje:
-c Kompresuje lub dekompresuje na standardowe wyjście.
-d Wymusza dekompresję. bzip2, bunzip2 i bzcat są tak naprawdę tymi samymi
programami i decyzja jakie akcje będą wykonane jest wykonywana na podstawie nazwy
jaka została u\yta
-t Sprawdza integralność wybranego pliku(ow)
-f Wymusza zastępowanie plików wyjściowych i łamanie dowiązań twardych, czego
normalnie nie robi
Składnia:
bzip2 [-cdfkqstvzVL123456789] [nazwy_plików...]
bunzip2 [-fkvsVL] [nazwy_plików...]
bzcat [-s] [nazwy_plików...]
bzip2recover nazwa_pliku
Przykłady:
$ bzip2 plik # kompresja pliku,
$ bunzip2 plik.bz2 # dekompresja pliku.
(2) Zmienne środowiskowe systemu Linux
Wiele programów i skryptów korzysta ze zmiennych środowiskowych w których
przechowywane są zarówno trwale jak i tymczasowo ró\ne dane. Dotyczą one głównie
konfiguracji systemu i aplikacji w nim pracujących. Ró\nią się one nieznacznie, zale\nie
od rodzaju dystrybucji, czy nawet wersji linux'a.
Rozmieszczenie zmiennych środowiskowych jest bardzo zró\nicowane dlatego warto
poznać kilka typowych miejsc ich definiowania i pobierania.
Zasadniczo rozró\nia się dwa typy zmiennych środowiskowych. Są to
ą zmienne globalne
ą zmienne lokalne
I. Globalne zmienne środowiskowe
Rozpoznawane są zarówno przez otwartą sesję shella, jak i procesy potomne, które
powłoka tworzy, czy te\ które tworzone są podczas pracy u\ytkownika. Zmienne lokalne
są dostępne tylko z poziomu tej powłoki, która je tworzy (lub stworzyła). To właśnie czyni
zmienne globalne tak przydatnymi aplikacjom tworzącym procesy potomne, przez które
komunikują się z procesami nadrzędnymi.
Część globalnych zmiennych środowiskowych jest ju\ tworzona w momencie ładowania
bash'a  są to tzw. systemowe zmienne środowiskowe. Dla odró\nia ich od zmiennych
innego typu, tworzone są za pomocą wielkich liter.
Polecenie printenv lub env zwraca listę globalnych zmiennych środowiskowych
$ env
LESSKEY=/etc/.less
LC_PAPER=pl_PL
LC_ADDRESS=pl_PL
LC_MONETARY=pl_PL
HOSTNAME=stacja_01
MIZFILES=/usr/local/share/mizar
TERM=xterm
SHELL=/bin/bash
LC_SOURCED=1
HISTSIZE=1000
TMPDIR=/home/student/tmp
SSH_CLIENT=::ffff:192.168.0.1 1358 22
LC_NUMERIC=pl_PL
QTDIR=/usr/lib/qt3/
SSH_TTY=/dev/pts/0
USER=student
LS_COLORS=no=00:fi=00:di=01;34:ln=01;36:pi=40;33:so=01;35:bd=40;33;01:cd=40;33;01:o
r=01;05;37;41:mi=01;05;37;41:ex=01;32:*.cmd=01;32:*.exe=01;32:*.com=01;32:*.btm=01;
32:*.bat=01;32:*.sh=01;32:*.csh=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;
31:*.lzh=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.gz=01;31:*.bz2=01;31:*.bz=01;31:*.
tz=01;31:*.rpm=01;31:*.cpio=01;31:*.jpg=01;35:*.gif=01;35:*.bmp=01;35:*.xbm=01;35:*
.xpm=01;35:*.png=01;35:*.tif=01;35:
LC_TELEPHONE=pl_PL
FLASH_GTK_LIBRARY=libgtk-x11-2.0.so.0
MOZ_PLUGIN_PATH=/usr/lib/mozilla/plugins:/home/student/.mozilla/plugins
NLSPATH=/usr/share/locale/%l/%N
MAIL=/var/spool/mail/student
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/h
ome/student/bin
LC_MESSAGES=pl_PL
SECURE_LEVEL=2
LC_IDENTIFICATION=pl_PL
LC_COLLATE=pl_PL
INPUTRC=/etc/inputrc
PWD=/home/student
LANG=pl_PL
PYTHONSTARTUP=/etc/pythonrc.py
LC_MEASUREMENT=pl_PL
PS1=[\u@\h \W]\$
SSH_ASKPASS=/usr/lib/ssh/gnome-ssh-askpass
HISTCONTROL=ignoredups
SHLVL=1
HOME=/home/student
LANGUAGE=pl_PL:pl
GCONF_TMPDIR=/tmp
TMP=/home/student/tmp
LESS=-MM
LOGNAME=student
LC_CTYPE=pl_PL
SSH_CONNECTION=::ffff:192.168.0.1 1358 22 ::ffff:192.168.0.2 1358 22
LESSOPEN=|/usr/bin/lesspipe.sh %s
LC_TIME=pl_PL
G_BROKEN_FILENAMES=1
LC_NAME=pl_PL
_=/bin/env
Szereg z tych zmiennych tworzona jest przez powłokę bash. Większość z nich jest
zmiennymi systemowymi tworzonymi przez system w trakcie procesu logowania.
II. Lokalne zmienne środowiskowe
Jak sama nazwa wskazuje są to zmienne, które mo\na odczytać tylko w lokalnej sesji, a
więc w której zostały one zdefiniowane. Nie oznacza to wcale, \e są one mniej wa\ne od
zmiennych globalnych. Obydwa rodzaje zmiennych są równie istotne, poniewa\ domyślnie
tworzone są przez system.
Nie istnieje jednak polecenie wyświetlające listę samych zmiennych lokalnych. Istnieje
natomiast polecenie set, które wyrzuca listę zmiennych środowiskowych wszystkich
typów.
$ set
BACKSPACE=Delete
BASH=/bin/bash
BASH_VERSINFO=([0]="2" [1]="05b" [2]="0" [3]="1" [4]="release" [5]="i586-mandrake-
linux-gnu")
BASH_VERSION='2.05b.0(1)-release'
BSNUM=14
CLASS=beginner
COLUMNS=140
DIRSTACK=()
EUID=0
FLASH_GTK_LIBRARY=libgtk-x11-2.0.so.0
GCONF_TMPDIR=/tmp
GROUPS=()
G_BROKEN_FILENAMES=1
HISTCONTROL=ignoredups
HISTFILE=/home/student/.bash_history
HISTFILESIZE=1000
HISTSIZE=1000
HOME=/home/student
HOSTNAME=serwer306
HOSTTYPE=i586
IFS=$' \t\n'
INPUTRC=/etc/inputrc
KBCHARSET=iso-8859-2
KEYBOARD=pl
KEYTABLE=pl
LANG=pl_PL
LANGUAGE=pl_PL:pl
LC_ADDRESS=pl_PL
LC_COLLATE=pl_PL
LC_CTYPE=pl_PL
LC_IDENTIFICATION=pl_PL
LC_MEASUREMENT=pl_PL
LC_MESSAGES=pl_PL
LC_MONETARY=pl_PL
LC_NAME=pl_PL
LC_NUMERIC=pl_PL
LC_PAPER=pl_PL
LC_SOURCED=1
LC_TELEPHONE=pl_PL
LC_TIME=pl_PL
LESS=-MM
LESSKEY=/etc/.less
LESSOPEN='|/usr/bin/lesspipe.sh %s'
LIBSAFE=no
LINES=61
LOGNAME=student
LS_COLORS='no=00:fi=00:di=01;34:ln=01;36:pi=40;33:so=01;35:bd=40;33;01:cd=40;33;01:
or=01;05;37;41:mi=01;05;37;41:ex=01;32:*.cmd=01;32:*.exe=01;32:*.com=01;32:*.btm=01
;32:*.bat=01;32:*.sh=01;32:*.csh=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01
;31:*.lzh=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.gz=01;31:*.bz2=01;31:*.bz=01;31:*
.tz=01;31:*.rpm=01;31:*.cpio=01;31:*.jpg=01;35:*.gif=01;35:*.bmp=01;35:*.xbm=01;35:
*.xpm=01;35:*.png=01;35:*.tif=01;35:'
LS_OPTIONS='-F --color=auto'
MACHTYPE=i586-mandrake-linux-gnu
MAIL=/var/spool/mail/student
MAILCHECK=60
META_CLASS=download
MIZFILES=/usr/local/share/mizar
MOZ_PLUGIN_PATH=/usr/lib/mozilla/plugins:/home/student/.mozilla/plugins
NLSPATH=/usr/share/locale/%l/%N
OPTERR=1
OPTIND=1
OSTYPE=linux-gnu
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/h
ome/student/bin
PIPESTATUS=([0]="0")
PPID=14009
PROMPT_COMMAND='echo -ne "\033]0;${USER}@${HOSTNAME}: ${PWD}\007"'
PS1='[\u@\h \W]\$ '
PS2='> '
PS4='+ '
PWD=/home/student
PYTHONSTARTUP=/etc/pythonrc.py
QTDIR=/usr/lib/qt3/
SECURE_LEVEL=2
SECURITY=2
SHELL=/bin/bash
SHELLOPTS=braceexpand:emacs:hashall:histexpand:history:interactive-comments:monitor
SHLVL=1
SSH_ASKPASS=/usr/lib/ssh/gnome-ssh-askpass
SSH_CLIENT='::ffff:192.168.0.1 1358 22'
SSH_CONNECTION='::ffff:192.168.0.1 1358 22 ::ffff:192.168.0.2 1358 22'
SSH_TTY=/dev/pts/0
TERM=xterm
TMOUT=0
TMP=/home/student/tmp
TMPDIR=/home/student/tmp
UID=0
UMASK_USER=022
USER=student
_=env
screen ()
{
if [ -z "$SCREENDIR" ]; then
export SCREENDIR=$HOME/tmp;
fi;
/usr/bin/screen $@
}
Znając listę zmiennych globalnych uzyskanych poleceniem printenv, mo\emy łatwo
określić które ze zmiennych nale\ą to typu lokalnego.
Niektóre z wartości zmiennych zwracane są przez system po wywołaniu określonego
polecenie, np.:
logname pobiera i zwraca nazwę u\ytkownika
Polecenie pobiera i wyprowadza na standardowe wyjście nazwę u\ytkownika, który na
danym terminalu otworzył sesję.
Taki sam efekt uzyskamy wywołując systemową zmienną $LOGNAME.
śeby zobaczyć wartość danej zmiennej nale\y wydać polecenie echo i podać nazwę
zmiennej poprzedzonej znakiem dolara  $ . Pomiędzy $ a nazwą zmiennej nie mo\e
występować spacja.
III. Tworzenie lokalnych zmiennych środowiskowych
Z poziomu powłoki, u\ytkownik mo\e sam tworzyć zmienne środowiskowe. Mo\liwe jest
przypisanie zarówno wartości numerycznej jak i tekstowej tworzonej zmiennej u\ywając
znaku przypisania  = :
$ n_zmienna=test
$ echo $n_zmienna
test
śeby zmiennej przypisać tekst składający się z kilku słów, lub znaków rozdzielonych
spacją nale\y zastosować pojedyncze znaki cytowania:
$ n_zmienna='test kilku wyrazow'
$ echo $n_zmienna
test kilku wyrazow
w innym przypadku powłoka zgłosi błąd, biorąc drugi wyraz za komendę którą nale\y
wykonać.
Wa\ne jest, aby pomiędzy nazwą zmiennej, znakiem przypisania oraz wartością nie było
spacji.
IV. Tworzenie globalnych zmiennych środowiskowych
Globalne zmienne środowiskowe są dostępne z dowolnego procesu potomnego
utworzonego z procesu rodzica, z którego poziomu zmienna została stworzona.
Metoda tworzenia zmiennej globalnej polega na stworzeniu zmiennej lokalnej i
wyeksportowaniu jej do środowiska globalnego. U\ywa się do tego polecenia export:
$ n_zmienna='test kilku wyrazow' # tworzymy zmienna lokalna
$ echo $n_zmienna # sprawdzamy jej wartość
test kilku wyrazow
$ export n_zmienna # eksportujemy zmienną do środowiska
# globalnego
$ bash # uruchamiamy proces potomny
$ echo $n_zmienna # sprawdzamy obecność zmiennej w
test kilku wyrazow # procesie potomnym
Nale\y zwrócić uwagę, \e podczas eksportowania zmiennych nie u\ywa się znaku dolara.
V. Usuwanie zmiennych środowiskowych
Jeśli zmienną mo\na stworzyć to mo\na ją te\ usunąć. Słu\y do tego polecenie unset:
$ n_zmienna=test
$ echo $n_zmienna
test
$ unset test
$ echo $n_zmienna
$
VI. Lokalizacja zmiennych systemowych w systemie
Znalezienie mechanizmu tworzenia danej zmiennej w systemie określa miejsce jej
definiowania. Podczas logowania do systemu, bash domyślnie sprawdza i uruchamia kilka
plików. Nazywane są one plikami startowymi (ang. startup files).
Istnieją trzy sposoby uruchomienia powłoki systemowej bash:
ą podczas typowego procesu logowania do powłoki
W takcie typowego logowania do systemu, powłoka bash uruchamia się jako
powłoka logowania, która sprawdza cztery ró\ne pliki startowe (w określonej
poni\ej kolejności), by uzyskać dalsze informacje potrzebne do stworzenia pełnego
środowiska roboczego, są to:
/etc/profile
$HOME/.bash profile
$HOME/.bash login
$HOME/.profile
ą jako interaktywna powłoka (nie będąca powłoką logowania)
Jeśli uruchomiona została powłoka bash, bez logowania się do systemu (np.:
poprzez CLI (ang. command line interface) to właśnie właśnie uruchomiony został
tryb interaktywny powłoki. Tryb ten nie podlega zachowaniu powłoki logowania, ale
umo\liwia wykonywanie poleceń.
Tryb interaktywny nie przetwarza /etc/profile, ale za to sprawdzany jest
.bashrc z katalogu domowego
ą jako nieinteraktywna powłoka uruchamiająca skrypty
Powłokę nieinteraktywną system uruchamia w celu wykonywania skryptów
shellowych. Ró\nica polega na tym, \e w tym przypadku brak jest CLI.
(3) Edytor vi
vi,view,vim edytor plików tekstowych
vim jest edytorem tekstów, kompatybilnym z vi i mo\e być u\ywany do edycji wszystkich
rodzajów tekstu. Jest szczególnie u\yteczny podczas edycji programów.
vim ma wiele ulepszeń w stosunku do vi: wielopoziomowe undo, mo\liwość pracy z
wieloma oknami i buforami, podświetlanie składni, edycja linii komend, dokańczanie nazw
plików, pomoc online, itp.
Podsumowanie ró\nic między vim, a vi mo\na uzyskać, wpisując ":help vi_diff.txt".
Podczas pracy z edytorem vim za pomocą polecenia ":help" mo\na uzyskać pomoc z
systemu pomocy online.
Najczęściej vim jest u\ywany do edycji pojedynczego pliku i wywoływany:
vim plik
Ogólniej, vim jest uruchamiany tak:
vim [opcje] [lista_plików]
Niewątpliwą zaletą tego edytora jest to, \e znajduje się w ka\dej, nawet najbardziej
zminimalizowanej dystrybucji.
Wybrane opcje:
+[num] Kursor będzie ustawiony w linii "num" pierwszego pliki. Je\eli nie podano
wartości "num", kursor ustawi się w ostatniej linii.
(bardzo przydatna opcja przy błędach zwracanych w trakcie kompilacji zródeł)
+/{pat} Kursor będzie ustawiony na pierwszym wystąpieniu wzorca {pat} w pierwszym
pliku. Zobacz ":help search-pattern", aby wyświetlić listę mo\liwych
wzorców wyszukiwania.
-R Otwiera plik w trybie czytania  nie mo\na zapisywać zmian
vim/vi posiada dwa podstawowe tryby pracy:
ą tryb poleceń (po naciśnięciu klawisza Esc)
ą tryb pisania/wstawiania tekstu (po wprowadzeniu Esc-i)
W trybie poleceń naciśniecie klawisza nie jest interpretowane jako kolejny znak tekstu, ale
polecenie dla edytora. W drugim trybie ka\dy naciśnięty klawisz powoduje wprowadzenie
odpowiedniego znaku ASCII w tekście.
Po uruchomieniu edytora przechodzi on automatycznie w trybie poleceń. Wciśnięcie Esc i
jednego z parametrów podanych w  Tryb wprowadzania znaków przechodzi on do trybu
edycji tekstu. Kombinacja  Esc : (Esc + dwukropek) powoduje przejście w tryb poleceń
edytora ex.
Tryb wprowadzania znaków
i/a (ang. insert/append) przejście w tryb wstawiania znaków przed/za kursorem
I/A przejście w tryb wstawianie znaków na początku/końcu wiersza
o/O przejście w tryb wstawianie znaków i wstawienie pustego
wiersza pod/nad wierszem tekstu z kursorem. Kursor pojawia
się na początku nowego pustego wiersza.
R (ang. replace) przejście w tryb wstawiania znaków przez nadpisywania
Przemieszczanie kursora (tryb poleceń)
h, j, k, l o jeden znak w: lewo, górę, dół, prawo
3w/3W o np.: 3 słowa w prawo z/bez uwzględnienia znaków interpunkcji
5b/5B o np.: 5 słów w lewo z/bez uwzględnienia znaków interpunkcji
0/$ na początek/koniec wiersza
^F/^B o jeden ekran do przodu/tyłu (Ctrl+f / Ctrl+b / Ctrl+d / Ctrl+u)
1G/G na początek/koniec pliku
H na początek ekranu
{ przemieszczanie się pomiędzy akapitami - akapitem dla edytora jest pusta
} linia w tekście
Kasowanie znaków (tryb poleceń)
x (2x, 3x) kasowanie bie\ącego znaku (w pozycji kursora)
dw kasowanie słowa na początku którego stoi kursor
dd kasowanie bie\ącego wiersza tekstu
D/d$ kasowanie od kursora do końca wiersza
d0 kasowanie od kursora do początku wiersza
Zastępowanie znaków (tryb poleceń)
r znaku w pozycji kursora
R kolejnych znaków, począwszy od pozycji kursora
Odtwarzanie skasowanych znaków (tryb poleceń)
u anulowanie ostatniej operacji kasowania
U odtworzenie wiersza w jego poprzednim miejscu
p odtworzenie ostatniego kasowania w pozycji bie\ącej
Aączenie wierszy tekstu (tryb poleceń)
J dołączenie wiesza następnego na końcu bie\ącego
Powtórzenie pelecenia (tryb poleceń)
. powtórzenie ostatnio wykonanego polecenia edytora
Szukanie znaku w wierszu (tryb poleceń)
f/F szukanie znaku w wierszu w kierunku jego końca/początku
; szukanie następnego wystąpienia wzorca tekstu
Szukanie napisu wg podanego wzorca (tryb poleceń)  mo\na stosować RegEx
/wzorzec szukanie napisu w kierunku końca pliku
?wzorzec szukanie napisu w kierunku początki pliku
n,/ szukanie następnego wystąpienia napisu (w stronę końca/początku)
Zastępowanie fragmentów testu (tryb poleceń)
:1,$s/stary/nowy/gc zastąpienie w całym buforze (pliku) (g) napisu określonego
przez argument stary na napis określony przez argument
nowy, oraz zapytanie (c) o potwierdzenie dokonania zmian.
:s/stary/nowy zastąpienie napisu w ramach wiersza
Zakres wierszy, w których ma się dokonać zamiana wyra\eń określony jest pod
dwukropku przez literą s.
1,$ Od pierwszego do ostatniego wiersza zbioru
1,. Do pierwszego do bie\ącego (.) wiersza
.,$ Od bie\ącego (.) do końca pliku
% Cały plik
5,20 Wiersze od 5 do 20 włącznie
Na końcu polecenia zamiany po znaku / mogą wystąpić modyfikatory
g (ang. global) wszystkie wystąpienia w wierszu
c (ang. confirm) z potwierdzeniem zmiany
W wspomnianym trybie komend edytora ex (przejście do tego trybu przez  Esc : )
mo\liwe jest wprowadzanie komend, wpisując je bezpośrednio na dole ekranu po znaku
dwukropka. U\ycie znak wykrzyknika (!) po komendzie oznacza bezwarunkowe jej
wykonanie.
:w zapamiętanie edytowanego pliku pod bie\ącą nazwa
:w inny_plik zapamiętanie edytowanego pliku pod wskazaną argumentem nazwą
:q wyjście z edytora (:q! - wyjście bez względu na kod ochrony pliku) bez
wykonania jakiejkolwiek zmiany w tekscie.
:x zapamiętanie edytowanych treści w bie\ącym pliku i zamknięcie edytora
:wq jw.
:!cmd wykonanie wskazanego przez cmd polecenia shella
:set wyświetla aktualne ustawienia edytora
:set all wyświetla wszystkie dostępne ustawienia edytora
:set wm=n ustawia długości wiersza tekstu (prawego marginesu: ang wrap margin)
:set number włącza wyświetlanie numerów wierszy
:5,8 w nowy Zapisuje wiersze od 5 do 8 w pliku nowy
Więcej informacji: man vi lub vimtutor
(5) Aliasy
$ alias -p
alias l.= ls -d .* --color=tty
alias ll= ls -l --color=tty
alias ls= ls --color=tty
alias vi= vim
alias which= alias | /usr/bin/which --tty-only --readalias--
show-dot --show-tilde
$
Zadanie1.
Stworzyć lokalną zmienną środowiskową z określoną wartością. Wyświetlić wartość tej
zmiennej. W bie\ącej powłoce uruchomić kolejną powłokę, jako proces potomny i dokonać
ponownego sprawdzenia wartości stworzonej zmiennej. Unicestwić bie\ący proces i
ponownie sprawdzić wartość zmiennej.
Zadanie2.
Korzystając z wymienionych poleceń do archiwizacji, kompresji i dekompresji plików
wykonać:
archiwizację plików z bie\ącego katalogu do formatu .tar
kompresję plików do formatu .z
archiwizację plików z bie\ącego katalogu do formatu .tar.z
kompresję plików do formatu gz i tar.gz
kompresję plików do formatów bz2
kompresję plików do formatów tar.bz2
Porównać rozmiary plików .tar, tar.z, gz, tar.gz, bz2, tar,bz2
Zadanie3.
Stworzyć alias dla polecenia ze składnią do kompresji plików do formatu tar.bz2
Zadanie4.
Stworzyć alias dla polecenia ze składnią do kompresji plików do formatu tar.bz2
Zadanie5.
Stworzyć alias dla polecenia znajdującego pliki kończące się .mp3


Wyszukiwarka

Podobne podstrony:
sop 2009 lab04
sop 2009 lab12
sop 2009 lab10
sop 2009 lab03
sop 2009 lab08
sop 2009 lab01
sop 2009 lab11
sop 2009 lab02
sop 2009 lab06
sop 2009 lab07
sop 2009 lab09
2009 2010 rejon
2009 pytania testowe
[W] Badania Operacyjne Zagadnienia transportowe (2009 04 19)
Twilight Saga New Moon 2009 CAM XviD POISON

więcej podobnych podstron