Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Lập Trình Bash

Thiết lập Ubuntu Desktop Tự động: Tự động hóa Dotfiles và Bash Scripts

Một điều tôi thích nhất về file open source trên GitHub là xem cách người khác làm những việc (mọi người có thể gọi là) mundane, như setup .bashrc và dotfiles khác. Mặc dù tôi không enthusiastic về ricing như khi mới sang Linux, tôi vẫn hứng thú khi tìm config setting làm mọi thứ đẹp và nhanh hơn, do đó tốt hơn.

Tôi gần đây tìm thấy vài điều như vậy, đặc biệt trong dotfiles của Tom Hudson. Tom dường như thích script mọi thứ, và một số trong đó bao gồm tự động setup symlinks, cài ứng dụng Ubuntu repo và chương trình khác. Điều đó khiến tôi suy nghĩ. Tôi có thể tự động setup máy mới replicate máy hiện tại không?

Là người thường tháo dỡ thứ để xem cách nó hoạt động, tôi biết tôi đã làm hỏng laptop đôi khi. (Thường khi xa nhà, và backup harddrive không có.) Trong những tình huống hiếm nhưng cực kỳ bất tiện khi máy tính trở thành vỏ bọc của chính nó, (ba-dum-ching) khá tốt nếu có cách nhanh, đơn giản gom Humpty Dumpty lại như tôi thích.

Khác với tạo disk image và restore sau, bộ script bash dễ tạo, maintain, và di chuyển hơn. Chỉ cần phương tiện transport bên ngoài. Giống như truyền công thức, thay vì cả cái bánh bundt. (Nghĩ, bánh.)

Thêm vào đó, chức năng này siêu hữu ích khi setup virtual machine (VM), hoặc virtual private server (VPS). (Cả hai, bây giờ viết ra, có lẽ target bao dung hơn cho thử nghiệm phá hoại của tôi... live and learn!)

Sau grepping, Googling, và đào mài, tôi có bộ script làm được điều này:

Xem video setup tại đây.

Đây là cuối test run script setup trên Ubuntu desktop fresh, boot từ USB. Nó restore tất cả chương trình và cài đặt trong chưa đầy 3 phút!

Bài viết bao gồm cách đạt setup tự động máy chạy Ubuntu Desktop (trong trường hợp tôi, Ubuntu LTS 18.04) dùng bash script. Đa số thông tin áp dụng cho mọi Linux desktop flavour, dù syntax có khác. Bash script bao ba khu vực chính: link dotfiles, cài software từ Ubuntu và nơi khác, setup desktop environment. Chúng ta sẽ đi qua từng khu vực và xem phần quan trọng để bạn bắt đầu tự tạo script.

Dotfiles

Dotfiles là thứ hầu hết Linux enthusiast gọi file cấu hình. Chúng thường sống trong thư mục home user (ký hiệu trong bash script bằng biến builtin $HOME) và kiểm soát appearance và behavior của mọi loại chương trình. Tên file bắt đầu bằng ., chỉ hidden file trong Linux (do đó "dot" files). Đây là một số dotfiles phổ biến và cách chúng hữu ích.

.bashrc

File .bashrc là danh sách lệnh thực thi tại startup bởi interactive, non-login shell. Interactive vs non-interactive shell hơi confusing, nhưng không cần lo cho mục đích của chúng ta. Với mục đích này, bất kỳ lúc bạn mở terminal mới, thấy prompt, gõ lệnh được, .bashrc đã executed.

Dòng trong file này giúp cải thiện workflow bằng alias giảm keystroke, hoặc hiển thị prompt hữu ích với info useful. Nó thậm chí chạy user-created program, như Eddie. Tham khảo thêm ý tưởng tại file .bashrc của tôi trên GitHub.

.vimrc

Dotfile .vimrc cấu hình champion của text editor, Vim. (Nếu chưa dùng phím tắt bàn phím, tôi khuyên game vui học Vim.)

Trong .vimrc, ta set editor preference như display setting, màu, phím tắt tùy chỉnh. Xem .vimrc của tôi trên GitHub.

Dotfiles khác có thể hữu ích tùy chương trình bạn dùng, như .gitconfig hoặc .tmux.conf. Khám phá dotfiles trên GitHub cách tuyệt vời biết gì available và useful cho bạn!

Link dotfiles

Chúng ta dùng script tạo symbolic links, hoặc symlinks cho tất cả dotfiles. Điều này cho phép giữ tất cả file trong repository trung tâm, dễ manage, đồng thời cung cấp placeholder tại chỗ chương trình mong đợi config file. Thường là, nhưng không luôn, thư mục home user. Ví dụ, vì tôi lưu dotfiles trên GitHub, tôi giữ chúng trong thư mục path như ~/github/dotfiles/ trong khi file symlink ra path như ~/.vimrc.

