Komendy

alias — komenda służąca do zastępowania poleceń dowolnym ciągiem znaków. Alias bez argumentów wyświetla listę zastąpionych poleceń. Komenda ta jest szczególnie przydatna w przypadku długich lub często stosowanych komend. Alias nie działa w shell’u sh.

> alias

psu     (ps -u kowalski)

> alias dir ls

> dir

Unix.Lab  bin

Jeśli nie wykorzystuje się shell’a csh, to komendę alias można wykorzystać do operacji na komendach wykorzystywanych wcześniej.

> who

kowalski    pts/0       Dec 07 13:25          (pckowal.kt.agh.e)

x           pts/1       Dec 07 14:41          (pcx.kt.agh.edu)

y           pts/2       Dec 07 13:46          (pcy.ds14.agh.)

x           pts/4       Dec 07 14:39          (pcx.kt.agh.edu)

> alias wh !-1

alias wh who

> wh

kowalski    pts/0       Dec 07 13:25          (pckowal.kt.agh.e)

x           pts/1       Dec 07 14:41          (pcx.kt.agh.edu)

y           pts/2       Dec 07 13:46          (pcy.ds14.agh.)

x           pts/4       Dec 07 14:39          (pcx.kt.agh.edu)

Komenda alias nie działa prawidłowo w przypadku potoków, ponieważ może zastąpić tylko jedną komendę.

> ls -go | grep pl

-rw-r--r--   1      25 Nov 17 10:41 nazwa.pliku.txt

> alias pl1 !-1

alias pl1 ls -go | grep pl

> pl1

pl1: Command not found.

 

tar — polecenie służące do archiwizacji plików, łączące podane pliki w jeden, archiwalny plik. Przy wykonywaniu polecenia tar należy określić jego funkcję przy pomocy flagi (c, r, t, u lub x). Znaczenia flag „funkcyjnych”: c kasuje zawartość archiwum i tworzy w jego miejsce nowe, automatycznie uruchamia funkcję „r”; r dodaje plik (pliki) do pliku archiwalnego; t wypisuje zarchiwizowane pliki; u aktualizuje archiwum — dodaje pliki (funkcja r) i aktualizuje zarchiwizowane pliki; x odtwarza zarchiwizowane pliki, przy czym jako argument można wpisać nazwę pliku lub katalogu.

Poza tym można wykorzystać następujące, opcjonalne flagi: f nazwa.pliku obsługuje archiwum z podanego pliku, a nie domyślne; l zmienia właściciela i grupę dla plików na takie, jakie ma wykonujący funkcję tar, oczywiście z funkcją x; v wypisywanie litery wykonywanej funkcji i nazwy przetwarzanego pliku; w żąda potwierdzania wykonywanych operacji. Poniżej przedstawiono pracę z archiwum znajdującym się w pliku „arch”.

> ls

1_sys_uzyt           p_ftp                przyklad.skr

2katalog             petla                przyklad2.txt

cmd                  petla.c              status

cmd2                 pro.c                system.uzytkownik.c

czy_wynik.skr        prog.c               syuz

kolokwia             prog2                val

nazwa.pliku.txt      przyklad             val1

> tar -c -f ~/Unix.Lab/arch *

> ls -go arch

-rw-r--r--   1  317440 Dec 08 15:33 arch

> tar -tf arch | more

1_sys_uzyt

2katalog/

2katalog/d

2katalog/e

...

val

val1

> > tar -xvf arch

x 1_sys_uzyt, 4603 bytes, 9 media blocks.

...

x val, 51 bytes, 1 media blocks.

x val1, 47 bytes, 1 media blocks.

 


find — służy do szukania plików wg określonego wzorca z możliwością wykonywania określonych poleceń na znalezionych plikach. Komenda find pozwala na:

·         szukanie pliku na podstawie nazwy (możliwe jest stosowanie znaków globalnych, ale nazwę pliku należy umieścić w apostrofach - przykład): find –name,

·         szukanie pliku na podstawie praw dostępu: find -perm,

·         szukanie pliku należącego do użytkownika: find -user,

·         szukanie pliku należącego do użytkownika w określonej grupie: find -group,

·         szukanie pliku określonego typu (katalogu d, znakowego c, zwykłego f itd.): find -type,

