Fish Shell:
Lavorare con YAML

Come fare:

Fish Shell non ha un supporto integrato per l’analisi di YAML, ma è possibile utilizzare strumenti di terze parti come yq (un processore YAML da linea di comando leggero e portatile) per gestire i dati YAML.

Installazione di yq (se non già installato):

sudo apt-get install yq

Leggere un valore da un file YAML: Supponiamo di avere un file YAML config.yaml con il seguente contenuto:

database:
  host: localhost
  port: 3306

Per leggere l’host del database, si utilizza:

set host (yq e '.database.host' config.yaml)
echo $host

Output di esempio:

localhost

Aggiornare un valore in un file YAML: Per aggiornare la porta a 5432, usare:

yq e '.database.port = 5432' -i config.yaml

Verificare l’aggiornamento:

yq e '.database.port' config.yaml

Output di esempio:

5432

Scrivere un nuovo file YAML: Per creare un nuovo new_config.yaml con contenuto predefinito:

echo "webserver:
  host: '127.0.0.1'
  port: 8080" | yq e -P - > new_config.yaml

Questo utilizza yq per elaborare e stampare in maniera ordinata (-P flag) una stringa in un nuovo file YAML.

Analizzare strutture complesse: Se si dispone di un file YAML più complesso e si ha bisogno di estrarre array o oggetti annidati, si può:

echo "servers:
  - name: server1
    ip: 192.168.1.101
  - name: server2
    ip: 192.168.1.102" > servers.yaml

yq e '.servers[].name' servers.yaml

Output di esempio:

server1
server2

Utilizzando yq, Fish Shell rende semplice navigare attraverso documenti YAML e manipolarli per varie attività di automazione e configurazione.