Fish Shell:
การทำงานกับ YAML

วิธีการ:

Fish Shell ไม่มีการสนับสนุนการแยกวิเคราะห์ YAML อย่างในตัว, แต่คุณสามารถใช้เครื่องมือของบุคคลที่สามเช่น yq (โปรเซสเซอร์คอมมานด์ไลน์ YAML ที่เบาและพกพาได้) เพื่อจัดการข้อมูล YAML

การติดตั้ง yq (หากยังไม่ได้ติดตั้ง):

sudo apt-get install yq

การอ่านค่าจากไฟล์ YAML: สมมติคุณมีไฟล์ YAML config.yaml ที่มีเนื้อหาดังต่อไปนี้:

database:
  host: localhost
  port: 3306

เพื่ออ่าน host ของฐานข้อมูล, คุณจะใช้:

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

ตัวอย่างผลลัพธ์:

localhost

การอัพเดทค่าในไฟล์ YAML: เพื่ออัพเดท port เป็น 5432, ใช้:

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

ตรวจสอบการอัพเดท:

yq e '.database.port' config.yaml

ตัวอย่างผลลัพธ์:

5432

การเขียนไฟล์ YAML ใหม่: สำหรับสร้างไฟล์ new_config.yaml ใหม่พร้อมเนื้อหาที่กำหนดไว้ล่วงหน้า:

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

นี่ใช้ yq เพื่อประมวลผลและพิมพ์อย่างสวยงาม (-P flag) สตริงเข้าไปในไฟล์ YAML ใหม่

การแยกวิเคราะห์โครงสร้างที่ซับซ้อน: หากคุณมีไฟล์ YAML ที่ซับซ้อนกว่าและต้องการเรียกข้อมูลอาร์เรย์หรืออ็อบเจกต์ที่ซ้อนกัน, คุณสามารถ:

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

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

ตัวอย่างผลลัพธ์:

server1
server2

โดยใช้ yq, Fish Shell ทำให้ง่ายต่อการนำทางผ่านเอกสาร YAML และจัดการกับมันสำหรับงานอัตโนมัติและการกำหนดค่าที่หลากหลาย