Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม BASH

วิธีตั้งค่าเดสก์ท็อป Ubuntu ใหม่โดยใช้ Dotfiles และ Bash Scripts เท่านั้น

สิ่งที่ฉันชอบที่สุดอย่างหนึ่งเกี่ยวกับไฟล์โอเพ่นซอร์สบน GitHub คือความสามารถในการดูว่าคนอื่นทำอะไร (ที่บางคนอาจเรียกว่า) ทางโลก เช่น ตั้งค่า .bashrc และไฟล์ดอทไฟล์อื่นๆ แม้ว่าฉันจะไม่กระตือรือร้นเกี่ยวกับ ricing เหมือนกับตอนที่ฉันมาที่ฝั่ง Linux เป็นครั้งแรก แต่ฉันก็ยังค่อนข้างตื่นเต้นเมื่อพบการตั้งค่าการกำหนดค่าที่ทำให้ทุกอย่างสวยขึ้นและเร็วขึ้น และดีขึ้นด้วย

ฉันเพิ่งเจอสิ่งเหล่านี้ โดยเฉพาะอย่างยิ่งใน dotfiles ของ Tom Hudson Tom ดูเหมือนจะชอบเขียนสคริปต์ และบางสิ่งเหล่านั้นรวมถึงการตั้งค่า symlink โดยอัตโนมัติ และติดตั้งแอปพลิเคชันที่เก็บ Ubuntu และโปรแกรมอื่นๆ สิ่งนี้ทำให้ฉันคิด ฉันสามารถตั้งค่าเครื่องใหม่โดยอัตโนมัติเพื่อจำลองเครื่องปัจจุบันของฉันได้หรือไม่

โดยทั่วไปแล้วเป็นคนที่มักจะแยกส่วนต่าง ๆ ออกเพื่อดูว่าพวกเขาทำงานอย่างไร ฉันรู้ว่าฉันทำแล็ปท็อปของฉันพังในบางครั้ง (โดยปกติเมื่อฉันไม่อยู่บ้านและฮาร์ดไดรฟ์สำรองของฉันไม่ใช่) ในสถานการณ์ที่หายาก แต่ไม่สะดวกจริงๆ เมื่อคอมพิวเตอร์ของฉันกลายเป็นเปลือกของตัวเองในอดีต (ba-dum-ching) มันค่อนข้างดี มีวิธีที่รวดเร็วและง่ายดายในการนำ Humpty Dumpty กลับมารวมกันอีกครั้งในแบบที่ฉันชอบ

ในทางตรงกันข้ามกับการสร้างภาพดิสก์และการกู้คืนในภายหลัง คอลเลกชันของสคริปต์ทุบตีนั้นง่ายต่อการสร้าง บำรุงรักษา และย้ายไปมา พวกเขาไม่ต้องการสาธารณูปโภคพิเศษเฉพาะวิธีการขนส่งภายนอกเท่านั้น มันเหมือนกับการส่งไปตามสูตร แทนที่จะเป็นเค้กบันด์ทั้งก้อน (อืม เค้ก)

นอกจากนี้ ฟังก์ชันเช่นนี้จะมีประโยชน์มากเมื่อตั้งค่าเครื่องเสมือน หรือ VM หรือแม้แต่เซิร์ฟเวอร์ส่วนตัวเสมือน หรือ VPS (ทั้งสองอย่าง ตอนที่ฉันเขียนบทความนี้ คงจะสร้างเป้าหมายที่ให้อภัยมากขึ้นสำหรับการทดลองที่ทำลายล้างมากขึ้น… ใช้ชีวิตและเรียนรู้!)

หลังจากที่เกรปปิ้งและกูเกิลแล้วสำรวจไปรอบๆ ตอนนี้ฉันมีชุดสคริปต์ที่สามารถทำได้:

วิธีตั้งค่าเดสก์ท็อป Ubuntu ใหม่โดยใช้ Dotfiles และ Bash Scripts เท่านั้น

ดูวิดีโอการตั้งค่าที่นี่

