powrót

Ćwiczenia 2

ssh

[Secure SHell]
$ ssh <login>@<host> [<nazwa polecenia>]

Przykład:

$ mkdir test
$ cd test
$ ssh s123456@students.wmi.amu.edu.pl
$ exit
$ ssh s123456@students.wmi.amu.edu.pl ls

vim

[VI iMproved]
$ vim <plik>
normal
	p
insert
	[CTRL+p]
replace
visual
	x
	y
	p
command-line :
	w
	q
	wq
	q!

Konfiguracja

Załóż pllik o nazwie .vimrc w katalogu ~ o treści
syntax on
set tabstop=4
set number

od

$ od
-A
n
o
d
x
-t
a
c
o
d
u
f
x

Przykład:

Tworzymy plik o nazwie plik i treści abcdef
$ od plik
0000000	061141 062143 063145 000012
0000007
$ od -t a plik
0000000	a	b	c	d	e	f	nl
0000007
$ od -t ax plik
0000000	a	b	c	d	e	f	nl
			 64636261			000a6665
0000007
$ od -t axo plik
0000000	a	b	c	d	e	f	nl
			64636261			000a6665
			14430661141			00002463145
0000007
$ od -t axo -A n plik
a	b	c	d	e	f	nl
		64636261			000a6665
		14430661141			00002463145

cp

[CoPy]
$ cp <źródło> <cel>

Przełączniki

-r

Ćwiczenie:

mv

[MoVe]
$ mv <stara nazwa> <nowa nazwa>

Ćwiczenie:

rm

[ReMove]
$ rm <nazwa pliku>

Przełączniki

-r

Ćwiczenie:

Wzorce uogólnione nazw plików i katalogów

Przykład:

[A-Z][A-Z][A-Z][0-9][0-9][0-9][0-9][0-9][0-9]

Ćwiczenie:

Tworzymy pliki a b ab abcd bbdd które pliki zostaną przekopiowane poleceniem

  1. $ cp ? ~
  2. $ cp b* ~
  3. $ cp *b* ~
  4. $ cp *b?* ~
  5. $ cp ?b?d ~
  6. $ cp a* ~
  7. $ cp a? ~

Wyszukiwanie plików

find

$ find <katalog> <kryteria>

Kryteria:

-name <nazwa>
-iname <nazwa> #nie rozrużnia wielkości liter
-size [+|-]<rozmiar><jednostka> c k w #brak to 512B
-atime [+|-]<dni>	#wykonana operacja
-mtime [+|-]<dni>	#wykonana modyfikacja
-ctime [+|-]<dni>	#i-węzeł modyfikowany
-type <typ>
	f	zwykłe
	d	katalogi
	l	dowiązania symboliczne
	c	urządzenia znakowe
	b	urządzenia blokowe
	p	kolejki FIFO
-exec <polecenie> [{}] \;	#wykonuje polecenie na znalezionym pliku

Przykłady:

  1. $ find ~ -name abc.txt
  2. $ find ~/temp -name "*.txt"
  3. $ find ~ -iname "*.txt" -type f -size +100k
  4. $ find /tmp -type f -atime +2 -exec rm {} \; -print

Ćwiczenia:

  1. Korzystając z programu find znajdź wszystkie pliki, które posiadają w nazwie słowo mozilla i znajdują się w podkatalogach katalogu /usr.
  2. Korzystając z programu find znajdź wszystkie katalogi o nazwie bin, które znajdują się w katalogu /usr.
  3. Skopiuj wszystkie pliki zwykłe o rozmiarze pomiędzy 10 a 100 bajtów z katalogu /usr/bin do katalogu kat1/kat2 (wykorzystaj polecenie find z parametrem -exec).

Prawa dostępu

drwxr--r--
[Read][4]
[Write][2]
[eXecute][1]

Czynność prawa do pliku prawa do katalogu
ls --- r--
touch --- -wx
mv --- -wx
rm --- -wx
less r-- --x
vim -w- --x
wykonanie --x --x

d|rwx|r--|r--
[User]
[Group]
[Other]
[All]

chmod

[CHangeMODe]
$ chmod [rwx][+-=][ugoa] <nazwa pliku>

Przykład:

  1. $ chmod u+w plik.txt
  2. $ chmod go-x plik.txt
  3. $ chmod a=r plik.txt

Notacja cyfrowa

Przykład:

  1. $ chmod 777 plik.txt
  2. $ chmod 742 plik.txt

