+++
title = "Linux and shell"
outputs = ["Reveal"]
+++

### intro su sistemi operativi

- cosa sono?
- che fanno?


----

### software libero, kernel, distro.

- [Software Libero](https://it.wikipedia.org/wiki/Software_libero)
- [Distribuzioni](https://it.wikipedia.org/wiki/Distribuzione_Linux)

----

### Come si installa un OS? BOOT

---

| Marca | Tasto |
|-------|-------|
|  Acer	|  F12, F9, F2, Esc |
|  Apple	|  Option |
  Asus	|  Esc
  Dell	|  F12
  HP	    |   F9
  Huawei	| F12
  Lenovo	| F12
  others…	| F12, Esc

----

### metodi di interazione, UI, GUI, CLI 

Quando ci relazioniamo agli strumenti c'e' un linguaggio che usiamo per interagire con loro, questo modo di relazionarsi è la <u>User Interface</u>: permette alle persone (user) di interfacciarsi ai computer.
[link](https://techlearningcollective.com/foundations/command-line-basics/commands-versus-buttons)

----

### GUI 
punta e clicca, pochissima espressività.

nelle gui devi manipolare gli oggetti a cui vuoi riferirti puntandoli direttamente, fisicamente.
siamo obbligati ad usare un dito, il puntatore. inoltre non puoi accedere a cio' che non e' mostrato.
se non si vede non puoi manipolarlo.

----
### CLI

Tutta l'espressività e la potenza di un linguaggio naturale!

{{% note %}}
- esempio del ristorante, scelta del menu.
- come si descrivono le operazioni, nella gui ci si mette un sacco a scrivere e a ripetere
- per la cli e' autoesplicativo quando si conosce il linguaggio, non c'e' ambiguita' e' deterministico

{{% /note %}}

----

### CLI base

- tutto imperativo, si chiama command line appunto
- ogni comando finisce con un invio
- spesso i comandi necessitano argomenti

----

### Iniziamo

```
ls
```

[link](https://techlearningcollective.com/foundations/linux-journey/the-shell)

----

### Attributi

```
ls --help
ls --all
ls -t
```

----

### Argomenti

```
ls Musica
```

----

### Autocompletamento

Usa il TAB!

----

#### Help

```
man ls
```

----

### echo

```
echo ciao
```

----

### che giorno è

```
???? 
```

----

### Filesystem

```
pwd
cd .
cd ..
cd ~
cd -
cd dir
```

----

### Files

```
less
cat
```

----

### History

su e giù

```
history
```
ctrl+r

---

#### Ancora files e dirs

```
cp
mv
rm
tree
mkdir
```

----

#### Cercare

```
find
grep
```

----

#### Redirect

```
echo 120g zucchero > ricetta_tiramisu.txt
```
la \> è una redirezione, ci permette di cambiare dove finisce l'output

----

#### Redirect II

```
echo 120g zucchero >> ricetta_tiramisu.txt
```

----

#### PIPE

```
grep
sort
wc
tail
head
```