นี่คือส่วนท้ายของการทดสอบรันสคริปต์การตั้งค่าบนเดสก์ท็อป Ubuntu ใหม่ โหลดจาก USB ที่สามารถบู๊ตได้ มันกู้คืนโปรแกรมและการตั้งค่าทั้งหมดของฉันได้ภายในสามนาที!

โพสต์นี้จะครอบคลุมถึงวิธีตั้งค่าอัตโนมัติของคอมพิวเตอร์ที่ใช้ Ubuntu Desktop (ในกรณีของฉันคือ Ubuntu LTS 18.04) โดยใช้สคริปต์ทุบตี ข้อมูลส่วนใหญ่ที่กล่าวถึงนั้นใช้ได้กับทุกรสชาติของเดสก์ท็อป Linux แม้ว่าไวยากรณ์บางอย่างอาจแตกต่างกัน สคริปต์ทุบตีครอบคลุมสามส่วนหลัก:การลิงก์ไฟล์ดอท การติดตั้งซอฟต์แวร์จากอูบุนตูและที่อื่นๆ และการตั้งค่าสภาพแวดล้อมเดสก์ท็อป เราจะอธิบายแต่ละส่วนเหล่านี้และศึกษาส่วนสำคัญต่างๆ เพื่อให้คุณสามารถเริ่มสร้างสคริปต์ของคุณเองได้

Dotfiles

Dotfiles คือสิ่งที่ผู้ที่ชื่นชอบ Linux ส่วนใหญ่เรียกว่าไฟล์กำหนดค่า โดยทั่วไปจะอยู่ในโฮมไดเร็กทอรีของผู้ใช้ (แสดงเป็นสคริปต์ทุบตีด้วยตัวแปรบิวท์อิน $HOME ) และควบคุมลักษณะและพฤติกรรมของโปรแกรมทุกประเภท ชื่อไฟล์ขึ้นต้นด้วย . ซึ่งหมายถึงไฟล์ที่ซ่อนอยู่ใน Linux (จึงเป็นไฟล์ “dot”) ต่อไปนี้คือไฟล์ดอทไฟล์ทั่วไปและแนวทางที่เป็นประโยชน์

.bashrc

.bashrc file เป็นรายการคำสั่งที่ดำเนินการเมื่อเริ่มต้นโดยเชลล์แบบโต้ตอบที่ไม่ใช่การล็อกอิน เชลล์แบบโต้ตอบและแบบไม่โต้ตอบอาจสร้างความสับสนเล็กน้อย แต่ไม่จำเป็นสำหรับเราที่จะต้องกังวลที่นี่ เพื่อจุดประสงค์ของเรา ทุกครั้งที่คุณเปิดเทอร์มินัลใหม่ ดูข้อความแจ้ง และสามารถพิมพ์คำสั่งลงไป .bashrc ของคุณ ถูกประหารชีวิต

บรรทัดในไฟล์นี้สามารถช่วยปรับปรุงเวิร์กโฟลว์ของคุณโดยการสร้างนามแฝงที่ลดการกดแป้นพิมพ์ หรือโดยการแสดงข้อความแจ้งที่เป็นประโยชน์พร้อมข้อมูลที่เป็นประโยชน์ มันสามารถเรียกใช้โปรแกรมที่ผู้ใช้สร้างขึ้น เช่น Eddie สำหรับแนวคิดเพิ่มเติม คุณสามารถดูที่ .bashrc . ของฉัน ไฟล์บน GitHub

.vimrc

.vimrc dotfile กำหนดค่าแชมเปี้ยนของโปรแกรมแก้ไขข้อความทั้งหมด Vim (หากคุณยังไม่ได้ใช้พลังของแป้นพิมพ์ลัด ฉันขอแนะนำเกมสนุกๆ ที่จะเรียนรู้ Vim ด้วย)

ใน .vimrc เราสามารถตั้งค่ากำหนดของตัวแก้ไขได้ เช่น การตั้งค่าการแสดงผล สี และแป้นพิมพ์ลัดแบบกำหนดเอง คุณสามารถดู .vimrc . ของฉัน บน GitHub