Ćwiczenia:

  1. W katalogu domowym utwórz plik o nazwie plik.txt - sprawdź jakie są prawa dostępu do niego.
  2. Dla pliku plik.txt dodaj prawo zapisu dla grupy.
  3. Dla pliku plik.txt odejmij prawo zapisu dla właściciela.
  4. Dla pliku plik.txt dodaj prawo wykonywania dla wszystkich użytkowników.
  5. Dla pliku plik.txt przywróć oryginalne prawa korzystając z notacji numerycznej.

umask

[User MASK]
$ umask <mode>

Przełączniki:

-S

Ćwiczenie:

$ umask 111

chown

[CHange OWNer]
$ chown <nowa nazwa użytkownika> <plik>

chgrp

[CHange GRouP]
$ chgrp <nowa nazwa grupy> <plik>

Dowiązania

ln

[LiNk]
$ ln <plik> <nazwa dowiązania>

Przełączniki:

-s

Ćwiczenia:

  1. Utwórz dowiązanie do pliku plik.txt o nazwie plik2.txt w katalogu domowym.
  2. Utwórz dowiązanie symboliczne do katalogu kat1/kat2 o nazwie abc w katalogu domowym.

Procesy

ps

[ProceSses]
$ ps

Przełączniki

-f
-l
-e

Przykłady:

$ ps
  PID TTY          TIME CMD
 6833 pts/10   00:00:00 bash
 9804 pts/10   00:00:00 ps
 
$ ps -f
UID        PID  PPID  C STIME TTY          TIME CMD
s123456   6833  6832  0 20:09 pts/10   00:00:00 -bash
s123456   9928  6833  0 20:40 pts/10   00:00:00 ps -f

$ ps -l
F S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
0 S  6368  6833  6832  0  84   4 -  5658 -      pts/10   00:00:00 bash
0 R  6368 11587  6833  0  84   4 -  2326 -      pts/10   00:00:00 ps

kill

$ kill -<numer sygnału> <PID>

Przełączniki

-<numer sygnału>
-<stała sygnału>

Przykłady:

$ kill -KILL 123
$ man 7 signal

Ćwiczenia:

Uruchom sesję edytora vim i wysyłaj komendą kill kolejne sygnały do tego procesu. Użyj sygnałów: HUP, INT, TERM, QUIT, KILL, STOP, CONT.

time

$ time <polecenie>

Przykłady:

$ time ls /home/students/
$ time ls

sleep

$ sleep 60

&

$ sleep 60 &

[CTRL+z]

Przykład:

$ sleep 60
[CTRL+z]
$ sleep 50
[CTRL+z]

jobs

$ jobs

Przykład:

$ jobs
[1]-  Stopped                 sleep 60
[2]+  Stopped                 sleep 50

bg

[Back Ground]
$ bg <numer polecenia>

Przykład:

$ bg 1
[1]- sleep 60 &

fg

[Fore Ground]
$ fg <numer polecenia>

Przykład:

$ fg 2
sleep 50

cmp

[CoMPare]
$ cmp <plik1> <plik2>

Przełączniki:

-c
-l
-i <n>

Przykład:

Tworzymy pliki
p1 o treści aaaa
p2 o treści aabc
$ cmp p1 p2
$ cmp -c p1 p2
$ cmp -l p1 p2
$ cmp -i 1 p1 p2

diff

[DIFFerence]
$ diff <plik1> <plik2>

Przełączniki:

-u

Przykład:

Ściągamy pliki: p1 p2 poleceniem:
$ wget "http://zurowski.faculty.wmi.amu.edu.pl/dydaktyka/zima-2014/SOP/p1" "http://zurowski.faculty.wmi.amu.edu.pl/dydaktyka/zima-2014/SOP/p2"
$ diff p1 p2
$ diff -u p1 p2

Przekierowanie strumieni

cat

$ cat
[CTRL+d]

stdin

[STanDard INput]
< <plik>
<< <napis>

stdout

[STanDard OUTput]
> <plik>
>> <plik>

stderr

[STanDard ERRor]
2> <plik>
2>> <plik>

Przykład:

  1. $ cat > plik.txt Ala ma kota. ^D
  2. $ cat < plik.txt Ala ma kota.
  3. $ cat >> plik.txt Kot ma Ale. ^D
  4. $ cat << przerwa > Ala ma kota > Kot ma Ale > przerwa Ala ma kota Kot ma Ale.