Tema Libero

LINUX, microcorso

« Older   Newer »
  Share  
vic vega
view post Posted on 15/3/2007, 01:48 by: vic vega     +1   -1

viaggiare o stare fermi è solo un'intenzione

Group:
Administrator
Posts:
10,231
Rating:
+1
Location:
una ridente località nella brughiera lombarda

Status:


6. il terminale (1)

a differenza di windows, linux non è primariamente un sistema operativo grafico. la grafica la fa ormai da padrona, ma i paranoici duri e puri lo usano ancora in testuale. senza essere paranoici, è comunque possibile (e spesso consigliato) utilizzare la riga di comando per interagire col sistema, quindi è il caso di conoscere i comandi principali. dove i comandi sono preceduti da "$" significa che possono essere eseguiti da qualunque utente, dove sono preceduti da "#" significa che possono essere eseguiti solo da root (il superutente). ovviamente $ e # non dovranno essere digitati, sono semplicemente simboli convenzionali che il terminale mostra a seconda del tipo di utente attivo. i comandi devono essere digitati rispettando maiuscole e minuscole (e spazi e trattini), linux è case sensitive.

6a. ls

aprendo una finestra di terminale e digitando il comando ls seguito da un percorso, si otterrà il contenuto della directory. quindi

CODICE
$ ls /home/pippo


produrrà come output a video il contenuto della home dell'utente pippo.

ha alcune opzioni importanti:

ls -l dà un elenco dettagliato (con permessi, proprietari, date di creazione, dimensione)
ls -F visualizza informazioni sul tipo di file
ls -a visualizza anche i file nascosti
ls -lh estende ls -l, nel senso che la dimensione dei file viene data in unità comprensibili (h sta per human-readable)

come mostra l'ultimo esempio, più opzioni possono essere concatenate.

6b. cp

il comando cp effettua la copia di un file.

nella forma

CODICE
$ cp file1 file2


copia il contenuto di file1 in file2 (in pratica esegue una copia di file1 intitolata file2).

nella forma

CODICE
$ cp file1 /directory


copia file1 nella cartella /directory.

è possibile fare quest'operazione su più file:

CODICE
$ cp file1 file2 /directory


ovviamente se file1 sta in una directory diversa da quella attuale bisognerà farlo sapere al terminale...

CODICE
$ cp /percorso/di/file1 /directory


opzioni importanti di cp sono:

cp -l crea un link fisico al file
cp -s crea un link simbolico al file
cp -f forza la copiatura
cp -r o cp -R copia le directory in modo ricorsivo (cioè copia anche le sottodirectory e così via)
cp -u copia il file solo quando il file sorgente è più recente della copia (u sta per update)

qualche parola su link fisici e simbolici: un link fisico è un vero e proprio file che occupa un suo spazio sul filesystem, mentre un link simbolico è un rimando al file linkato, ma per il filesystem non esiste. bisogna abituarsi a questi "fantasmi" di linux...

6c. mv

se cp copia, mv sposta. in pratica ha la funzione del taglia-incolla. può anche servire a rinominare un file.

in pratica

CODICE
$ mv file1 file2


rinomina file 1 in file2, mentre

CODICE
$ mv file1 /directory


sposta file1 in /directory.

per il resto vale quanto detto per cp.

le opzioni principali sono:

mv -f forza lo spostamento (o la rinominazione)
mv -u come cp -u, ma sposta il file invece di copiarlo.

6d. touch

il comando touch crea un nuovo file col nome indicato.

CODICE
$ touch nuovofile


creerà un file chiamato nuovofile. se nuovofile esiste già, non lo cambierà, se non nella marcatura temporale (in pratica gli cambia la data che compare usando ls -l).

6e. echo

echo stampa sull'output standard gli argomenti che gli vengono passati. dato che in genere l'output standard è il terminale stesso, il comando

CODICE
$ echo ciao alunni


stamperà a video "ciao alunni" (senza virgolette).

un'opzione molto importante (più che altro se si devono scrivere shell scripts che diano messaggi a video) è:

echo -e abilita le scorciatoie inizianti col carattere \

le principali sono:
\n stampa una linea vuota (insomma, va a capo)
\\ stampa il carattere \
\h tabulatore
\0nnn stampa il carattere che ha codice ascii nnn

6f. cd