dotfiles อื่นๆ อาจมีประโยชน์ขึ้นอยู่กับโปรแกรมที่คุณใช้ เช่น .gitconfig หรือ .tmux.conf . การสำรวจ dotfiles บน GitHub เป็นวิธีที่ยอดเยี่ยมในการทำความเข้าใจว่ามีอะไรให้ใช้งานและมีประโยชน์สำหรับคุณ!

การเชื่อมโยงไฟล์ dotfiles

เราสามารถใช้สคริปต์เพื่อสร้างลิงก์สัญลักษณ์หรือลิงก์สัญลักษณ์สำหรับ dotfile ทั้งหมดของเรา ซึ่งช่วยให้เราสามารถเก็บไฟล์ทั้งหมดไว้ในที่เก็บส่วนกลาง ซึ่งสามารถจัดการได้ง่าย ในขณะที่ยังมีตัวยึดตำแหน่งในตำแหน่งที่โปรแกรมของเราคาดหวังว่าจะพบไฟล์การกำหนดค่า โดยทั่วไปจะเป็นไดเร็กทอรีโฮมของผู้ใช้ แต่ไม่เสมอไป ตัวอย่างเช่น เนื่องจากฉันเก็บ dotfiles ของฉันบน GitHub ฉันจึงเก็บไว้ในไดเรกทอรีที่มีเส้นทางเช่น ~/github/dotfiles/ ในขณะที่ไฟล์มีการเชื่อมโยงกันทำให้เกิดเส้นทางเช่น ~/.vimrc .

ในการตรวจสอบและจัดการไฟล์และลิงก์สัญลักษณ์ที่มีอยู่โดยทางโปรแกรม จากนั้นสร้างไฟล์ใหม่ เราสามารถใช้เชลล์สคริปต์ที่สวยงามได้ ฉันชมเชยเพียงเพราะฉันขโมยแก่นของมันอย่างโจ่งแจ้งจากสคริปต์การติดตั้งของ Tom ดังนั้นฉันจึงไม่สามารถให้เครดิตกับความน่ารักของมันได้

symlink.sh สคริปต์ทำงานโดยพยายามสร้าง symlink สำหรับแต่ละ dotfile ใน $HOME . ของเรา . ก่อนอื่นจะตรวจสอบเพื่อดูว่ามีลิงก์เชื่อมโยงอยู่แล้วหรือไม่ หรือมีไฟล์หรือไดเรกทอรีปกติที่มีชื่อเดียวกันอยู่หรือไม่ ในกรณีก่อนหน้านี้ symlink จะถูกลบออกและสร้างใหม่ ในระยะหลัง ไฟล์หรือไดเร็กทอรีจะถูกเปลี่ยนชื่อ จากนั้นจึงสร้าง symlink

การติดตั้งซอฟต์แวร์

สิ่งที่สวยงามอย่างหนึ่งเกี่ยวกับการสำรวจเชลล์สคริปต์คือการค้นหาว่าสามารถทำได้มากเพียงใดโดยใช้เพียงบรรทัดคำสั่งเท่านั้น ในฐานะคนที่สัมผัสคอมพิวเตอร์ครั้งแรกผ่านระบบปฏิบัติการแบบกราฟิก ฉันพบว่าการทำงานในเทอร์มินัลนั้นรวดเร็วมาก

สำหรับ Ubuntu โปรแกรมส่วนใหญ่ที่เราต้องการจะพร้อมใช้งานผ่านที่เก็บซอฟต์แวร์เริ่มต้นของ Ubuntu เรามักจะค้นหาสิ่งเหล่านี้ด้วยคำสั่ง apt search และติดตั้งด้วย sudo apt install . ซอฟต์แวร์บางตัวที่เราต้องการอาจไม่อยู่ในที่เก็บเริ่มต้น หรืออาจไม่มีให้ในเวอร์ชันล่าสุด ในกรณีเหล่านี้ เรายังคงสามารถติดตั้งโปรแกรมเหล่านี้ใน Ubuntu โดยใช้ PPA หรือ Personal Package Archive เราแค่ต้องระวังว่า PPA ที่เราเลือกมาจากแหล่งที่เป็นทางการ

