rearranged the repository structure

This commit is contained in:
piccihud
2023-05-17 15:24:22 +02:00
parent c203b8305d
commit a38bd885c5
220 changed files with 20 additions and 1231 deletions

View File

@@ -0,0 +1 @@
/home/davide/.config/alacritty/alacritty.yml

0
linux/ansible.md Normal file
View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 103 KiB

BIN
linux/asset/fsh/fsh.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 74 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

136
linux/bash/alias-bash.md Normal file
View File

@@ -0,0 +1,136 @@
# Alias
<!-- vim-markdown-toc GFM -->
* [Creazione di alias in Bash](#creazione-di-alias-in-bash)
* [Creare alias permanenti](#creare-alias-permanenti)
* [Creazione di alias Bash con argomenti (funzioni)](#creazione-di-alias-bash-con-argomenti-funzioni)
* [List all Alias](#list-all-alias)
* [Alias che potrebbero tornare utili](#alias-che-potrebbero-tornare-utili)
* [Collegamenti](#collegamenti)
<!-- vim-markdown-toc -->
In un sistema GNU/Linux è possibile personalizzare la shell impostando degli `alias`, cioè delle scorciatoie per i comandi lunghi utilizzati frequentemente. Ad esempio, digitando il comando
```bash
ls -a --color=auto
```
in un terminale otteniamo l"elenco delle cartelle e dei file (ls), compresi i file nascosti (-a), il tutto reso mediante una colorazione che automaticamente differenzia gli elementi (--color=auto). Con la definizione di un alias per il comando ls si può fare in modo che venga eseguito completo dei parametri senza bisogno di specificarli.
## Creazione di alias in Bash
La creazione di alias in bash è molto semplice. La sintassi è la seguente:
```bash
alias alias_name="command_to_run"
```
Quindi, riprendendo l"esempio precedente:
```bash
alias lsc="ls -a --color=auto"
```
Ora, se si digita il comando `lsc` sulla console, si otterrà lo stesso output che si avrebbe digitando `ls -a --color=auto`.
## Creare alias permanenti
L"alias sarà disponibile solo nella sessione di shell corrente: se si esce dalla sessione o si apre una nuova sessione da un altro terminale, l"alias non sarà utilizzabile.
Per rendere persistente l"alias è necessario dichiararlo nel file `~/.bash_profile` o `~/.bashrc`.
Aprire il file `~/.bashrc` e aggiungere i propri alias:
```bash
nano ~/.bashrc
...
# Aliases
# alias alias_name="command_to_run"
# color ls
alias ll="ls -la"
```
Una volta fatto, salvare e chiudere il file. Per rendere disponibili gli alias nella sessione corrente digitare:
```bash
source ~/.bashrc
```
## Creazione di alias Bash con argomenti (funzioni)
A volte potrebbe essere necessario creare un alias che accetta uno o più argomenti, ecco dove le funzioni bash sono utili.
La sintassi per creare una funzione bash è molto semplice. Possono essere dichiarati in due diversi formati:
```bash
function_name () {
[commands]
}
```
Oppure:
```bash
function function_name {
[commands]
}
```
Per passare un numero qualsiasi di argomenti alla funzione bash, si deve inserirli subito dopo il nome della funzione, separati da uno spazio. I parametri passati sono $1, $2, $3 , ecc, dove il numero indica la posizione del parametro dopo il nome della funzione. La variabile $0 è riservata per il nome della funzione.
Ecco una semplice funzione bash che creerà una directory e poi si sposterà in essa:
```bash
mkcd ()
{
mkdir -p -- "$1" && cd -P -- "$1"
}
```
Come per gli alias, bisogna aggiungere la funzione al file `~/.bashrc` ed eseguire il comando `source ~/.bashrc` per ricaricare il file.
Quindi, invece di utilizzare `mkdir` creare una nuova directory e il comando `cd` spostarsi in quella directory, è possibile digitare:
`mkcd nuova_cartella`
## List all Alias
Per vedere gli alias presenti, basta il seguente comando:
```bash
alias
```
## Alias che potrebbero tornare utili
```bash
## Terminal shortcuts
alias ..="cd ../"
alias ...="cd ../../"
alias ....="cd ../../../"
alias .....="cd ../../../../"
alias ll="ls -alhF --color=auto"
alias lc="ls -l --color=auto"
alias lsd="exa -lha --icons"
alias update="sudo apt update ; sudo apt -y upgrade ; sudo apt -y autoremove ; flatpak upgrade -y; flatpak uninstall --unused -y; sudo pkcon refresh ; sudo pkcon -y update"
alias install="sudo apt install -y"
alias reboot="sudo /sbin/reboot"
alias poweroff="sudo /sbin/poweroff"
alias grep="grep --color=auto"
alias egrep="egrep --color=auto"
## Github shortcuts
alias repo="gh repo create"
alias gi="git init"
alias ga="git add -A"
alias gc="git commit -m"
```
## Collegamenti
- [https://guide.debianizzati.org/index.php/Alias](https://guide.debianizzati.org/index.php/Alias)
- [https://noviello.it/come-creare-alias-bash-su-linux/](https://noviello.it/come-creare-alias-bash-su-linux/)

154
linux/bash/bash_ps1.md Normal file
View File

@@ -0,0 +1,154 @@
# Personalizzare Bash
Il prompt di default della riga comandi di Linux può essere personalizzato facilmente modificando la variabile di ambiente PS1.
`PS1="[stringa]"`
La composizione della stringa nel comando PS1 determina come apparirà il prompt.
## Come visualizzare la stringa del prompt corrente
Pe vedere la configurazione attuale del prompt basta digitare sulla riga comandi
`ECHO $PS1`
Sullo schermo viene visualizzata la stringa corrente, quella che definisce l'aspetto attuale del prompt. Ad esempio:
```bash
echo $PS1
\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$
```
## Le principali opzioni
Le principali opzioni per comporre la stringa sono le seguenti:
- `\d` visualizza la data formato "Giorno-della-settimana Mese Data" ("Tue May 26");
- `\H` visualizza il nome dell'host;
- `\t` visualizza l'ora nel formato a 24 ore ( HH:MM:SS);
- `\A` visualizza l'ora nel formato a 24 ore ( HH:MM );
- `\u` visualizza il nome dell'utente corrente;
- `\w` visualizza il nome della directory corrente o la tilde nel caso della directory $HOME;
- `\$` visualizza il simbolo $ per gli utenti normali o # per l'utente root;
- `\\` visualizza un singolo backslash;
- `\n` il carattere "newline";
- `\r` il carattere "carriage return";
- `\s` il nome della shell, il nome base di $0;
- `\!` il numero cronologico (history number) di questo comando;
- `\[` comuncia una sequenza di caratteri non stampabili, che potrebbero essere usati per inserire una sequenza di controllo del terminale nel prompt;
- `\]` termina la sequenza di caratteri non stampabili.
Si possono anche utilizzare colori, icone e altri elementi grafici utilizzando codici di colore ANSI e icone speciali. Il formato è
`\[\033[CODICE;COLOREm\]`
## Modificare la variabile $PS1
Per modificare la variabile PS1 si può usare il comando
`export PS1="nuova stringa di prompt"`
ad esempio
`export PS1="\u@\h:\w$ "`
visualizzerà il nome dell'utente, il nome del host e la directory corrente.
### Salvare le modifiche
Per rendere permanenti le modifiche alla variabile PS1 si può aggiungere il comando export alla fine del file `.bashrc` presente nella home dell'utente.
```bash
# codici dei colori
DEFAULT="\[\033[0m\]"
RED="\[\033[1;31m\]"
GREEN="\[\033[0;32m\]"
BLUE="\[\033[1;34m\]"
EBLACK="\[\033[1;30m\]"
PURPLE="\[\033[35m\]"
YELLOW="\[\033[1;33m\]"
CYAN="\[\033[1;36m\]"
parse_git_branch() {
git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/\1/'
}
export PS1="$GREEN[\A \d]$CYAN\u$BLUE@\h $DEFAULT(\!):$YELLOW\w $PURPLE\n\$(parse_git_branch)$DEFAULT > "
```
Riavviare il terminale o eseguire il comando `source ~/.bashrc` per rendere effettive le modifiche.
La funzione `parse_git_branch` è una funzione personalizzata che consente di visualizzare il nome della branch corrente del repository git sulla riga di comando.
In particolare:
- `git branch 2> /dev/null`: esegue il comando git branch e reindirizza l'output di errore in `/dev/null`, in modo che non venga visualizzato alcun messaggio di errore se non si è in un repository git;
- `sed -e '/^[^*]/d'`: utilizza sed per eliminare tutte le righe che non iniziano con un asterisco;
- `-e 's/* \(.*\)/\1/'`: utilizza sed per sostituire la riga restante con solo il contenuto dopo l'asterisco (che è il nome della branch corrente).
La funzione utilizzando questi comandi, restituirà solo il nome della branch corrente del repository git.
```bash
[23:05 lun gen 16]davide@laptop (2000):~/Documenti/Appunti.wiki
master >
```
## Come avere una lunghezza indefinita della history
```bash
# for setting history length see HISTSIZE and HISTFILESIZE in bash(1)
HISTSIZE=-1
HISTFILESIZE=-1
```
Basta impostare a `-1` questi valori nel file `.bashrc`.
## Ricerca nella history
Per ricercare aventi e indietro nella cronologia dei comandi, mentre questi vengono digitati, tramite i tasti PAGUP e PAGDOWN, aggiungere il seguente testo nel file `~/.inputrc`:
```bash
"\e[5~": history-search-backward
"\e[6~": history-search-forward
```
I tasti `\e[5` e `\e[6` sono proprio PAGUP e PAGDOWN.
In ogni caso, la pressione dei tasti CTRL+R permette di effettuare la ricerca ricorsiva dei comandi precedentemente digitati.
### Hstr
`hstr` è un comando che aiuta a navigare in maniera più efficace nella history. Per installarlo basta digitare questo semplice comando:
```bash
sudo apt install hstr
```
Ora, con la combinazione `CTRL+r` si accederà alla ricerca dei comandi.
Hstr può essere configurato per fornire suggerimenti di ricerca durante la digitazione, simile ai suggerimenti che vengono visualizzati in genere in un browser Web e in altre applicazioni.
Suggerisce i comandi utilizzati più spesso e li mantiene in cima alla lista. È inoltre possibile aggiungere manualmente i comandi ai preferiti per un accesso facile e veloce.
Aggiungere il testo seguente al file `.bashrc` per la configurazione:
```bash
# HSTR configuration - add this to ~/.bashrc
alias hh=hstr # hh to be alias for hstr
export HSTR_CONFIG=monochromatic # get more colors
shopt -s histappend # append new history items to .bash_history
export HISTCONTROL=ignorespace # leading space hides commands from history
export PROMPT_COMMAND="history -a; history -n; ${PROMPT_COMMAND}"
# if this is interactive shell, then bind hstr to Ctrl-r (for Vi mode check doc)
if [[ $- =~ .*i.* ]]; then bind '"\C-r": "\C-a hstr -- \C-j"'; fi
# if this is interactive shell, then bind 'kill last command' to Ctrl-x k
if [[ $- =~ .*i.* ]]; then bind '"\C-xk": "\C-a hstr -k \C-j"'; fi
```
## Collegamenti
- [https://linuxhint.com/bash-ps1-customization/](https://linuxhint.com/bash-ps1-customization/)
- [http://www.megalab.it/5827/8/come-cambiare-il-prompt-di-bash](http://www.megalab.it/5827/8/come-cambiare-il-prompt-di-bash)
- [http://www.pluto.it/sites/default/files/ildp/HOWTO/Bash-Prompt-HOWTO/Bash-Prompt-HOWTO-2.html](http://www.pluto.it/sites/default/files/ildp/HOWTO/Bash-Prompt-HOWTO/Bash-Prompt-HOWTO-2.html)
- [https://linuxhint.com/hstr-command-history-browser-in-linux/](https://linuxhint.com/hstr-command-history-browser-in-linux/)

1
linux/bash/bashrc Symbolic link
View File

@@ -0,0 +1 @@
/home/davide/.bashrc

1
linux/bash/inputrc Symbolic link
View File

@@ -0,0 +1 @@
/home/davide/.inputrc

154
linux/calcurse.md Normal file
View File

@@ -0,0 +1,154 @@
# Calcurse
Calcurse è un calendario e un'applicazione di pianificazione per la riga di comando. Aiuta a tenere traccia di eventi, appuntamenti e attività quotidiane. Supporta la sincronizzazione tramite protocollo
CalDAV.
Maggiori informazioni: [Calcurse](https://calcurse.org/)
## Installazione
```bash
cd ~
wget -c https://calcurse.org/files/calcurse-4.8.0.tar.gz
```
Quindi procedere coi seguenti comandi:
```bash
tar xvf calcurse-4.8.0.tar.gz
cd calcurse-4.8.0/
# Se non presente, installare la seguente libreria
# sudo apt install install libncursesw5-dev
./configure
make
sudo make install
```
Ora è possibile eseguire il programma:
```bash
calcurse
```
Premendo il tasto `C` si accede alla configurazione.
```bash
cat ~/.calcurse/conf
appearance.calendarview=monthly
appearance.compactpanels=no
appearance.defaultpanel=calendar
appearance.layout=4
appearance.headerline=yes
appearance.eventseparator=yes
appearance.dayseparator=yes
appearance.emptyline=yes
appearance.emptyday=--
appearance.notifybar=yes
appearance.sidebarwidth=3
appearance.theme=magenta on default
appearance.todoview=hide-completed
appearance.headingpos=right-justified
daemon.enable=no
daemon.log=no
format.inputdate=1
format.notifydate=%a %F
format.notifytime=%T
format.outputdate=%D
format.dayheading=%B %e, %Y
general.autogc=no
general.autosave=yes
general.confirmdelete=yes
general.confirmquit=yes
general.firstdayofweek=monday
general.multipledays=yes
general.periodicsave=0
general.systemevents=yes
notification.command=printf '\a'
notification.notifyall=flagged-only
notification.warning=300
format.appointmenttime=%H:%M
```
## Configurazione
```bash
cd ~
calcurse -C .calcurse/
cd .calcurse/caldav/
vim config
[General]
Binary = calcurse
Hostname = murena.io
Path = /remote.php/dav/calendars/login@e.email/personal
AuthMethod = basic
InsecureSSL = No
HTTPS = Yes
SyncFilter = cal,todo
DryRun = No
Verbose = No
[Auth]
Username = user@e.email
Password = *******************
# Quindi abilitare la sincronizzazione
calcurse-caldav --init=two-way
```
### Sincronizzazione
Le modifiche vengono caricate in remoto e scaricate in locale col comando:
```bash
calcurse-caldav
```
Per la sincronizzazione automatica è possibile abilitare un cronjob ogni 5 minuti, oppure crearsi un alias, in questo modo:
```bash
cd ~
vim .bashrc
alias cc="calcurse-caldav >> ~/calcurse.log && calcurse -q"
source .bashrc
```
oppure:
```
crontab -e
*/5 * * * * echo -e "\n" >> ~/calcurse.log && date >> ~/calcurse.log && calcurse-caldav >> ~/calcurse.log
```
![calcurse](./asset/calcurse/calcurse.png)
## Comandi rapidi
```bash
calcurse -a # stampa gli appuntamenti del giorno
calcurse -d n # stampa gli appuntamenti da oggi e per gli "n" giorni successivi
calcurse -d 3
calcurse -d gg/mm/aaaa # stampa gli appuntamenti per uno specifico giorno ù
calcurse -d 13/12/2022
calcurse -n # stampa il prossimo appuntamento entro le 24 ore (quello più vicino)
calcurse -t(n) # stampa la lista delle attività. Opzionalmente si può indicare il livello di priorità
calcurse t2 # stampa attività di priorità 2)
```
## Collegamenti
- [https://community.e.foundation/t/calendar-sync-ecloud-x-calcurse-calcurse-caldav/33134](https://community.e.foundation/t/calendar-sync-ecloud-x-calcurse-calcurse-caldav/33134)
- [https://calcurse.org/files/calcurse-caldav.html](https://calcurse.org/files/calcurse-caldav.html)
- [https://calcurse.org/files/manual.html](https://calcurse.org/files/manual.html)
- [https://github.com/lfos/calcurse/issues/301](https://github.com/lfos/calcurse/issues/301)
- [https://github.com/lfos/calcurse/blob/pu/contrib/caldav/config.sample](https://github.com/lfos/calcurse/blob/pu/contrib/caldav/config.sample)
- [https://github.com/lfos/calcurse](https://github.com/lfos/calcurse)

Binary file not shown.

After

Width:  |  Height:  |  Size: 643 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 59 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 116 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 129 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 83 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 157 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 744 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.1 KiB

View File

@@ -0,0 +1,146 @@
configuration {
modi: "drun,window,run,ssh";
width: 900;
lines: 15;
columns: 1;
font: "Open Sans 13";
bw: 1;
/* location: 0;*/
/* padding: 5;*/
/* yoffset: 0;*/
/* xoffset: 0;*/
/* fixed-num-lines: true;*/
show-icons: true;
terminal: "konsole";
/* ssh-client: "ssh";*/
/* ssh-command: "{terminal} -e {ssh-client} {host}";*/
run-command: "{cmd}";
/* run-list-command: "";*/
run-shell-command: "{terminal} -e {cmd}";
/* window-command: "xkill -id {window}";*/
/* window-match-fields: "all";*/
/* drun-icon-theme: ;*/
drun-match-fields: "name,generic,exec,categories";
/* drun-show-actions: true; */
drun-display-format: "{name} [<span weight='light' size='small'><i>({generic})</i></span>]";
/* disable-history: false;*/
/* ignored-prefixes: "";*/
/* sort: false;*/
/* sorting-method: ;*/
case-sensitive: false;
/* cycle: true;*/
sidebar-mode: true;
/* eh: 1;*/
/* auto-select: false;*/
/* parse-hosts: false;*/
/* parse-known-hosts: true;*/
combi-modi: "drun,run,window";
matching: "fuzzy";
/* tokenize: true;*/
/* m: "-5";*/
/* line-margin: 2;*/
/* line-padding: 1;*/
/* filter: ;*/
/* separator-style: "dash";*/
/* hide-scrollbar: false;*/
/* fullscreen: false;*/
/* fake-transparency: false;*/
/* dpi: -1;*/
/* threads: 0;*/
/* scrollbar-width: 8;*/
/* scroll-method: 0;*/
/* fake-background: "screenshot";*/
/* window-format: "{w} {c} {t}";*/
/* click-to-exit: true;*/
/* show-match: true;*/
/* theme: ;*/
/* color-normal: ;*/
/* color-urgent: ;*/
/* color-active: ;*/
/* color-window: ;*/
/* max-history-size: 25;*/
combi-hide-mode-prefix: true;
/* matching-negate-char: '-' /* unsupported */;*/
/* cache-dir: ;*/
/* pid: "/run/user/19201007/rofi.pid";*/
display-window: true;
/* display-windowcd: ;*/
display-run: true;
display-ssh: true;
display-drun: true;
display-combi: true;
/* display-keys: ;*/
/* kb-primary-paste: "Control+V,Shift+Insert";*/
/* kb-secondary-paste: "Control+v,Insert";*/
/* kb-clear-line: "Control+w";*/
/* kb-move-front: "Control+a";*/
/* kb-move-end: "Control+e";*/
/* kb-move-word-back: "Alt+b,Control+Left";*/
/* kb-move-word-forward: "Alt+f,Control+Right";*/
/* kb-move-char-back: "Left,Control+b";*/
/* kb-move-char-forward: "Right,Control+f";*/
/* kb-remove-word-back: "Control+Alt+h,Control+BackSpace";*/
/* kb-remove-word-forward: "Control+Alt+d";*/
/* kb-remove-char-forward: "Delete,Control+d";*/
/* kb-remove-char-back: "BackSpace,Shift+BackSpace,Control+h";*/
/* kb-remove-to-eol: "Control+k";*/
/* kb-remove-to-sol: "Control+u";*/
/* kb-accept-entry: "Control+j,Control+m,Return,KP_Enter";*/
/* kb-accept-custom: "Control+Return";*/
/* kb-accept-alt: "Shift+Return";*/
/* kb-delete-entry: "Shift+Delete";*/
/* kb-mode-next: "Shift+Right,Control+Tab";*/
/* kb-mode-previous: "Shift+Left,Control+ISO_Left_Tab";*/
/* kb-row-left: "Control+Page_Up";*/
/* kb-row-right: "Control+Page_Down";*/
/* kb-row-up: "Up,Control+p,ISO_Left_Tab";*/
/* kb-row-down: "Down,Control+n";*/
/* kb-row-tab: "Tab";*/
/* kb-page-prev: "Page_Up";*/
/* kb-page-next: "Page_Down";*/
/* kb-row-first: "Home,KP_Home";*/
/* kb-row-last: "End,KP_End";*/
/* kb-row-select: "Control+space";*/
/* kb-screenshot: "Alt+S";*/
/* kb-ellipsize: "Alt+period";*/
/* kb-toggle-case-sensitivity: "grave,dead_grave";*/
/* kb-toggle-sort: "Alt+grave";*/
/* kb-cancel: "Escape,Control+g,Control+bracketleft";*/
/* kb-custom-1: "Alt+1";*/
/* kb-custom-2: "Alt+2";*/
/* kb-custom-3: "Alt+3";*/
/* kb-custom-4: "Alt+4";*/
/* kb-custom-5: "Alt+5";*/
/* kb-custom-6: "Alt+6";*/
/* kb-custom-7: "Alt+7";*/
/* kb-custom-8: "Alt+8";*/
/* kb-custom-9: "Alt+9";*/
/* kb-custom-10: "Alt+0";*/
/* kb-custom-11: "Alt+exclam";*/
/* kb-custom-12: "Alt+at";*/
/* kb-custom-13: "Alt+numbersign";*/
/* kb-custom-14: "Alt+dollar";*/
/* kb-custom-15: "Alt+percent";*/
/* kb-custom-16: "Alt+dead_circumflex";*/
/* kb-custom-17: "Alt+ampersand";*/
/* kb-custom-18: "Alt+asterisk";*/
/* kb-custom-19: "Alt+parenleft";*/
kb-select-1: "Super+1";
kb-select-2: "Super+2";
kb-select-3: "Super+3";
kb-select-4: "Super+4";
kb-select-5: "Super+5";
kb-select-6: "Super+6";
kb-select-7: "Super+7";
kb-select-8: "Super+8";
kb-select-9: "Super+9";
kb-select-10: "Super+0";
/* ml-row-left: "ScrollLeft";*/
/* ml-row-right: "ScrollRight";*/
/* ml-row-up: "ScrollUp";*/
/* ml-row-down: "ScrollDown";*/
/* me-select-entry: "MousePrimary";*/
/* me-accept-entry: "MouseDPrimary";*/
/* me-accept-custom: "Control+MouseDPrimary";*/
}
@import "/home/piccihud/.local/share/rofi/themes/nord-oneline.rasi"

Binary file not shown.

After

Width:  |  Height:  |  Size: 469 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 271 KiB

185
linux/debian/debian.md Normal file
View File

@@ -0,0 +1,185 @@
# Debian KDE
Come prima cosa, occorre scaricare la .iso della distro in questione:
[https://cdimage.debian.org/cdimage/unofficial/non-free/cd-including-firmware/11.6.0-live+nonfree/amd64/iso-hybrid/](https://cdimage.debian.org/cdimage/unofficial/non-free/cd-including-firmware/11.6.0-live+nonfree/amd64/iso-hybrid/)
Nell'esempio, `Debian 11 KDE`.
Al termine del download, creare la chiavetta con la live, al fine di poter intraprendere l'installazione.
## Balena Etcher
Come prima cosa, importare i repository:
```bash
curl -1sLf 'https://dl.cloudsmith.io/public/balena/etcher/setup.deb.sh' | sudo -E bash
```
Quindi procedere con l'installazione:
```bash
sudo apt update ; sudo apt install balena-etcher-electron -y
```
Adesso è possibile avviare il programma, seleziore l'.iso scaricata precedentemente, il supporto corretto ed avviare la procedura.
## Installazione di Debian
Avviare la live e da qui procedere con l'installazione guidata, cliccando sull'icona. Rispetto al 'graphic installer' del menù, è decisamente più semplice.
## Modificare i repository
Al fine di avere una distribuzione con pacchetti più aggiornati, occorre modificare il file `/etc/apt/source.list`.
[https://guide.debianizzati.org/index.php/Repository_ufficiali](https://guide.debianizzati.org/index.php/Repository_ufficiali)
Se si vuole restare sempre con la versione testing di Debian, a prescindere dai rilasci di Debian, scegliere questa configurazione:
```bash
# Debian testing
deb http://deb.debian.org/debian/ testing main
deb-src http://deb.debian.org/debian/ testing main
# Aggiornamenti di sicurezza
deb http://security.debian.org/debian-security testing-security main
deb-src http://security.debian.org/debian-security testing-security main
# Gli aggiornamenti raccomandati per testing (testing-updates) sono disabilitati
```
Quindi procedere con l'aggiornamento dei pacchetti:
```bash
sudo apt update ; sudo apt -y upgrade ; sudo apt autoremove -y ; sudo apt autoclean -y ; pkcon refresh ; pkcon update -y
```
## Bismuth
```bash
echo "deb http://deb.volian.org/volian/ scar main" | sudo tee /etc/apt/sources.list.d/volian-archive-scar-unstable.list > /dev/null
wget -qO - https://deb.volian.org/volian/scar.key | sudo tee /etc/apt/trusted.gpg.d/volian-archive-scar-unstable.gpg > /dev/null
sudo apt update && sudo apt install kwin-bismuth
```
Tramite `Bismuth`, uno script per KDE, è possibile avere semplicemente un tiling window manager.
[https://github.com/Bismuth-Forge/bismuth](https://github.com/Bismuth-Forge/bismuth)
![bismuth](./asset/debian/debian/bismuth.png 'Bismuth')
## Papirus Icon
[https://github.com/PapirusDevelopmentTeam/papirus-icon-theme](https://github.com/PapirusDevelopmentTeam/papirus-icon-theme)
Il miglior icon pack per Gnu/Linux!
```bash
sudo apt update ; sudo apt install papirus-icon-theme -y
```
![papirus](./asset/debian/papirus.png 'Papirus icon pack')
### Papirus Theme for LibreOffice
[https://sourcedigit.com/23703-install-papirus-theme-for-libreoffice-papirus-libreoffice-theme/](https://sourcedigit.com/23703-install-papirus-theme-for-libreoffice-papirus-libreoffice-theme/)
```bash
wget -qO- https://raw.githubusercontent.com/PapirusDevelopmentTeam/papirus-libreoffice-theme/master/install-papirus-root.sh | sh
```
In questo modo si installa il tema per LibreOffice, indipendentemente dalla distro.
![Papirus Theme](./asset/debian/libreoffice1.png 'Opzioni')
![Papirus Theme](./asset/debian/libreoffice2.png 'Vista')
## Firefox
Per installare la versione normale, non quella ESR (Extended Release Support), di Firefox su Debian Testing, seguire questa guida:
[https://wiki.debian.org/it/Firefox](https://wiki.debian.org/it/Firefox)
Basta scaricare il file .deb e procedere con l'installazione:
[https://packages.debian.org/sid/amd64/firefox/download](https://packages.debian.org/sid/amd64/firefox/download)
```txt
davide@piccihud:~/Scaricati$ ls -1lh
totale 88M
-rw-r--r-- 1 davide davide 57M 24 set 14.11 firefox_105.0-1_amd64.deb
sudo apt install ./firefox_105.0-1_amd64.deb
sudo apt purge -y firefox-esr
sudo rm firefox_105.0-1_amd64.deb
```
> NOTA: in questo modo l'applicazione si aggiornerà solo manualmente
![Firefox](./asset/debian/firefox.jpeg 'Firefox')
## Rofi
Installare Rofi e poi procedere con le sue configurazioni: ![Rofi](https://gitea.it/PicciHud/Appunti/wiki/Rofi)
```bash
sudo apt update && sudo apt install -y rofi
```
## .NET
[https://learn.microsoft.com/it-it/dotnet/core/install/linux-debian](https://learn.microsoft.com/it-it/dotnet/core/install/linux-debian)
## Brave Browser
[https://brave.com/linux/#nightly-channel-installation](https://brave.com/linux/#nightly-channel-installation)
## Newsboat : RSS/Atom feedreader
Si tratta di un lettore RSS testuale. Si installa direttamente dai repo ufficiali di Debian:
```bash
sudo apt update ; sudo apt install newsboat
```
Per le varie configurazioni, seguire la documentazione ufficiale:
[https://newsboat.org/releases/2.29/docs/newsboat.html](https://newsboat.org/releases/2.29/docs/newsboat.html)
Per aggiungere un feed, basta inserirle URL in questo file:
```bash
~/.newsboat/urls
```
Oppure è possibile importare un file OPML con il seguente comando:
```bash
newsboat -i file.opml
```
I comandi base:
- `Shift+R`: download degli articoli dai feed inseriti;
- `/`: ricerca all'interno di tutti i files;
- `A`: marca il feed come letto;
- `Q`: chiude Newsboat;
- `O`: apre l'articolo nel browser;
- `Q`: permette di ritornare nel terminale.
### Fluent Reader
Una valida alternativa:
[https://hyliu.me/fluent-reader/](https://hyliu.me/fluent-reader/)
## Collegamenti
- [https://wiki.debian.org/it/SourcesList](https://wiki.debian.org/it/SourcesList)
- [https://www.debian.org/devel/testing](https://www.debian.org/devel/testing)
- [https://it.linux-console.net/?p=348#gsc.tab=0](https://it.linux-console.net/?p=348#gsc.tab=0)

View File

@@ -0,0 +1,252 @@
# Debian minimale
La iso può essere scaricata da qui: [https://cdimage.debian.org/cdimage/unofficial/non-free/images-including-firmware/current/amd64/iso-cd/](https://cdimage.debian.org/cdimage/unofficial/non-free/images-including-firmware/current/amd64/iso-cd/)
Oppure esiste anche la mini.iso, dal peso di circa 50 MB: [https://deb.debian.org/debian/dists/bullseye/main/installer-amd64/current/images/netboot/](https://deb.debian.org/debian/dists/bullseye/main/installer-amd64/current/images/netboot/)
Selezionare `Advance options ...`
![debian](./asset/minidebian/debian1.png)
quindi `Expert install`
![debian](./asset/minidebian/debian2.png)
Impostare la lingua desiderata. Qui sarà scelta la lingua *italiana*. Lo stesso vale per il layout della tastiera.
Il punto successivo, *Access software for a blind person using a braille display* può essere eluso
![debian](./asset/minidebian/debian3.png)
Rilevare e montare i supporti di installazione
![debian](./asset/minidebian/debian4.png)
Caricare i seguenti moduli aggiuntivi, che tuttavia, come specificato nella descrizione, non sono necessari
![debian](./asset/minidebian/debian5.png)
Configurare la rete automaticamente, tramite il DHCP
![debian](./asset/minidebian/debian6.png)
![debian](./asset/minidebian/debian7.png)
Stabilire il nome dell'host
![debian](./asset/minidebian/debian8.png)
Abilitare le `shadow password`
![debian](./asset/minidebian/debian9.png)
Non permettere l'accesso a root
![debian](./asset/minidebian/debian10.png)
Stabilire il nome dell'utente e assegnargli una password
![debian](./asset/minidebian/debian11.png)
### Partizionamento manuale
![debian](./asset/minidebian/debian12.png)
Selezionare il disco corretto
![debian](./asset/minidebian/debian13.png)
Creare una nuova tabella delle partizioni di tipo `GPT`
![debian](./asset/minidebian/debian14.png)
![debian](./asset/minidebian/debian15.png)
Selezionare nuovamente il disco e creare la partizione `/boot/efi`
![debian](./asset/minidebian/debian16.png)
![debian](./asset/minidebian/debian17.png)
100 MB sono sufficienti
![debian](./asset/minidebian/debian18.png)
![debian](./asset/minidebian/debian19.png)
Completare il partizionamento. Importante che sia avviabile
![debian](./asset/minidebian/debian20.png)
Procedere allo stesso modo per la partizione `/boot`, sempre di 100 MB. Usare come file-system `ext2`
![debian](./asset/minidebian/debian21.png)
Quindi creare la partizione di root `/`. Volendo è possibile creare una partizione `/home` separata.
Come file-system va benissimo sia `ext4` che `btrfs`
![debian](./asset/minidebian/debian22.png)
#### Cifrare la partizione root
![debian](./asset/minidebian/debian23.png)
Selezionare la partizione `/`
![debian](./asset/minidebian/debian24.png)
![debian](./asset/minidebian/debian25.png)
Dopo aver completato la cifratura, selezionare il volume e assegnargli il punto di mount corretto e pure il tipo di file-system
![debian](./asset/minidebian/debian26.png)
![debian](./asset/minidebian/debian27.png)
Saltare la creazione della partizione di swap
![debian](./asset/minidebian/debian28.png)
Proseguire con l'installazione del sistema di base
![debian](./asset/minidebian/debian29.png)
![debian](./asset/minidebian/debian30.png)
Per evitare problemi di compatibilità, installare tutti di driver disponibili
![debian](./asset/minidebian/debian31.png)
![debian](./asset/minidebian/debian32.png)
### Partizionamento manuale con LVM
Qualora si desiderasse utilizzare LVM, dopo aver creato una nuova tabella delle partizioni GPT
![debian](./asset/minidebian/debian45.png)
Selezionare partizionamento manuale
![debian](./asset/minidebian/debian46.png)
![debian](./asset/minidebian/debian47.png)
Dopo aver creato la partizione `boot/efi` e la partizione di `/boot` di almeno 150 MB,
procedere con la creazione del LVM. Per maggiori informazioni leggere qui: [LVM](https://it.wikipedia.org/wiki/Gestore_logico_dei_volumi)
![debian](./asset/minidebian/debian48.png)
Creare il gruppo di volumi (nell'esempio composto da un solo disco) con nome a piacere
![debian](./asset/minidebian/debian49.png)
![debian](./asset/minidebian/debian50.png)
Creare quindi il *volume logico*, assegnando tutto la spazio a disposizione
![debian](./asset/minidebian/debian51.png)
#### Cifrare partizione di root-LVM
![debian](./asset/minidebian/debian52.png)
![debian](./asset/minidebian/debian53.png)
![debian](./asset/minidebian/debian54.png)
![debian](./asset/minidebian/debian55.png)
![debian](./asset/minidebian/debian56.png)
Questa la situazione finale. Se si volesse, è sempre possibile creare una partizione `/home` separata
![debian](./asset/minidebian/debian57.png)
### Configurare il gestore pachetti
![debian](./asset/minidebian/debian33.png)
![debian](./asset/minidebian/debian34.png)
Utilizzare il *software non libero* a scelta, in base anche al proprio hardware
![debian](./asset/minidebian/debian35.png)
Abilitare anche i software *backported*
![debian](./asset/minidebian/debian36.png)
Installare automaticamente gli aggiornamenti di sicurezza
![debian](./asset/minidebian/debian37.png)
Per un installazione minimale, selezionare solo `Utilità di sistema standard`. Il DE verrà installato successivamente
![debian](./asset/minidebian/debian38.png)
### Installazione di GRUB
![debian](./asset/minidebian/debian39.png)
![debian](./asset/minidebian/debian40.png)
Terminare quindi l'installazione
![debian](./asset/minidebian/debian41.png)
#### Configurazioni di GRUB
Dopo aver avviato il pc, modificare il file `/etc/default/grub` in questo modo:
```bash
# If you change this file, run 'update-grub' afterwards to update
# /boot/grub/grub.cfg.
# For full documentation of the options in this file, see:
# info -f grub -n 'Simple configuration'
GRUB_DEFAULT=0
GRUB_TIMEOUT_STYLE=hidden
GRUB_TIMEOUT=0
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX=""
```
![debian](./asset/minidebian/debian42.png)
Dare quindi il comando `sudo update-grub` e riavviare la macchina.
In questo caso GRUB non verrà mostrato all'avvio e ci si troverà davanti immediatamente la schermata per de-crittografare la partizione `/`
![debian](./asset/minidebian/debian43.png)
Questa la situazione finale dei dischi
![debian](./asset/minidebian/debian44.png)
### Debian Testing
Per Debian testing, modificare il file `/etc/apt/sources.list` nel seguente modo:
```bash
# Debian testing
deb http://deb.debian.org/debian/ testing main contrib non-free non-free-firmware
deb-src http://deb.debian.org/debian/ testing main contrib non-free non-free-firmware
# Aggiornamenti di sicurezza
deb http://security.debian.org/debian-security testing-security main contrib non-free non-free-firmware
deb-src http://security.debian.org/debian-security testing-security main contrib non-free non-free-firmware
# Gli aggiornamenti raccomandati per testing (testing-updates) sono disabilitati
```
## Collegamenti
- [https://ubuntuhandbook.org/index.php/2020/06/hide-grub-boot-menu-ubuntu-20-04-lts/](https://ubuntuhandbook.org/index.php/2020/06/hide-grub-boot-menu-ubuntu-20-04-lts/)
- [https://unix.stackexchange.com/questions/577379/how-can-i-install-debian-with-full-disk-encryption-and-a-custom-sized-swapfile](https://unix.stackexchange.com/questions/577379/how-can-i-install-debian-with-full-disk-encryption-and-a-custom-sized-swapfile)
- [https://it.linux-console.net/?p=2525](https://it.linux-console.net/?p=2525)
- [https://debian-handbook.info/browse/it-IT/stable/sect.installation-steps.html](https://debian-handbook.info/browse/it-IT/stable/sect.installation-steps.html)
- [https://www.blakehartshorn.com/installing-debian-on-existing-encrypted-lvm/](https://www.blakehartshorn.com/installing-debian-on-existing-encrypted-lvm/)
- [https://www.paritybit.ca/blog/debian-with-btrfs](https://www.paritybit.ca/blog/debian-with-btrfs)
- [https://guide.debianizzati.org/index.php/Installare_Debian:_configurazione_LVM](https://guide.debianizzati.org/index.php/Installare_Debian:_configurazione_LVM)

138
linux/debian/kde.md Normal file
View File

@@ -0,0 +1,138 @@
## Personalizzare KDE
Ecco alcuni temi molto interessanti compatibili in toto con KDE Plasma:
- [https://github.com/catppuccin/catppuccin](https://github.com/catppuccin/catppuccin)
- [https://draculatheme.com](https://draculatheme.com)
1. Clonare questo repository:
```bash
git clone https://github.com/catppuccin/KDE && cd KDE/kde-store-archives/global-theme
```
2. Installare il tema con questo comando:
```bash
kpackagetool5 -i catppuccin.tar.gz
```
![KDE](./asset/kde/kde.png 'KDE')
Un tema molto bello per le icone della barra di stato è **Materia Theme**, installabile con questo comando:
```bash
wget -qO- https://raw.githubusercontent.com/PapirusDevelopmentTeam/materia-kde/master/install.sh | sh
```
Qui maggiori informazioni:
[https://github.com/PapirusDevelopmentTeam/materia-kde](https://github.com/PapirusDevelopmentTeam/materia-kde)
![Status](./asset/kde/statusbar.png 'Barra di stato')
![Material](./asset/kde/material.png 'Material Theme')
Nelle impostazioni di KDE, impostare `#1f2430` come colore di sfondo delle finestre:
![1f2430](./asset/kde/1f2430.png '1f2430')
![Material](./asset/kde/material2.png 'Material Theme')
### Konsole
Per personalizzare la shell e il prompt dei comandi, si può utilizzare **Starship Shell**:
[https://github.com/starship/starship/blob/master/docs/it-IT/guide/README.md](https://github.com/starship/starship/blob/master/docs/it-IT/guide/README.md)
Questo è il link per la personalizzazione dello schema dei colori:
[https://github.com/catppuccin/konsole](https://github.com/catppuccin/konsole)
## Vim
[https://github.com/catppuccin/vim](https://github.com/catppuccin/vim)
Ecco delle impostazioni base per Vim:
```bash
davide@piccihud:~$ cat .vimrc
set number
colorscheme catppuccin_mocha
set spell spelllang=it
syntax enable
set termguicolors
```
Il tema viene installato in questo modo:
```bash
cd ~
git clone https://github.com/catppuccin/vim.git
mv colors/ .vim/
```
Inserire la seguente riga nel file `.vimrc`:
```vim
colorscheme catppuccin_mocha
```
## Firefox
Qui si trovano moltissimi temi CSS per Firefox:
[https://firefoxcss-store.github.io/](https://firefoxcss-store.github.io/)
Uno dei migliori:
[https://github.com/crambaud/waterfall](https://github.com/crambaud/waterfall)
![Firefox](./asset/kde/firefox.png 'Waterfall Theme')
### Dark Reader
[https://github.com/catppuccin/dark-reader](https://github.com/catppuccin/dark-reader)
> Mocha
```css
Background #1e1e2e
Text #cdd6f4
Selection #585b70
```
![Mocha](./asset/kde/reader.png 'Tema')
![Menù](./asset/kde/reader-menu.png 'Menù')
## Cambiare Display manager
[https://github.com/fairyglade/ly](https://github.com/fairyglade/ly)
Per prima cosa, bisogna installare le dipendenze:
```bash
sudo -i
apt install build-essential libpam0g-dev libxcb-xkb-dev
```
Quindi clonare il repository Git e seguire le istruzioni per l'installazione:
```bash
git clone --recurse-submodules https://github.com/fairyglade/ly
cd ly
make
make install installsystemd
systemctl enable ly.service
```
Maggiori informazioni alla pagina sopra elencata. Di seguito il risultato ottenuto:
![ly](./asset/kde/ly.png 'Display Manager')
Il file di configurazione si trova in `/etc/ly/config.ini`.

218
linux/debian/rofi.md Normal file
View File

@@ -0,0 +1,218 @@
# Rofi
Rofi non è solo un lanciatore di applicazioni, ma permette di fare molte più cose, tra cui:
- aprire file;
- eseguire comandi bash;
- navigare tra le finestre aperte;
- ...
## Modalità
Rofi ha diverse modalità integrate che implementano casi d'uso comuni e possono essere estese da vari script o plugin.
Di seguito è riportato un elenco delle diverse modalità:
- **run**: permette di lanciare eseguibili nel terminale, a partire dal loro `$PATH`;
- **drun**: avvia le applicazioni installate nel sistema;
- **window**: permette di passare tra le varie finestre aperte;
- **ssh**: avvia il collegamento a un host remoto via ssh;
- **combi**: combina più modalità.
## Installazione su Debian e derivate
```bash
sudo apt update && sudo apt install -y rofi
```
## Configurazione
Per generare il file di configurazione predefinito:
```bash
mkdir -p ~/.config/rofi
rofi -dump-config > ~/.config/rofi/config.rasi
```
Questo comando crea un file chiamato `config.rasi` nel seguente percorso: `~/.config/rofi/`. È possibile modificare questo file per personalizzare rofi, anche graficamente con dei temi personalizzati.
Eccone un esempio: [config.rasi](./asset/rofi//config.rasi)
### Abilitare le varie modalità
È sufficiente specificare un elenco ordinato e separato da virgole delle modalità da abilitare. Ecco un esempio, con abilitate solo le modalità `run` e `ssh`:
```bash
rofi -modes "run,ssh" -show run
```
Per ottenere una visione combinata di due o più modalità:
```bash
rofi -show combi -combi-modes "window,run,ssh" -modes combi
```
## Temi personalizzati
Qui si trovano moltissimi temi:
[https://github.com/adi1090x/rofi](https://github.com/adi1090x/rofi)
Dopo aver installato `rofi`, clonare il precedente repository:
```bash
git clone --depth=1 https://github.com/adi1090x/rofi.git
cd rofi
chmod 755 setup.sh
./setup.sh
```
Quindi, per scegliere lo stile, modificare il file `~/.config/rofi/launchers/type-X/launcher.sh`, dove `X` è un numero da 1 a 7, inserendo lo stile prescelto.
Nell'esempio:
```bash
theme='style-10'
```
Ecco il file in questione:
```
davide@piccihud:~$ cat ~/.config/rofi/launchers/type-4/launcher.sh
#!/usr/bin/env bash
## Author : Aditya Shakya (adi1090x)
## Github : @adi1090x
#
## Rofi : Launcher (Modi Drun, Run, File Browser, Window)
#
## Available Styles
#
## style-1 style-2 style-3 style-4 style-5
## style-6 style-7 style-8 style-9 style-10
dir="$HOME/.config/rofi/launchers/type-4"
theme='style-10'
## Run
rofi \
-show drun \
-theme ${dir}/${theme}.rasi
```
Come prima, per cambiare i colori predefiniti del tema, modificare il seguente file:
```bash
davide@piccihud:~$ cat ~/.config/rofi/launchers/type-4/shared/colors.rasi
/**
*
* Author : Aditya Shakya (adi1090x)
* Github : @adi1090x
*
* Colors
*
* Available Colors Schemes
*
* adapta catppuccin everforest navy paper
* arc cyberpunk gruvbox nord solarized
* black dracula lovelace onedark yousai
*
**/
/* Import color-scheme from `colors` directory */
@import "~/.config/rofi/colors/dracula.rasi" #Inserire il colore prescelto
```
Questo è tutto. Ora basta inserire nel file `config.rasi` la seguente riga, una volta scelto lo stile del tema:
```bash
davide@piccihud:~$ cat .config/rofi/config.rasi
@theme "~/.config/rofi/launchers/type-4/style-10.rasi"
```
![Rofi](./asset/rofi/rofi.png 'Rofi')
### Alcune aggiunte al tema
`~/.config/rofi/launchers/type-4/style-10.rasi`
```bash
10 /*****----- Configuration -----*****/
11 configuration {
12 modi: "drun,window,run"; /*aggiunte alcune modalità, come quella per mostrare le finestre attive o per eseguire comandi da terminale*/
13 show-icons: true; /*le icone sono visibili*/
14 display-drun: " Apps";
15 display-run: "";
16 display-filebrowser: "";
17 display-window: "";
18 /* drun-display-format: "{name} [<span weight='light' size='small'><i>({generic})</i></span>]"; */
19 drun-display-format: "{name}"; /*solo il nome dell'applicazione diventa visibile, senza descrizione, come sopra*/
20 window-format: "{w} · {c} · {t}";
21 }
[..]
53 /*****----- Main Window -----*****/
54 window {
55 /* properties for window widget */
56 transparency: "real";
57 location: south; /*rofi è posizionato in basso*/
58 anchor: south;
59 fullscreen: false;
60 width: 100%;
61 x-offset: 0px;
62 y-offset: 0px;
```
Quindi modificare il file `.config/rodi/config.rasi`:
```bash
1 configuration {
3 terminal: "konsole";
4 run-command: "{cmd}";
5 run-list-command: "";
6 run-shell-command: "{terminal} -e {cmd}"; /*Questa è la sintassi del comando*/
7 kb-select-1: "Super+1";
8 kb-select-2: "Super+2";
9 kb-select-3: "Super+3";
10 kb-select-4: "Super+4";
11 kb-select-5: "Super+5";
12 kb-select-6: "Super+6";
13 kb-select-7: "Super+7";
14 kb-select-8: "Super+8";
15 kb-select-9: "Super+9";
16 kb-select-10: "Super+0";
17 }
18 @theme "~/.config/rofi/launchers/type-4/style-10.rasi"
```
In questo modo, è possibile lanciare comandi bash direttamente da rofi, tramite la seguente sintassi:
```bash
terminal_name command
konsole ncdu
```
oppure passare tra le finestre attive, infine selezionare i risultati con delle scorciatoie (`Alt+X`), dove `X` indica un numero maggiore o uguale a 1, corrispondente al risultato dell'applicazione che si desidera avviare.
Il risultato finale:
![Rofi](./asset/rofi/final.png 'Rofi')
### Gestire le connessioni di rete
Rofi può essere esteso tramite plugin. Eccone uno per poter controllare la connessione ad intenet:
```bash
git clone https://github.com/ericmurphyxyz/rofi-wifi-menu.git
cd rofi-wifi-menu
mv rofi-wifi-menu.sh ~/bin
```
È possibile richiamare lo script dopo aver assegnato una scorciatoria da tastiera: `$HOME/bin/rofi-wifi-menu.sh`
![WiFi](./asset/rofi/wifi.png)
## Collegamenti
- [https://github.com/davatorium/rofi](https://github.com/davatorium/rofi)
- [https://github.com/adi1090x/rofi](https://github.com/adi1090x/rofi)
- [https://github.com/adi1090x/rofi/blob/master/files/config.rasi](https://github.com/adi1090x/rofi/blob/master/files/config.rasi)

99
linux/diff.md Normal file
View File

@@ -0,0 +1,99 @@
# Confrontare file
Il comando `diff` confronta due file e produce una lista delle loro differenze. Per essere più precisi, produce un elenco delle modifiche che dovrebbero essere apportate al primo file, per farlo corrispondere al secondo file.
```bash
diff file1 file2
```
Ecco un esempio:
```bash
> cat file1
file1
> cat file2
file2
file3
file1
> diff file1 file2
0a1,2
> file2
> file3
```
Ogni differenza è elencata a sua volta in una singola colonna e ogni differenza viene etichettata. L'etichetta è composta da due numeri che circondano una lettera, come nell'esempio `0a1`.
Il primo numero è il numero di riga in file1, e il secondo numero è il numero di riga in file2. La lettera nel mezzo può essere:
- `c`: la riga nel primo file deve essere modificata per corrispondere alla riga nel secondo file;
- `d`: la riga nel primo file deve essere eliminata;
- `a`: il contenuto extra deve essere aggiunto al primo file per farlo corrispondere al secondo file.
I parametri `-s` e `-q` indicano, rispettivamente, se i due file sono identici ovvero differenti:
```bash
> diff -s file2 file3
I file file2 e file3 sono identici
> diff -q file1 file2
I file file1 e file2 sono diversi
```
## Una vista alternativa
```bash
> diff -y -W 70 file1 file3
> file2
file5 | file3
file1 file1
file4 <
```
L'opzione `-y` (side by side) utilizza un layout diverso per mostrare le differenze tra i file. Spesso è conveniente specificare la larghezza `-W` per limitare il numero di colonne visualizzate.
Il primo file viene visualizzato a sinistra mentre il secondo è mostrato sulla destra. Le righe di ogni file vengono visualizzate fianco a fianco.
Ci sono caratteri indicatori accanto alle varie righe:
- `|`: una riga che è differente nel secondo file;
- `<`: una riga che non è presente nel secondo file;
- `>`: una riga che non è presente nel primo file
## Uno spruzzo di colore
```bash
sudo apt-get install colordiff
```
Il comando `colordiff` aggiunge colore all'output di `diff`.
## Confrontare directories
Il comando diff permette anche di confrontare cartelle tra loro. La sintassi è molto semplice:
```bash
diff -r dir1 dir2
```
Vengono mostrati i nomi dei file/directories differenti e le differenze tra i files. Con l'opzione `-q` viene mostrato solo il nome dei files diversi.
```bash
ls -R
.:
dir1 dir2
./dir1:
file1
./dir2:
colordiff -rq dir1 dir2
Solo in dir1: file1
```
## Vimdiff
Per chi utilizza vim, esiste `vimdiff`
## Collegamenti
- [https://www.howtogeek.com/410532/how-to-compare-two-text-files-in-the-linux-terminal/](https://www.howtogeek.com/410532/how-to-compare-two-text-files-in-the-linux-terminal/)
- [https://linuxhandbook.com/compare-directories/](https://linuxhandbook.com/compare-directories/)

19
linux/epson_wf2510.md Normal file
View File

@@ -0,0 +1,19 @@
# Epson WF2510
Qui i driver: [Epson WF2510](https://download.ebz.epson.net/dsc/search/01/search/searchModule)
## Installazione
```bash
> sudo apt install ./epson-inkjet-printer-escpr_1.7.21-1lsb3.2_amd64.deb
Lettura elenco dei pacchetti... Fatto
Generazione albero delle dipendenze
Lettura informazioni sullo stato... Fatto
È utile eseguire "apt --fix-broken install" per correggere ciò.
I seguenti pacchetti hanno dipendenze non soddisfatte:
epson-inkjet-printer-escpr : Dipende: lsb (>= 3.2) ma non è installato
E: Dipendenze non soddisfatte. Provare "apt --fix-broken install" senza pacchetti (o specificare una soluzione).
> sudo apt --fix-broken install
```

1
linux/feh/keys Symbolic link
View File

@@ -0,0 +1 @@
/home/davide/.config/feh/keys

1
linux/feh/themes Symbolic link
View File

@@ -0,0 +1 @@
/home/davide/.config/feh/themes

143
linux/find.md Normal file
View File

@@ -0,0 +1,143 @@
# find
Il comando **find** permette di cercare files e non solo da riga di comando.
Se il percorso del file non è specificato, viene ricercato nella directory corrente e nelle sue sottodirectory.
Questa la sua struttura generale:
```bash
find path pattern
```
## Ricercare un file per nome
```bash
find -iname abc.txt
```
In questo modo, viene cercato il file abc.txt (-i sta per insensitive) nella cartella corrente.
### Specificare il tipo del pattern
```bash
find /etc -type f -name "*.conf"
```
dove il tipo del file può essere:
| -type | Descrizione |
|-------|-------------|
| f | File |
| d | Directory |
| l | Link |
## Ricercare in più cartelle
```bash
find ~/Desktop/example1/ ~/Desktop/example2/ -name 'abc*.*'
```
## size
Ricercare solo file più grandi di...
```bash
find -size +2000M
```
## Esclusione di alcuni file dalla ricerca
Il comando find può anche escludere alcuni tipi di file dal risultato della ricerca:
```bash
find -name '*abc*' -type f \( ! -name '*.msi' \)
```
Nell'esempio, vengono esclusi tutti i file *\*abc\*.msi*
## exec
È possibile eseguire comandi sui risultati di find.
La sintassi di base per eseguire la ricerca con exec è la seguente:
```bash
find [path] [arguments] -exec [command] {} \;
```
- *[comand]* il comando da eseguire;
- *{}* è un segnaposto per i risultati dati dal comando find;
- *\;* che per ogni risultato trovato, il [comand] viene eseguito, ossia, come se fossero passati in questo modo:
```bash
ls file1.txt
ls file2.txt
ls file3.txt
```
### Alcuni esempi
Rinominare i file
```bash
> sudo find . -type f -name file\* -exec ls -l {} \;
-rw-r--r-- 1 davide davide 0 9 apr 15.50 ./file2.txt
-rw-r--r-- 1 davide davide 0 9 apr 15.50 ./file7.txt
-rw-r--r-- 1 davide davide 0 9 apr 15.50 ./file4.txt
-rw-r--r-- 1 davide davide 0 9 apr 15.50 ./file8.txt
-rw-r--r-- 1 davide davide 0 9 apr 15.50 ./file10.txt
-rw-r--r-- 1 davide davide 0 9 apr 15.50 ./file1.txt
-rw-r--r-- 1 davide davide 0 9 apr 15.50 ./file9.txt
-rw-r--r-- 1 davide davide 0 9 apr 15.50 ./file5.txt
-rw-r--r-- 1 davide davide 0 9 apr 15.50 ./file3.txt
-rw-r--r-- 1 davide davide 0 9 apr 15.50 ./file6.txt
> sudo find . -type f -name file\* -exec mv {} {}_renamed \;
> ll
Permissions Size User Date Modified Name
.rw-r--r-- 0 davide 9 apr 15:50  file1.txt_renamed
.rw-r--r-- 0 davide 9 apr 15:50  file2.txt_renamed
.rw-r--r-- 0 davide 9 apr 15:50  file3.txt_renamed
.rw-r--r-- 0 davide 9 apr 15:50  file4.txt_renamed
.rw-r--r-- 0 davide 9 apr 15:50  file5.txt_renamed
.rw-r--r-- 0 davide 9 apr 15:50  file6.txt_renamed
.rw-r--r-- 0 davide 9 apr 15:50  file7.txt_renamed
.rw-r--r-- 0 davide 9 apr 15:50  file8.txt_renamed
.rw-r--r-- 0 davide 9 apr 15:50  file9.txt_renamed
.rw-r--r-- 0 davide 9 apr 15:50  file10.txt_renamed
```
Eliminare i file più grandi di...
```bash
find ~/Desktop -size +100M -exec rm {} \;
```
Modificare proprietario dei file:
```bash
> sudo find . -type f -name file\* -exec chown root:root {} \;
> ll
Permissions Size User Date Modified Name
.rw-r--r-- 0 root 9 apr 15:50  file1.txt_renamed
.rw-r--r-- 0 root 9 apr 15:50  file2.txt_renamed
.rw-r--r-- 0 root 9 apr 15:50  file3.txt_renamed
.rw-r--r-- 0 root 9 apr 15:50  file4.txt_renamed
.rw-r--r-- 0 root 9 apr 15:50  file5.txt_renamed
.rw-r--r-- 0 root 9 apr 15:50  file6.txt_renamed
.rw-r--r-- 0 root 9 apr 15:50  file7.txt_renamed
.rw-r--r-- 0 root 9 apr 15:50  file8.txt_renamed
.rw-r--r-- 0 root 9 apr 15:50  file9.txt_renamed
.rw-r--r-- 0 root 9 apr 15:50  file10.txt_renamed
```
Eliminare tutti i file corrispondenti ad un pattern di ricerca:
```bash
> sudo find . -type f -name file\* -exec rm -rf {} \;
> ll
```
## Collegamenti
- [https://linuxhandbook.com/find-files-by-name/](https://linuxhandbook.com/find-files-by-name/)
- [https://linuxhandbook.com/find-exec-command/](https://linuxhandbook.com/find-exec-command/)
- [https://www.ionos.it/digitalguide/server/configurazione/comando-find-di-linux/](https://www.ionos.it/digitalguide/server/configurazione/comando-find-di-linux/)

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

144
linux/hardware/dd.md Normal file
View File

@@ -0,0 +1,144 @@
# dd
`dd` è un comando che serve a copiare `blocchi di dati` grezzi da una sorgente verso una destinazione.
Il concetto è molto differente dalla semplice copia, infatti agisce direttamente a basso livello, cioé bit per bit.
Normalmente questo strumento è utilizzato per le seguenti motivazioni:
- formattazione a basso livello;
- backup di intere partizioni;
- creazione di dischi di avvio.
## Sintassi
La sintassi base di dd è la seguente:
```bash
dd if=FILEINPUT of=FILEOUTPUT
```
È doverosa qui una precisazione: su un sistema UNIX `qualunque cosa è un file`, anche un drive esterno.
## Specificare la dimensione dei blocchi
Quando si scrive a basso livello è bene ricordarsi che i byte scritti vengono sempre inviati nel file di uscita a blocchi.
Per specificare la dimensione di questi blocchi vi sono essenzialmente tre possibili parametri:
- `ibs`= numero di byte per la dimensione del blocco in ingresso;
- `obs`= numero di byte per la dimensione del blocco in uscita;
- `bs`= numero di byte per la dimensione di entrambi i blocchi
Il valore default di questi parametri è 512.
Si possono specificare delle unità di misura, come Kilo (K), Mega (M), Giga (G) e così via…
Ad esempio per trasferire 8 Mega alla volta:
```bash
dd if=nomefile of=nomefile bs=8M
```
### Numero blocchi trasferiti
Si può inserire il numero di blocchi che devono essere trasferiti con il parametro `count`. Ad esempio per trasferire 4MB bisogna scrivere:
```bash
dd if=nomefile of=nomefile count=8000 iflag=fullblock
```
> Ad esempio, per trasferire 2GiB in blocchi da 8M, sono necessari $2048/8 = 256$ blocchi
Il flag `iflag=fullblock` assicura che vengano trasferiti i blocchi nella dimensione intera.
## Visualizzare lo stato del comando
Il flag `status=progress` consente di visualizzare lo stato di avanzamento del comando:
```bash
dd if=FILEINPUT of=FILEOUTPUT status=progress
```
## Esempi duso
Per individuare una periferica di archiviazione attaccata utilizziare il comando:
```bash
blkid
```
Un output tipo potrebbe essere:
```bash
/dev/sda1: UUID="b4c1041e-7027-4619-aaa5-900e24c1fdee" BLOCK_SIZE="4096" TYPE="ext4"
/dev/sda2: UUID="dc1014fd-6c84-4dcd-acc3-13e914685136" TYPE="swap"
/dev/sdb1: UUID="3255683f-53a2-4fdf-91cf-b4c1041e2a62" BLOCK_SIZE="4096" TYPE="ext4"
```
Quello sullestrema sinistra è un identificativo che rappresenta una particolare partizione del disco, nel primo caso è /dev/sda1 e nellultimo /dev/sdb1.
La lettera rappresenta univocamente il disco, mentre il numero la partizione.
Nel caso di nvme e di supporti sd potrebbe cambiare la nomenclatura, ma il concetto è sempre simile.
### Scrittura di un immagine iso
Lutilizzo più famoso è forse quello di scrittura di un immagine iso in una pen-drive. Per prima cosa si deve creare il file-system col comando [mkfs](./mount.md)
Scaricato e individuato il file iso (ad esempio /percorso/file/immagine.iso) bisogna prima individuare il supporto duscita, utilizzando il comando `blkid`.
Quindi nel comando dd utilizzare come file di INPUT limmagine iso e come file di OUTPUT il disco.
Il block size dovrebbe essere allineato alla capacità di scrittura della pen-drive e della porta usb del pc, affinché sia possibile sfruttare più buffer:
```bash
dd if=/percorso/file/immagine.iso of=/dev/sda status=progress bs=8M
```
### Formattare un dispositivo
Per azzerare un dispositivo viene utilizzato un file virtuale creato da GNU/Linux contenente tutti e soli zeri che si trova nel percorso `/dev/zero`.
Quindi scrivere il comando dd utilizzando come file di INPUT /dev/null, mentre come file di OUTPUT il disco.
```bash
dd if=/dev/zero of=/dev/sda status=progress bs=8M
```
### Backup
Con dd si può effettuare il backup di interi dischi.
Quindi utilizzare il disco come parametro di INPUT e un file come parametro di OUTPUT. Il file sarà necessariamente un file IMG (immagine disco).
```bash
dd if=/dev/sda of=/percorso/backup.img status=progress bs=8M
```
Si può poi ripristinare invertendo gli operandi. Si può applicare il concetto anche alle partizioni:
```bash
dd if=/dev/sda1 of=/percorso/backupp1.img status=progress bs=8M
```
#### Backup e compressione
Se non viene specificato alcun file di output, viene utilizzato lo standard output del sistema.
Questo permette di concatenare `dd` con altri comandi, ad esempio gzip, in modo da poter fare un backup che viene compresso al volo:
```bash
dd if=/dev/sda | gzip > /percorso/backup.gz
```
### Clonazione di un disco
`dd` copia bit a bit. Questo significa che se si tenta di duplicare una partizione o un disco, copierà anche lo spazio libero.
Quindi, ad esempio, se si clona un disco rigido con 4 TB, si avrà bisogno di un'unità di destinazione con almeno 4 TB.
```bash
dd if=/dev/sda of=/dev/sdb status=progress bs=8M conv=noerror,sync
```
Con l'opzione `conv-noerror` eventuali errori saranno ignorati. Il programma proseguirà fino al blocco finale senza fermarsi.
Se utilizzato in combinazione con `noerror`, `sync` assicurerà che eventuali blocchi di dati mancanti vengano automaticamente riempiti con informazioni nulle.
## Collegamenti
- [https://linuxhub.it/articles/howto-usare-dd/](https://linuxhub.it/articles/howto-usare-dd/)
- [https://linuxhandbook.com/dd-command/](https://linuxhandbook.com/dd-command/)

200
linux/hardware/formatfs.md Normal file
View File

@@ -0,0 +1,200 @@
# Formattare un device da terminale
## Identificare la periferica
Per identificare la periferica in questione si possono utilizzare diversi comandi:
```bash
sudo fdisk -l
sudo blkid
df
```
Ecco un esempio:
```bash
sudo blkid
[sudo] password di davide:
/dev/mapper/luks-44d72477-5d0f-4d0d-a54b-f721a7e5a320: UUID="cd370d97-dd7c-41d1-9b53-1504c89f64fd" TYPE="swap"
/dev/nvme0n1p1: UUID="487ce502-4541-488c-b07f-ea2ac4e91b9f" TYPE="crypto_LUKS" PARTUUID="0559b9a4-01"
/dev/nvme0n1p2: UUID="44d72477-5d0f-4d0d-a54b-f721a7e5a320" TYPE="crypto_LUKS" PARTUUID="0559b9a4-02"
/dev/mapper/luks-487ce502-4541-488c-b07f-ea2ac4e91b9f: UUID="ce884a78-4404-4ea9-b6e7-d543bfb38a41" BLOCK_SIZE="4096" TYPE="ext4"
/dev/sda1: BLOCK_SIZE="2048" UUID="2022-12-17-13-13-38-00" LABEL="d-live nf 11.6.0 kd amd64" TYPE="iso9660" PTUUID="66641822" PTTYPE="dos" PARTUUID="66641822-01"
/dev/sda2: SEC_TYPE="msdos" UUID="DEB0-0001" BLOCK_SIZE="512" TYPE="vfat" PARTUUID="66641822-02"
```
oppure
```bash
df
File system 1K-blocchi Usati Disponib. Uso% Montato su
udev 7084012 0 7084012 0% /dev
tmpfs 1426036 2380 1423656 1% /run
/dev/dm-0 446217344 113436124 310041144 27% /
tmpfs 7130160 6748 7123412 1% /dev/shm
tmpfs 5120 16 5104 1% /run/lock
tmpfs 1426032 164 1425868 1% /run/user/1000
/dev/sda1 3600960 3600960 0 100% /media/davide/d-live nf 11.6.0 kd amd64
```
La chiavetta USB è identificata in questo caso come `/dev/sda` (/dev/sda1 e /dev/sda2 sono le due partizioni).
Per il comando `blkid` e sull'uuid vedere [qui](./uuid.md)
## Partizionare un disco con fdisk
Il programma più comune per partizionare un disco utilizzando la shell è `fdisk`. Il comando fdisk chiederà di specificare come argomento il nome del disco fisso da partizionare:
```bash
fdisk /dev/hdb
```
Nell'elenco che segue sono riportati i comandi di utilizzo più comune:
```bash
m: visualizza l'help
p: visualizza la tabella corrente delle partizioni
d: cancella una partizione
n: crea una nuova partizione
w: scrive la tabella delle partizioni sul disco
t: imposta il tipo di filesystem previsto per la partizione
a: abilita/disabilita il flag che rende la partizione avviabile (boot flag)
l: visualizza l'elenco dei tipi di filesystem utilizzabili
q: chiude fdisk senza modificare il disco
Create a new label
g create a new empty GPT partition table
G create a new empty SGI (IRIX) partition table
o create a new empty DOS partition table
s create a new empty Sun partition table
```
fdisk supporta diversi schemi di partizionamento. `MBR` e `GPT` sono i due standard più popolari. GPT è uno standard più recente che consente molti vantaggi rispetto all'MBR.
I punti principali da considerare quando si sceglie quale standard di partizionamento usare:
- Utilizzare MBR per avviare il disco in modalità BIOS legacy;
- Utilizzare GPT per avviare il disco in modalità UEFI;
- Lo standard MBR supporta la creazione di una partizione del disco fino a 2 TiB. Altrimenti usare GPT;
- MBR ha un limite di 4 partizioni primarie, GPT fino a 128 partizioni
Premere `g` per creare una nuova tabella delle partizioni GPT:
L'output sarà simile al seguente:
```bash
Created a new GPT disklabel (GUID: 034596B2-1998-B241-BD8A-029063BDB87E).
```
Il prossimo passo sarà creare le nuove partizioni.
Premere `n` per creare una nuova partizione.
Verrà richiesto di inserire il numero di partizione. Premere [Invio] per utilizzare il valore predefinito (1):
```bash
Partition number (1-128, default 1): 1
```
Successivamente, il comando chiederà di specificare il primo settore. Generalmente si consiglia sempre di utilizzare i valori predefiniti. Premere [Invio] per utilizzare il valore predefinito (2048):
```bash
First sector (2048-500118158, default 2048):
```
Ora è necessario inserire l'ultimo settore. È possibile utilizzare un valore assoluto oppure un valore relativo al settore iniziale, utilizzando il simbolo + seguito dalla dimensione della partizione. La dimensione può essere specificata in kilobyte (K), megabytes (M), gigabytes (G), terabytes (T) o petabytes (P).
Ad esempio, per creare una partizione di 100 GB, digitare `+100G` e premere [Invio]:
```bash
Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-500118158, default 500118158): +100G
Created a new partition 1 of type 'Linux filesystem' and of size 100 GiB.
```
Per impostazione predefinita, il tipo di partizione è impostato su *filesystem Linux*, che dovrebbe andare bene per la maggior parte dei casi. Se si desidera modificare il tipo, premere `l` per ottenere un elenco di tipi di partizione, quindi premere `t` per modificare il tipo.
Infine premere `w` per scrivere le modifiche.
## Formattazione della periferica
Smontare la chiavetta USB:
```bash
sudo umount /dev/sda
```
### NTFS
Smontata la chiavetta dal sistema, digitare:
```bash
mkfs.ntfs /dev/sda -v
```
### EXT4
```bash
mkfs.ext4 /dev/sda -v
```
Un esempio:
```bash
sudo mkfs.ext4 -L "DAVIDE4GB" /dev/sda -v
mke2fs 1.46.6 (1-Feb-2023)
fs_types for mke2fs.conf resolution: 'ext4'
/dev/sda contains a ext4 file system
last mounted on Sun Mar 19 12:18:08 2023
Proceed anyway? (y,N) y
Filesystem label=DAVIDE4GB
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
237104 inodes, 947456 blocks
47372 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=970981376
29 block groups
32768 blocks per group, 32768 fragments per group
8176 inodes per group
Filesystem UUID: 62fd2424-ae9d-45f8-84d9-5a3b63020661
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736
Allocating group tables: done
Writing inode tables: done
Creating journal (16384 blocks): done
Writing superblocks and filesystem accounting information: done
```
dove `-L` specifica il nome del filesystem, così che sia identificabile più facilmente. L'opzione `-v` indica *verbose*.
## Verificare la Formattazione
```bash
sudo fsck /dev/sda
sudo fsck /dev/sda
fsck da util-linux 2.38.1
e2fsck 1.46.6 (1-Feb-2023)
/dev/sda is mounted.
e2fsck: Cannot continue, aborting.
```
Oppure col comando:
```bash
sudo file -sL /dev/sda
```
Ora che le partizioni sono state create, il passaggio successivo consiste nel formattare le partizioni e montarle.
## Collegamenti
- [https://www.chimerarevo.com/guide/linux-formattare-pendrive-usb-terminale-411029/](https://www.chimerarevo.com/guide/linux-formattare-pendrive-usb-terminale-411029/)
- [https://phoenixnap.com/kb/linux-format-usb](https://phoenixnap.com/kb/linux-format-usb)
- [https://wiki.archlinux.org/title/File_systems](https://wiki.archlinux.org/title/File_systems)
- [https://linuxhandbook.com/mkfs-command/](https://linuxhandbook.com/mkfs-command/)
- [https://www.thegeekdiary.com/mkfs-ext4-command-examples-in-linux/](https://www.thegeekdiary.com/mkfs-ext4-command-examples-in-linux/)
- [https://guide.debianizzati.org/index.php/Guida_alla_formattazione_dei_dischi_con_fdisk](https://guide.debianizzati.org/index.php/Guida_alla_formattazione_dei_dischi_con_fdisk)
- [https://guide.debianizzati.org/index.php/Guida_ai_comandi_da_terminale_-_Gestione_del_File_System](https://guide.debianizzati.org/index.php/Guida_ai_comandi_da_terminale_-_Gestione_del_File_System)
- [https://noviello.it/come-creare-partizioni-con-fdisk-su-linux/](https://noviello.it/come-creare-partizioni-con-fdisk-su-linux/)

87
linux/hardware/fstab.md Normal file
View File

@@ -0,0 +1,87 @@
# fstab
Il file di configurazione `/etc/fstab` contiene le informazioni necessarie al montaggio delle periferiche di memorizzazione del sistema.
Tale file viene letto all'avvio del sistema per determinare quali opzioni utilizzare per montare una specifica periferica o una partizione.
![fstab](./asset/fstab/fstab.jpg)
Per visualizzare il contenuto del file, digitare:
```bash
cat /etc/fstab
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point> <type> <options> <dump> <pass>
# /dev/sda1
UUID=12102C02102CEB83 /media/windows ntfs silent,umask=0,locale=it_IT.utf8 0 0
# /dev/sda2
UUID=cee15eca-5b2e-48ad-9735-eae5ac14bc90 none swap sw 0 0
# /dev/sda3
UUID=98E0-6D24 /media/dati vfat defaults,utf8,umask=007,uid=0,gid=46,auto,rw,nouser 0 0
# /dev/sda4
UUID=0aa86c61-0df9-4f1a-8b0b-34abbee6b769 / ext3 nouser,defaults,errors=remount-ro,atime,auto,rw,dev,exec,suid 0 0
/dev/sr0 /media/cdrom0 udf,iso9660 user,noauto 0 0
```
Le periferiche vengono identificate dal proprio *Universally Unified IDentifier* o [UUID](./uuid.md). Quest'ultimo è un particolare codice identificativo, virtualmente univoco, che viene assegnato dal programma di generazione del filesystem, quando la partizione viene creata o formattata.
## Parametri
| Campo | Descrizione
|----|----|
file system | indica il dispositivo
mount point | indica la directory (o mount point) dalla quale sarà possibile accedere al contenuto del dispositivo (per la swap non è richiesto il mount point)
type | tipo di file system
options | opzioni di accesso al dispositivo (per maggiori informazioni consultare la tabella successiva)
dump | attiva/disattiva il backup del filesystem (comando dump)
pass | attiva/disattiva il controllo di coerenza del disco (comando fsck) i valori possibili sono 0, 1 e 2. In genere si dovrebbe usare 1 per il filesystem di root, 2 per tutti gli altri filesystem montati normalmente e 0 per i filesystem che non sono montati di default.
### Opzioni
| Opzioni | Descrizione
|----|----|
auto | la partizione sarà montata all'avvio del sistema, oppure con il comando mount -a
noauto | la partizione può essere montata solo manualmente
defaults | assegna le impostazioni di default: per ext4 sono "rw,suid,dev,exec,auto,nouser,async"
exec | abilita l'esecuzione dei programmi presenti sulla partizione
noexec | inibisce l'esecuzione programmi presenti sulla partizione
relatime | aggiorna nell'inode solo i tempi di accesso al file system
noatime | non aggiorna l'inode con i tempi di accesso al file system
nodiratime | non aggiorna l'inode delle directory coi tempi di accesso al file system
ro | il mount della partizione può avvenire in sola lettura
rw | il mount della partizione può avvenire in lettura e scrittura
sync | operazioni di scrittura/lettura della partizione sincrone
async | operazioni di scrittura/lettura della partizione asincrone
suid | consente le operazioni di suid e sgid (esecuzione dei programmi con maggiori privilegi)
nosuid | inibisce le operazioni di suid e sgid
user | consente a tutti gli utenti di montare la partizione, con le opzioni di default:noexec,nosuid,nodev
users | permette agli utenti appartenenti al gruppo users di montare il filesystem
nouser | limita solo a root la possibilità di effettuare il mount del file system
owner | permette il mount al solo proprietario del punto di mount
nofail | da usarsi per dispositivi esterni (chiavette, dischi, fotocamere, ecc.) per evitare di avere messaggi di errore al boot
dev | interpreta le periferiche a blocchi o periferiche speciali all'interno del filesystem
nodev | impedisce l'interpretazione di periferiche a blocchi o periferiche speciali all'interno del filesystem
uid | imposta l'ID utente che verrà utilizzato per accedere al file system
gid | imposta l'ID del gruppo che verrà utilizzato per accedere al file system
x-gvfs-show | controlla se il file system viene visualizzato nell'interfaccia utente
umask | rappresenta la negazione dei permessi. In origine tutti i file e le directory hanno il permesso 0777. La maschera li riduce. Ad esempio, una maschera 0111 riduce i permessi da 0777 a 0666. In pratica, suggerisce ai programmi avviati successivamente quali permessi negare al momento della creazione di nuovi file e directory. Differisce da chmod sia perché quest'ultimo modifica i permessi successivamente alla creazione dei file o directory, sia perché i permessi forniti con chmod sono quelli effettivi e non quelli negati.
Per verificare di aver scritto tutto correttamente, provare il comando:
```bash
mount /punto/di/mount/in/fstab
```
Se non vengono restituiti errori, l'operazione è andata a buon fine.
## Collegamenti
- [http://linuxguide.altervista.org/fstab.html](http://linuxguide.altervista.org/fstab.html)
- [https://wiki.ubuntu-it.org/AmministrazioneSistema/Fstab](https://wiki.ubuntu-it.org/AmministrazioneSistema/Fstab)
- [https://www.andreaminini.com/linux/maschera-permessi-linux-umask](https://www.andreaminini.com/linux/maschera-permessi-linux-umask)
- [https://it.wikipedia.org/wiki/Umask](https://it.wikipedia.org/wiki/Umask)

Some files were not shown because too many files have changed in this diff Show More