il comando cdcambia la directory in cui ci si trova.

con

CODICE
$ cd /directory


ci si sposta nella directory /directory

se si è già in una directory diversa dalla home, digitando

CODICE
$ cd


senza argomenti si torna alla home.

digitando

CODICE
$ cd ..


si torna alla directory gerarchicamente superiore (ovvero, se si è in /dir1/dir2, quel comando ci porterà in /dir1). a differenza del prompt di msdos, che accetta anche la sintassi cd.. (senza spazio), in linux lo spazio è obbligatorio.

con il comando

CODICE
$ cd ../dir3


si arriva nella directory /dir3, che a sua volta è una sottodirectory della stessa directory di cui è sottodirectory quella in cui siamo. è più semplice di quello che sembra: abbiamo una directory /dir1 che ha le sottodirectory /dir1/dir2 e /dir1/dir3; se noi siamo in /dir1/dir2, quel comando ci porta in /dir1/dir3.

attenzione! potreste dover usare il comando

CODICE
$ cd ./dir3


(anzi, è molto molto frequente l'uso di questo comando...).

notate bene: prima della barra c'è un solo puntino (non due come nel caso di prima). il puntino indica la directory corrente, quindi, con un albero delle directory strutturato come nell'esempio precedente, questo comando avrà effetto solo se vi trovate in /dir1.

6g. mkdir

col comando mkdir si crea una nuova directory.

in pratica

CODICE
$ mkdir nuovadirectory


crea la directory /nuovadirectory come sottodirectory di quella in cui ci si trova.

6h. whoami

whoami è un comando apparentemente privo di senso, ma può tornare utile negli shell script.

digitando

CODICE
$ whoami


otterrete come risposta il nome dell'utente che si è loggato (e salvo casi di schizofrenia dovreste saperlo...)

6i. pwd

pwd è un altro comando più da script che da uso quotidiano.

digitando

CODICE
$ pwd


otterrete come risultato la stampa a video della directory in cui vi trovate.

whoami e pwd sono poco utili anche perchè il prompt del terminale generalmente inizia con una stringa tipo

CODICE
utente@dominio:directory$


oppure

CODICE
root@dominio:directory#


utente è l'utente loggato nel terminale (potrebbe essere diverso da quello loggato nella sessione)
dominio è il nome assegnato alla macchina (se non è stato settato, il default è localhost)
directory di default è la home dell'utente che ha aperto la sessione (non per forza di quello loggato), indicata con una tilde (~).
l'apparenza dell'"indirizzo" può variare lievemente da distribuzione a distribuzione, ma le informazioni sono quelle.

6j. df

df indica lo spazio disco utilizzato.

usato nella forma

CODICE
$ df


indica lo spazio occupato su tutti i filesystem montati, mentre nella forma

CODICE
$ df /dev/hda1


indica lo spazio utilizzato sulla partizione /dev/hda1 (o su qualunque altra, modulando l'argomento secondo necessità).

opzioni importanti sono:

df -h esprime lo spazio occupato 8e quello libero) in unità leggibili
df -T indica anche il tipo di filesystem con cui il singolo disco è formattato.

6k. su

su è un comando in via di estinzione, per via dell'introduzione del ben più potente sudo (del quale parlerò più avanti).

se siete l'utente pippo, digitando

CODICE
$ su topolino


vi loggherete nel terminale come utente topolino (solo nel terminale, però!).

se invece siete un qualunque utente normale e digitate

CODICE
$ su


senza argomenti, diventertete root.

ah, ovviamente su vi chiederà la password dell'utente che volete impersonare...

6l. file

file vi dà informazioni del formato del file argomento
per esempio, lanciando questo comando

CODICE
$ file Schermata.png


su un file della mia home, ho ottenuto come risultato

CODICE
Schermata.png: PNG image data, 1024 x 768, 8-bit/color RGB, non-interlaced


6m. exit

il comando <b>exit<b> fa quello che sembra debba fare.

se impersonate root e digitate

CODICE
# exit


tornerete ad essere l'utente precedente.

una volta chiusa tutta la catena di impersonificazioni, digitando

CODICE
$ exit


uscirete dal terminale.

Edited by vic vega - 15/3/2007, 12:58
 
Top
95 replies since 21/12/2006, 00:03   1180 views
  Share