Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม Bash

ตั้งค่า Ubuntu Desktop อัตโนมัติ: จัดการ Dotfiles และ Bash Scripts แบบ Streamlined

สิ่งที่ชอบใน Open Source Dotfiles บน GitHub: เห็นคนอื่นตั้งค่า .bashrc และ Dotfiles ต่างๆ — แม้ไม่ Ricing หนักแล้ว แต่ยังตื่นเต้นพบ Config ที่ทำให้สวยและเร็วขึ้น

ค้นพบ Dotfiles ของ Tom Hudson — เขาชอบ Script ทุกอย่าง: Symlinks อัตโนมัติ, ติดตั้ง Apps จาก Ubuntu Repo และที่อื่น — ทำให้คิดว่า: "ทำให้ Setup เครื่องใหม่ Replicate เครื่องปัจจุบันได้อัตโนมัติไหม?"

身為喜歡拆東西看原理的人,偶爾會把筆弄壞(通常在外面,備份硬碟不在身邊)。當電腦變成「空殼」時,有個快速、簡單的方法把它恢復原狀,會非常方便。

เทียบกับ Disk Image: Bash Scripts สร้าง/บำรุงรักษา/ย้าย ได้ง่ายกว่า — ไม่ต้อง Special Utilities, แค่ External Transport — เหมือนส่ง "สูตรอาหาร" แทนที่จะส่ง "เค้กทั้งชิ้น"

ยังใช้ได้กับ VM, VPS — เหมาะสำหรับทดลองทำลายล้าง (Forgiving Targets)

หลังจาก Grep, Google, Dig Around — ตอนนี้มี Suite ของ Scripts ทำได้:

ตั้งค่า Ubuntu Desktop อัตโนมัติ: จัดการ Dotfiles และ Bash Scripts แบบ Streamlined

ดูวิดีโอการ Setup ได้ที่นี่

ท้ายสุดของ Test Run บน Ubuntu Desktop ใหม่ (Bootable USB) — ทุก Programs และ Settings กลับมาใน ภายใต้ 3 นาที!

บทความครอบคลุม: Ubuntu Desktop (LTS 18.04) — ใช้ได้กับ Linux Desktop Flavors ทั้งหมด (Syntax บางส่วนต่างไป) — 3 พื้นที่หลัก: Linking Dotfiles, Installing Software, Desktop Environment Setup

Dotfiles

Dotfiles = Config Files — อยู่ใน $HOME ควบคุม Appearance/Behavior ของโปรแกรม — ชื่อขึ้นต้น . (Hidden Files)

.bashrc

Commands รันตอน Startup ของ Interactive Non-login Shells — ทุกครั้งที่เปิด Terminal ใหม่ มี Prompt พิมพ์ได้ = .bashrc รันแล้ว

ปรับปรุง Workflow: Aliases ลด Keystrokes, Prompt มี Info, รัน User Programs — ดู .bashrc ของผมบน GitHub

.vimrc

Config Vim (Champion of Text Editors) — Display, Colors, Custom Keybindings — ดู .vimrc ของผมบน GitHub

Dotfiles อื่นๆ: .gitconfig, .tmux.conf — สำรวจ Dotfiles บน GitHub ได้ไอเดียเยอะ!

Linking Dotfiles (Symlinks)

เก็บ Dotfiles ไว้ Central Repo (เช่น ~/github/dotfiles/) Symlink ไปที่ที่โปรแกรมคาดหวัง (มัก $HOME) — เช่น ~/.vimrc → ~/github/dotfiles/.vimrc

Script symlink.sh (ขโมยมาจาก Tom — ขอบคุณ!):

  • Check: Symlink มีอยู่แล้วไหม? → ลบและสร้างใหม่
  • Check: Regular File/Dir ชื่อเดียวกันมีไหม? → Rename แล้วสร้าง Symlink
  • สร้าง Symlink ใหม่

Installing Software

Ubuntu: โปรแกรมส่วนใหญ่ใน Default Repos — apt search <pkg>, sudo apt install <pkg>

บางตัวไม่อยู่ใน Default Repos หรือ Version เก่า → ใช้ PPA (Personal Package Archive) จาก Official Sources

ยังไม่มีใน Repos/PPA → ค้นหา "Installation Command Line" มักเจอวิธีติดตั้ง CLI

Bash Scripts = ชุดคำสั่งรันได้ทีละบรรทัด → Script ติดตั้ง = รวมคำสั่งทั้งหมดในไฟล์

แบ่ง Scripts: aptinstall.sh (Default Repos), programs.sh (External Sources)

Setting up Desktop Environment

Desktop Settings: Keyboard Shortcuts, Workspaces, Sound, Night Mode... ใช้เวลานานมากในการตั้งค่าทุกครั้ง

Settings เก็บใน Non-graphical Format → Manipulate ด้วย Bash ได้!

คำสั่งสำคัญ: gsettings list-recursively — ดู Settings ทั้งหมดของ GNOME

  • gsettings list-recursively | less — Scroll ดูง่าย
  • gsettings list-recursively | grep 'keyboard' — หา Setting เฉพาะ

เปลี่ยน Setting: gsettings set — Syntax หายาก → ทำใน GUI ก่อน → หา gsettings line ที่เปลี่ยน → Record Value

ดู desktop.sh ของผมบน GitHub เป็นแรงบันดาลใจ

Putting It All Together (Master Script)

Modular Scripts: Symlink, Apt Install, Programs, Desktop — รันบางส่วนได้ (เช่น VPS ไม่ต้อง GUI)

Master Script รันทั้งหมด:

#!/bin/bash
./symlink.sh
./aptinstall.sh
./programs.sh
./desktop.sh

# Get all upgrades
sudo apt upgrade -y

# Reload bash changes
source ~/.bashrc

# Fun hello
figlet "... and we're back!" | lolcat

คำสั่งเดียว จัดการหมด! ./setup.sh

ข้อจำกัด: Scripts ไม่ครอบคลุม "Files" (โค้ด, เอกสาร, Secrets) — ต้อง Backup เอง (External Drive, GitHub/GitLab Repos) — Private Keys/Secrets ไม่ได้จาก Git Ignored Objects → ใส่ Encrypted USB Drives

หวังให้แรงบันดาลใจ — ถ้ามี Settings ดีๆ Share Dotfiles ให้คนอื่นรู้จักด้วย!