Để kiểm tra và xử lý file và symlink tồn tại theo chương trình, rồi tạo mới, dùng shell script thanh lịch này. Tôi compliment chỉ vì tôi blatantly stole core từ setup script của Tom, nên không claim credit cho sự thanh lịch đó.

Script symlink.sh hoạt động bằng cách attempt tạo symlink cho mỗi dotfile trong $HOME. Nó trước kiểm tra symlink đã tồn tại, hoặc file/thư mục thường cùng tên tồn tại. Trong trường hợp trước, symlink bị xóa và làm lại; trường hợp sau, file/thư mục bị rename, rồi symlink tạo.

Cài đặt phần mềm

Một điều đẹp khám phá shell script là phát hiện bao nhiêu việc đạt được chỉ dùng command line. Là người tiếp xúc máy tính lần đầu qua GUI OS, tôi thấy làm việc terminal nhanh sảng khoái.

Với Ubuntu, hầu hết chương trình cần có sẵn qua default Ubuntu software repo. Thường search với apt search <program> và cài với sudo apt install <program>. Phần mềm muốn có thể không trong default repo, hoặc không có phiên bản mới nhất. Trường hợp đó, vẫn cài được chương trình trong Ubuntu dùng PPA (Personal Package Archive). Chỉ cần cẩn thận PPA chọn từ official source.

Nếu chương trình muốn không xuất hiện default repo hoặc không có PPA, vẫn có thể cài qua command line. Tìm nhanh "installation command line" ra đáp án.

Vì bash script chỉ là tập hợp lệnh chạy riêng lẻ trong terminal, tạo script cài tất cả chương trình muốn đơn giản như bỏ tất cả lệnh vào file script. Tôi chọn tổ chức script cài đặt giữa default repo (cài bởi script aptinstall.sh) và chương trình liên quan external source, handle bằng script programs.sh.

Setup desktop environment

Những dịp gần đây get fresh desktop (có chủ đích hoặc không) tôi luôn quên mất bao lâu để nhớ, tìm, và đổi tất cả cài đặt desktop environment. Keyboard shortcut, workspace, sound setting, night mode... cộng lên!

May mắn là tất cả setting phải lưu ở đâu đó format non-graphical, nghĩa là nếu khám phá cách làm, có thể dễ dàng manipulate setting với bash script. Xin chào lệnh terminal, gsettings list-recursively.

Có một đống setting cho GNOME desktop environment. Làm list dễ scroll (nếu như tôi, đôi khi type "Just let me look at everything and figure out what I want!") bằng pipe to less: gsettings list-recursively | less. Thay vào đó, nếu có dự cảm gì tìm, dùng grep: gsettings list-recursively | grep 'keyboard'.

Chúng ta manipulate setting với lệnh gsettings set. Đôi khi khó tìm syntax setting muốn, nên khi build script lần đầu, khuyến nghị dùng GUI làm thay đổi, sau tìm dòng gsettings đã thay và ghi giá trị.

Tham khảo cảm hứng, xem script desktop.sh settings của tôi trên GitHub.

Gom tất cả lại

Có script modular (một symlinks, hai cài chương trình, một desktop settings) hữu ích cho tổ chức và chạy một phần không phải tất cả automated setup. Ví dụ, nếu setup VPS chỉ dùng command line, không cần cài chương trình graphical hay desktop settings.

Trường hợp muốn chạy tất cả script, làm one-by-one hơi tedious. May mắn bash script có thể chạy bằng terminal command, chúng ta viết master script chạy tất cả!

Master script setup máy Ubuntu desktop mới:

#!/bin/bash
./symlink.sh
./aptinstall.sh
./programs.sh
./desktop.sh
# Get all upgrades
sudo apt upgrade -y
# See our bash changes
source ~/.bashrc
# Fun hello
figlet "... and we're back!" | lolcat

Tôi throw in upgrade line for good measure. Nó đảm bảo chương trình cài trên fresh desktop có latest update. Bây giờ một lệnh bash đơn giản lo mọi thứ!

Bạn có thể nhận ra, trong khi desktop trông và chạy familiar, script này không cover khu vực quan trọng: file của chúng ta. Hy vọng bạn có backup method liên quan reliable external hardware. Nếu không, và nếu bạn để work ở external repository host như GitHub hoặc GitLab, tôi có cách tự động clone và backup GitHub repository với bash one-liner.

Relying on external repo host không offer 100% coverage. File bạn không để external hosted repo (private hay không) không pull được. Git ignored object không generate từ file included, như private key và secret, không recreate. Những file đó, tuy nhiên, đủ nhỏ fit một đống encrypted USB flash drive (và nếu không có private key backup, có lẽ nên làm đó trước?).

Đó, hy vọng bài này cho bạn ít nhất inspiration về dotfiles và bash script tự động setup fresh desktop. Nếu bạn tìm ra setting hữu ích, hãy chia sẻ dotfiles để người khác khám phá!