หากโปรแกรมที่เราต้องการไม่ปรากฏในที่เก็บเริ่มต้นหรือดูเหมือนไม่มี PPA เราอาจยังคงสามารถติดตั้งโปรแกรมนั้นผ่านบรรทัดคำสั่งได้ การค้นหา "บรรทัดคำสั่งการติดตั้ง" อย่างรวดเร็วควรได้รับคำตอบ

เนื่องจากสคริปต์ทุบตีเป็นเพียงชุดคำสั่งที่เราเรียกใช้ทีละรายการในเทอร์มินัล การสร้างสคริปต์เพื่อติดตั้งโปรแกรมที่ต้องการทั้งหมดจึงตรงไปตรงมาเหมือนกับการใส่คำสั่งทั้งหมดลงในไฟล์สคริปต์ ฉันเลือกที่จะจัดระเบียบสคริปต์การติดตั้งระหว่างที่เก็บเริ่มต้น ซึ่งติดตั้งโดย aptinstall.sh ของฉัน สคริปต์และโปรแกรมที่เกี่ยวข้องกับแหล่งภายนอก จัดการด้วย programs.sh . ของฉัน สคริปต์

การตั้งค่าสภาพแวดล้อมเดสก์ท็อป

ในโอกาสล่าสุดที่ฉันได้เดสก์ท็อปใหม่ (โดยเจตนาหรืออย่างอื่น) ฉันมักจะลืมว่าต้องใช้เวลานานแค่ไหนในการจำ ค้นหา และเปลี่ยนการตั้งค่าสภาพแวดล้อมเดสก์ท็อปทั้งหมด แป้นพิมพ์ลัด พื้นที่ทำงาน การตั้งค่าเสียง โหมดกลางคืน… เพิ่มมากขึ้น!

โชคดีที่การตั้งค่าทั้งหมดเหล่านี้ต้องจัดเก็บไว้ที่ใดที่หนึ่งในรูปแบบที่ไม่ใช่กราฟิก ซึ่งหมายความว่าหากเราสามารถค้นพบวิธีการดำเนินการดังกล่าว เราอาจหาวิธีจัดการการตั้งค่าได้อย่างง่ายดายด้วยสคริปต์ทุบตี ดูเถิด คำสั่งเทอร์มินัล gsettings list-recursively .

มีการตั้งค่ามากมายสำหรับสภาพแวดล้อมเดสก์ท็อป GNOME เราทำให้รายการดูง่ายขึ้นได้ (ถ้าเหมือนฉัน บางครั้งคุณเป็นคนประเภทที่พูดว่า “ให้ฉันดูทุกอย่างแล้วคิดให้ออกว่าฉันต้องการอะไร!”) โดยวางท่อไปที่ น้อยกว่า :gsettings list-recursively | น้อยกว่า . อีกวิธีหนึ่ง หากเรามีข้อสงสัยเกี่ยวกับสิ่งที่เราอาจกำลังมองหา เราสามารถใช้ grep :gsettings list-recursively | grep 'แป้นพิมพ์' .

เราสามารถจัดการการตั้งค่าของเราด้วย gsettings set สั่งการ. บางครั้งการค้นหาไวยากรณ์สำหรับการตั้งค่าที่เราต้องการอาจเป็นเรื่องยาก ดังนั้นเมื่อเราสร้างสคริปต์ครั้งแรก ฉันขอแนะนำให้ใช้ GUI เพื่อทำการเปลี่ยนแปลง จากนั้นค้นหา gsettings บรรทัดที่เราเปลี่ยนและบันทึกค่าของมันไว้

สำหรับแรงบันดาลใจ คุณสามารถดู desktop.sh . ของฉัน สคริปต์การตั้งค่าบน GitHub

รวมทุกอย่างเข้าด้วยกัน