·         szukanie pliku o określonym rozmiarze: find –size liczba[c], przy czym jeśli wpisana zostanie opcjonalna flaga c, to rozmiar jest liczony w bajtach, w innym przypadku — jest liczony w blokach (po 512 bajtów)

·         szukanie pliku na podstawie czasu:

§         find –atime k, jeżeli szukany plik był używany k dni wcześniej,

§         find –mtime k, jeżeli szukany plik był modyfikowany k dni wcześniej,

§         find –newer nazwa.pliku, jeżeli szukany plik był modyfikowany później niż plik „nazwa.pliku”,

§         find –ctime k, jeżeli i-node był modyfikowany k dni wcześniej,

·         wypisywanie nazwy pliku: find -print,

·         wykonywanie poleceń shell’a:

§         find –exec komenda \, przy czym znak {} oznacza każdy znaleziony, bieżący plik, zaś polecenie musi być zakończone znakami „\;”,

§         find –ok komenda \, znak {} oznacza każdy znaleziony, bieżący plik, polecenie musi być zakończone znakami „\;”, a shell żąda potwierdzenia gdy ma wykonać polecenie.

Proszę zwrócić uwagę na przykład poniżej. Rezultaty działania polecenia są w obu przypadkach takie same, pomimo, że pliki start i kończące się na „.c” istnieją, a plik start1 nie. Problem ten można rozwiązać przez łączenie kryteriów i poleceń komendy find.

> ls -go ./kolokwia/start

-rwx------   1      15 Dec 02 09:41 ./kolokwia/start

> find . -name start

> find . -name start1

> find . -name '*.c'

>

Wyżej wymienione kryteria poszukiwania i polecenia komendy find mogą być łączone za pomocą operatorów logicznych. Domyślnym operatorem jest suma logiczna (-a), poza tym można wykorzystywać negację (!) i alternatywę (-o). Poprzedni przykład wygląda wtedy następująco:

> find . –name start -print

./kolokwia/start

> find . –name start1 -print

>

Wykorzystanie negacji i alternatywy:

> find . ! -newer ./cmd -print

./cmd

./prog.c

>

> find . ! -newer ./cmd -print -o -name start -print

./cmd

./prog.c

./kolokwia/start

Proszę zwrócić uwagę, że w drugim poleceniu nie zostaną wypisane wszystkie znalezione pliki, jeżeli jego składnia będzie następująca: find . ! –newer ./cmd –o –name start –print.

Uwaga: w przypadku, gdy zażąda się wykonania większej liczby komend, to wykonywane są one po kolei — od lewej do prawej. Ma to znaczenie zwłaszcza w przypadku poleceń, które są zawsze wykonywane (print, exec itp.). Na przykład:

> find . –exec ls –go {} \; -name start | more

total 816

-rwxr-xr-x   1    4603 Nov 09 14:15 1_sys_uzyt

drwx—S---   3     512 Dec 01 15:04 2katalog

-rw-r—r--   1  317440 Dec 08 17:08 arch

...

-rwxr—r--   1      40 Nov 18 13:06 ./przykład.skr

>

Powyższe polecenie powinno wyglądać tak:

> find . –name start –exec ls –go {} \; | more

-rwx------   1      15 Dec 02 09:41 ./kolokwia/start

>

 


„Pazurki”

Po lewej stronie klawiatury, pod znakiem ESC, znajduje się klawisz ze znakami tyldy i tzw. „pazurkami” — odwrotnym apostrofem. Poniższe przykłady przedstawiają wykorzystanie „pazurków” (``).

> cat `ls *.skr`

#!/bin/sh

STATUS=ok

...

nohup bc < val > wynik &

>

> cat spis

3katalog b c d e pliki spis

> rm `cat spis`

rm: 0653-603 Cannot remove directory 3katalog.

> ls

3katalog

>

> ls

3katalog  a         aa        b         c

> rm `find . –name a* -print`

> ls

3katalog  b         c

Uwaga: w ostatnim przykładzie użycie polecenia rm `find . -name a` jest błędne, ponieważ find nie zwróci żadnych nazw plików do polecenia rm.

Ostatnie polecenie równoważne innej komendzie Unix’a. Proszę podać jej postać.