Principali comandi del Sistema
Operativo Unix
•
•
•
•
Christian: The Unix Operating System
Redivo – Zaglia: Unix
Bourne: The Unix System
Quartiroli – Fusaro – Smareglia: Unix
1
Uso del manuale in linea
$> man who
WHO (1)
USER COMMANDS WHO (1)
NAME
who – who is logged in on the system
SYNOPSIS:
who [ who-file ] [ am i ]
DESCRIPTION:
...............
2
Uso del manuale in linea
$> apropos who
who
whoami
w
- who's logged in
- display current user
- what everyone is doing
$> apropos logged
logname
w
-get the name you are using
- what everyone is doing
3
Il file system delle macchine
Unix per la didattica
/
bin
lib
home
docenti
tecnici
labgroup
...
usr
local
studenti
st343920
...
tesisti
st375409
4
Come muoversi nel File System
$> pwd
/* path to current directory */
/usr/home/studenti/st93302
$> cd mydir
/* change directory */
$> pwd
/usr/home/studenti/st93302/mydir
5
Come muoversi nel File System
$> cd /usr/home/studenti
$> pwd
/usr/home/studenti
/* change dir with */
/* with absolute path */
$> cd st93302/mydir
/* change dir with */
$> pwd
/* with relative path */
/usr/home/studenti/st93302/mydir
$> cd
/* change to home directory */
6
Come muoversi nel File System
$> pwd
/usr/home/studenti/st93302
$> cd ..
/* change to parent directory */
$> pwd
/usr/home/studenti
$> pwd
/usr/home/studenti/st93302
$> cd .
/* . is the current directory */
$> pwd
/usr/home/studenti/st93302
7
Manipolazione dei file
$> ls
pippo
/* list current directory */
pluto
program.c
$> ls /usr/home /* list specified directory */
docenti
studenti tecnici
tesisti
/usr/home/studenti
$> ls -l
/* list protections, owner and size */
-rw-r--r--r-xr-xr-x
st30221 lab01 125 Nov 12 13:15 pippo.c
st30221 lab01 670 Nov 11 10:10 pluto.c
8
Manipolazione dei file
$> ls -la
/* list also current and parent dir */
-rw-r--r--rw-r--r--rw-r--r--r-xr-xr-x
st30221
st30221
st30221
st30221
lab01
lab01
lab01
lab01
81
75
125
670
Oct 10 23:05 .
Oct 10 09:12 ..
Nov 12 13:15 pippo.c
Nov 11 10:10 pluto.c
9
Manipolazione dei file
$> cat pippo.c
/* show content of file */
#include <stdio.h>
main()
int i1 = 0;
char c1,c2;
...
....
$> more pippo.c /* show content of file in pages
use "space" or "enter" to advance */
10
Manipolazione dei file
$> cp pluto pippo
/* copy pluto onto pippo */
/* old pluto – if any – is lost */
$> mv pluto pippo
/* change name of pluto */
/* old pippo – if any – is lost */
$> rm pluto pippo
/* remove specified files */
$> mkdir new-dir
/* make new directory */
11
Manipolazione dei file
$> rmdir new-dir
/* remove new-dir */
/* only if empty */
$> rm –r new-dir
/* recursively remove */
/* new-dir */
$> wc file /* counts lines words, chars in file */
$> wc -l file
/* counts lines in file */
12
Manipolazione dei file
$> diff f1 f2
/* lists diffs between f1 and f2 */
$> grep STR file(s)
$> file prog.c
prova.c :
/* search STR in file(s) */
/* file type */
c program text
$>find DIR -name FILE -print /* search FILE */
/* in DIR recursively */
13
Manipolazione dei file
$>find DIR -name "*STR*" -print
/* search for file names containing STR */
/* in DIR recursively */
$> du
/* disk usage (in blocks) */
14
Protezione dei file in Unix
Tre tipi di protezione:
– lettura: r
– scrittura: w
– esecuzione: x
Tre livelli di protezione:
–
–
–
–
utente: u
gruppo: g
gli altri: o
utente + gruppo + gli altri: a
15
Protezione dei file in Unix
$> ls -l pippo
-rw-r--r--
st30221 ... ... ... pippo
$> chmod u+x pippo /* allows execution to owner */
$> ls -l pippo
-rwxr--r--
st30221 ... ... ... pippo
16
Protezione dei file in Unix
$> ls -l pippo
-rwxr-----
st30221 ... ... ... pippo
$> chmod go+rx pippo /* allows read and execution to */
/* group and others */
$> ls -l pippo
-rwxr-xr-x
st30221 ... ... ... pippo
17
Protezione dei file in Unix
$> ls -l new-dir
drwxrwxrwx
st30221 ... ... ... new-dir
$> chmod a-rw new-dir /* forbids read and write */
/* to everyone */
$> ls -l new-dir
d--x--x--x
st30221 ... ... ... new-dir
18
cambiamento di appartenenza dei
file in Unix
$> ls -l
-rw-r--r--
st30221 lab01 125 Nov 12 13:15 pippo.c
-r-xr-xr-x
st30221 lab01 670 Nov 11 10:10 pluto.c
$> chown st96932 pippo.c /*change owner of file */
$> ls -l
-rw-r--r--
st96932 lab01 125 Nov 12 13:15 pippo.c
-r-xr-xr-x
st30221 lab01 670 Nov 11 10:10 pluto.c
19
Gestione dei processi in Unix
$> ps
/* show Process Status of terminal */
PID TT
STAT
TIME
COMMAND
1418 p0
S
0:01
-csh (csh)
1423p0
R
0:00
ps
$> ps agx /*shows all processes */
$> ctrl-C /* kills a running process */
$> ctrl-Z /* suspends a running process */
20
Foreground e Background
Normalmente, quando lanciate un comando o un
eseguibile, il controllo del terminale (il prompt)
ritorna solo alla terminazione del processo
corrispondente:
myprompt> sleep 10; echo "ciao!"
/* waits 10 seconds */
... for 10 seconds nothing happens ...
... no other commands can be run until 10 sec. expire
ciao!
myprompt>
Questa e' l'esecuzione dei processi in foreground
21
Foreground e Background
Tuttavia e' possibile lanciare un comando o un
programma, e mentre il processo relativo e' in
esecuzione eseguire altri comandi/programmi
myprompt> sleep 10; echo "ciao!" & /* waits 10 seconds *
myprompt> date
Mon Nov 12 16:31:13 2001
myprompt> cp pippo pluto
myprompt> ...
/* and 10 seconds later: */
ciao!
Questa e' l'esecuzione dei processi in background
22
Foreground e Background
$> ctrl-Z /* suspends a foreground running
process */
$> fg
/* resume in foreground a suspended
process */
$> bg
/* resume in background a suspended
process */
$> jobs
/* shows background processes */
23
Uccisione di un processo in Unix
$> ps
/* show Process Status of terminal */
PID TT
STAT
TIME
COMMAND
1418 p0
S
0:01
-csh (csh)
1419 p0
R
0:50
a.out
1234 p0
R
0:00
ps
$> kill 1419
/* kill the specified process */
$> kill -9 1419 /* 1419 cannot ignore kill */
SIGKILL
24
Alcuni metacaratteri C-Shell
$> !!
/* re-executes last issued command */
$> !w /* re-executes last command starting
with "w" */
$> ls *.c
/* asterisk = subsitute for everything */
$> ls > pippo
/* output redirection */
$> cat pippo
prova.c
prog.c
25
Alcuni metacaratteri C-Shell
\METACHAR
/* escape for METACHARS */
$> cp pippo <>
/* error of redirection */
$> cp pippo \<\>
/* creates a file called <> */
26
File speciali C-Shell
.login
/* configures login session */
.cshrc
/* set aliases, seraching paths, ... */
alias ll "ls -l"
/* renames "ls -l" as ll */
$> source .cshrc /* re-read .cshrc – useful if searching
paths are changed */
27
File speciali C-Shell
.history
/* remembers last issued commands */
$> history [n]
/* shows last n issued commands */
41 ls
42 date
43 vi pippo.c
44 lpr pippo.c
45 pwd
$> !44
/* re-issues command n. 44 */
lpr pippo.c
28
File speciali C-Shell
$> history [n]
/* shows last n issued commands */
41 ls mydir
42 date
43 vi pippo.c
$> !ls
/* re-issues last "ls" command */
ls mydir
$> cd !$
/* !$ is the last arg. of previous command */
cd mydir
29
Text editor "vi"
• Per scrivere un file in Unix potete usare uno degli
editor disponibili: "pico", "gvi", "vi".
• pico e gvi sono editor moderni, in cui potete
manipolare il testo usando mouse e frecce. gvi accetta
anche tutti i comandi di vi.
• vi e' l'editor di default in Unix. E' difficile da usare,
perche' e' stato sviluppato quando non esistevano le
moderne interfacce grafiche, e il mouse non era ancora
stato inventato.
• vi e' molto potente, e i suoi comandi possono persino
essere messi in un file ed eseguiti separatamente. 30
Text editor "vi"
• In vi esistono due modalita':
• COMANDO, usata per spostarsi nel testo,
cancellare, duplicare, sostituire, cercare, etc.
• INSERZIONE, per inserire testo.
• Si passa da una modalita' all'altra con opportuni
comandi
$> vi prova.c
/* creates or open prova.c */
quando editate un file, inizialmente siete in modalita'
COMANDO
31
Text editor "vi"
MODO "COMANDO": come uscire dall'editor
:wq
/* quit editor saving changes */
ZZ
/* quit editor saving changes */
:w
/* save changes without quitting */
:q
/* quit editor without saving changes */
:q!
/* quit editor without saving changes */
32
Text editor "vi"
MODO "COMANDO": come spostarsi nel file
h
/* moves left of one character */
l
/* moves right of one character */
j
/* moves down of one line */
k
/* moves up of one line */
ctrl-U
/* moves up of a few lines */
ctrl-D
/* moves down of a few lines */
G
/* goes to the end of file */
nG
/* goes to line number n of file */
33
Text editor "vi"
MODO "COMANDO": come cancellare
x
/* deletes current character */
dd
/* deletes current line */
dw
/* deletes current word */
nx
/* deletes n chars from cursor to the right */
ndd
/* deletes n lines downward */
ndw
/* deletes n words from cursor to the right */
34
Text editor "vi"
MODO "COMANDO": altri comandi utili
rx
/* replaces current char with char x */
.
/* repeats last command */
u
/* undo last command */
/string
/* searches first occurence of string in file
downward */
?string
/* searches first occurence of string in file
upward */
n
/* after a search command, repeats search */
35
Text editor "vi"
MODO "COMANDO": altri comandi utili
nyy
/* copies n lines in a local buffer. Useful to
copy lines in different parts of the text */
p
/* puts content of buffer starting at the cursor
position */
il comando "p" puo' essere usato per inserire il contenuto
del buffer locale del vi. Questo buffer viene riempito
non solo dal comando "yy", ma anche, ogni qual volta
si usa un comando di cancellazione, con la parte di
testo cancellata. Cosi' e' possibile spostare porzioni di
testo da una parte all'altra del file.
36
Text editor "vi"
MODO "COMANDO": altri comandi utili
%
/* if cursor is on a parenthesis, it goes to the
corresponding balancing parenthesis */
"%" e' utile quando si scrivono programmi in C per
controllare il bilanciamento delle parentesi dei costrutti
:s/OLD/NEW/g
/* replaces every occurence of OLD
string with NEW string in file */
mLETTER
/* mark the current line with LETTER */
:'a,'bw FILE
/* writes the part of file between the two
marker letters "a" and "b" in a new FILE */
37
Text editor "vi"
MODO "COMANDO": altri comandi utili
:r FILENAME
/* insert the content of FILENAME in
the current file starting at cursor position */
:set number
/* sets line numbering of file */
:set nonumber
/* removes line numbering of file */
38
Text editor "vi"
passaggio dal modo "COMANDO"al modo "INSERZIONE"
i
/* to insert text from the cursor position */
a
/* to append text from char next to cursor position.
Useful to append text at the end of lines */
o
/* open a new line for text insertion below the cursor */
O /* open a new line for text insertion above the cursor */
s
/* substitutes current char with new text */
ns /* substitutes n chars from cursor with new text */
cw /* change word */
39
Text editor "vi"
passaggio dal modo "INSERZIONE"al modo "COMANDO"
<esc>
In ogni momento, per passare dalla modalita' INSERZIONE
a quella di comando, basta digitare il tasto ESCAPE.
40
Uso del compilatore C
$> gcc file.c
/* creates an executable program called
a.out */
$>a.out
/* runs a.out */
$> gcc file.c -o myprogram /* creates an executable called
myprogram */
41
Scarica

document