การมีสคริปต์โมดูลาร์ (ตัวหนึ่งสำหรับ symlink สองตัวสำหรับการติดตั้งโปรแกรม อีกตัวสำหรับการตั้งค่าเดสก์ท็อป) มีประโยชน์สำหรับทั้งการจัดระเบียบสิ่งต่างๆ และสามารถเรียกใช้การตั้งค่าอัตโนมัติบางส่วนได้ แต่ไม่ใช่ทั้งหมด ตัวอย่างเช่น หากฉันต้องตั้งค่า VPS ที่ฉันใช้เฉพาะบรรทัดคำสั่ง ฉันไม่จำเป็นต้องกังวลเกี่ยวกับการติดตั้งโปรแกรมกราฟิกหรือการตั้งค่าเดสก์ท็อป

ในกรณีที่ฉันต้องการเรียกใช้สคริปต์ทั้งหมด อย่างไรก็ตาม การทำทีละรายการจะค่อนข้างน่าเบื่อ โชคดีที่เนื่องจากสคริปต์ทุบตีสามารถเรียกใช้ได้ด้วยคำสั่งเทอร์มินัล เราจึงสามารถเขียนสคริปต์หลักอื่นเพื่อเรียกใช้ทั้งหมดได้!

นี่คือสคริปต์หลักของฉันสำหรับจัดการการตั้งค่าเครื่องเดสก์ท็อป Ubuntu ใหม่:

#!/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

ฉันโยนในบรรทัดการอัพเกรดสำหรับการวัดที่ดี จะทำให้แน่ใจว่าโปรแกรมที่ติดตั้งบนเดสก์ท็อปใหม่ของเรามีการอัปเดตล่าสุด ตอนนี้คำสั่ง bash เดียวที่เรียบง่ายจะดูแลทุกอย่าง!

คุณอาจสังเกตเห็นว่าในขณะที่เดสก์ท็อปของเราดูและทำงานได้อย่างคุ้นเคย สคริปต์เหล่านี้ไม่ได้ครอบคลุมพื้นที่ที่สำคัญมากเพียงส่วนเดียว นั่นคือ ไฟล์ของเรา หวังว่าคุณจะมีวิธีการสำรองข้อมูลที่เกี่ยวข้องกับฮาร์ดแวร์ภายนอกที่เชื่อถือได้บางรูปแบบ ถ้าไม่เช่นนั้น และหากคุณมักจะใส่งานของคุณในโฮสต์ที่เก็บภายนอก เช่น GitHub หรือ GitLab ฉันมีวิธีที่จะโคลนและสำรองข้อมูลที่เก็บ GitHub ของคุณโดยอัตโนมัติด้วย bash one-liners

อย่างไรก็ตาม การใช้โฮสต์ที่เก็บภายนอกไม่ได้ให้ความคุ้มครอง 100% ไฟล์ที่คุณไม่ได้ใส่ในที่เก็บที่โฮสต์ภายนอก (ส่วนตัวหรืออย่างอื่น) จะไม่สามารถดึงออกมาได้ Git ละเว้นอ็อบเจ็กต์ที่ไม่สามารถสร้างจากไฟล์ที่รวมไว้ เช่น คีย์ส่วนตัวและข้อมูลลับ จะไม่ถูกสร้างขึ้นใหม่ อย่างไรก็ตาม ไฟล์เหล่านั้นมีแนวโน้มว่ามีขนาดเล็กพอที่คุณจะใส่แฟลชไดรฟ USB ที่เข้ารหัสไว้ทั้งพวงได้ (และหากคุณไม่มีการสำรองข้อมูลคีย์ส่วนตัว คุณควรจะทำอย่างนั้นก่อนไหม)

ที่กล่าวว่าฉันหวังว่าโพสต์นี้จะให้แรงบันดาลใจกับคุณอย่างน้อยที่สุดว่า dotfiles และ bash script สามารถช่วยตั้งค่าเดสก์ท็อปใหม่โดยอัตโนมัติได้อย่างไร หากคุณคิดว่าการตั้งค่าบางอย่างมีประโยชน์ โปรดช่วยให้ผู้อื่นค้นพบการตั้งค่าเหล่านี้ด้วยการแชร์ไฟล์ dotfiles ของคุณด้วย!