เครื่องมือบรรทัดคำสั่งสำหรับนักพัฒนา
เผยแพร่แล้ว: 2022-03-11ในโลกออนไลน์ทุกวันนี้ การต่อสู้เพื่อดึงดูดผู้ใช้ยังคงดำเนินไปอย่างดุเดือด โดยผู้ผลิตแอปจะเลือกแอปบนอุปกรณ์เคลื่อนที่หรือเว็บแอป แอปพลิเคชันเดสก์ท็อปมีความเกี่ยวข้องน้อยลงเรื่อยๆ นอกจากนี้ พวกเขายังมีแนวโน้มที่จะไม่เป็นมากกว่าไคลเอนต์ที่ร่ำรวยสำหรับเว็บแอป—อิเลคตรอนเป็นแพลตฟอร์มที่ได้รับความนิยม
นี่หมายความว่าในไม่ช้าเราจะละทิ้งเดสก์ท็อปเป็นแพลตฟอร์มหรือไม่? ไม่ แน่นอน ฉันจะไม่พูดแบบนั้น นอกจากนี้ ในขณะที่แอป GUI ดูเหมือนจะหยุดทำงานเมื่อเร็วๆ นี้ แต่ก็มีส่วนแอปเดสก์ท็อปที่เติบโตอย่างต่อเนื่อง
คุณเคยเห็นภาพยนตร์เรื่องใดที่มีแฮ็กเกอร์หรือไม่? บ่อยครั้ง คนเหล่านี้แสดงการทำงานอยู่หน้าจอภาพโดยแสดงเทอร์มินัลบางประเภท (มักมีพื้นหลังสีเข้มและพื้นหน้าสว่าง) ในทางกลับกันเทอร์มินัลนี้มีแนวโน้มที่จะเต็มไปด้วยตัวอักษรที่ส่งผ่านซึ่งดูเหมือนจะมีความหมายบางอย่างต่อผู้ที่ดูพวกเขา
การแสดงแทนแฮ็กเกอร์ในการดำเนินการดังกล่าวมักเยาะเย้ยโดยนักพัฒนามืออาชีพ และยังมีบางโปรแกรมที่จำลองเอฟเฟกต์ "แฮ็กเกอร์" ต่างๆ เพื่อความสนุกสนาน
อย่างไรก็ตาม ในโลกแห่งความเป็นจริง เครื่องมือบรรทัดคำสั่งไม่ได้ถูกใช้เพื่อความบันเทิง
ทำไมเรายังคงใช้เครื่องมืออินเทอร์เฟซบรรทัดคำสั่ง
บทความนี้เน้นด้านการปฏิบัติจริงของการใช้เครื่องมืออินเทอร์เฟซบรรทัดคำสั่ง (CLI) การรู้คำสั่ง CLI และการใช้เครื่องมือที่มีคุณภาพสามารถทำให้คุณมีประสิทธิผลมากขึ้น และยังสามารถเปิดประตูสู่แนวทางการทำงานอัตโนมัติที่หลากหลายซึ่งใช้งานได้จริงกับอินเทอร์เฟซแบบข้อความมากกว่าแอป GUI
คุณสามารถทำงานซ้ำๆ ใน GUI ได้ดีขึ้น จนถึงจุดที่ได้ยินการคลิกหลายครั้งของคุณเป็นครั้งเดียวยาวๆ ปัญหาคือ มันยังไม่สามารถเอาชนะประสิทธิภาพของสคริปต์เฉพาะทางได้ ยิ่งไปกว่านั้น การดำเนินการแบบเดียวกันด้วยตนเองจะทำให้เกิดภาระด้านความรู้ความเข้าใจที่เพิ่มขึ้นและความเป็นไปได้ที่ความผิดพลาดของมนุษย์จะเพิ่มขึ้น ตามปกติแล้ว เราใช้คอมพิวเตอร์เพื่อจัดการกับงานที่มนุษย์อาจพบว่าน่าเบื่อ ซ้ำซาก หรือล้นหลาม
เป็นสิ่งที่ควรค่าแก่การรู้ว่าเครื่องมือเทอร์มินัลสามารถนำเสนออินเทอร์เฟซได้หลายประเภท มีบางอย่างที่ไม่โต้ตอบเช่น ls ซึ่งเพียงแค่ใช้พารามิเตอร์และให้ผลลัพธ์ มีอินเทอร์เฟซแบบโต้ตอบหรือกึ่งโต้ตอบซึ่งมักพบในเครื่องมือจัดการแพ็คเกจ (“คุณแน่ใจหรือไม่ว่าต้องการดำเนินการติดตั้งต่อจากแหล่งที่ไม่ผ่านการตรวจสอบ”) จากนั้นมีอินเทอร์เฟซผู้ใช้แบบข้อความ (TUIs) ซึ่งเป็นแอป GUI แบบโต้ตอบที่ออกแบบมาให้เหมาะสมกับข้อจำกัดของเทอร์มินัล ตัวที่โด่งดังที่สุดคือ Midnight Commander (mc) โคลนของ Norton Commander ที่ได้รับความนิยมอย่างมาก (ใน 90s)
เครื่องมือบรรทัดคำสั่งที่จำเป็น
หากคุณต้องการเป็นผู้อาศัยคอนโซล คุณต้องเตรียมชุดเครื่องมือสำหรับนักพัฒนาบรรทัดคำสั่งขั้นต่ำ ซึ่งเป็นสิ่งจำเป็น สิ่งที่คุณขาดไม่ได้อย่างแน่นอนที่สุดคือ เชลล์แบบโต้ตอบ (มุ่งเป้าไปที่สิ่งที่ทันสมัยด้วยการเติมแท็บที่สะดวก) และ โปรแกรมแก้ไขข้อความ
ตอนนี้ ฉันจะพูดถึง ปรัชญา UNIX ซึ่งมักจะเป็นรากฐานเบื้องหลังการตัดสินใจออกแบบที่ทำโดยผู้เขียนเครื่องมือ ไม่ว่าจะตั้งใจหรือไม่ก็ตาม ประเด็นสำคัญบางประการสามารถสรุปได้ดังนี้:
- ถือว่าทุกอย่างเป็นไฟล์.
- ทำสิ่งเดียวแต่ทำให้ดี
- อ่านจากอินพุตมาตรฐาน เขียนไปยังเอาต์พุตมาตรฐาน และสื่อสารข้อผิดพลาดไปยังสตรีมข้อผิดพลาดมาตรฐาน
- เมื่อทำสำเร็จ ส่งกลับรหัส 0 ค่าที่ไม่ใช่ศูนย์หมายถึงข้อผิดพลาด (ซึ่งสามารถระบุได้ด้วยรหัสส่งคืนที่แน่นอน)
- อนุญาตให้ใช้คำสั่งลูกโซ่และการเขียนสคริปต์
เปลือก
สิ่งแรกที่คุณเห็นเมื่อเปิดเทอร์มินัลคือเชลล์ นี่เป็นส่วนที่ทำให้การโต้ตอบระหว่างผู้ใช้กับเครื่องเป็นไปได้ โดยจะแปลคำสั่งของคุณ แบ่งออกเป็นชื่อโปรแกรมและอาร์กิวเมนต์ และดำเนินการคำสั่งเชลล์ทั้งหมดที่คุณป้อน
ในอดีต มีเปลือกหอยหลายประเภท ในบรรดาสิ่งที่ได้รับความนิยมมากที่สุดคือ csh (C Shell) และการใช้งานต่างๆ ของ Bourne Shell (มักเรียกง่ายๆ ว่า sh ) Bourne Shell ได้ขยายไปสู่ Korn Shell ซึ่งได้รับแรงฉุดลากบางส่วนและยังคงถูกใช้โดยผู้ที่ชื่นชอบ ปัจจุบัน Csh เป็นเชลล์เริ่มต้นบนระบบ BSD บางระบบ ในขณะที่ระบบปฏิบัติการที่คล้าย UNIX อื่น ๆ เกือบทั้งหมดชอบ Bourne Shell บางประเภท การกระจาย Linux มักจะชอบ bash ในขณะที่ Mac OS X มาพร้อมกับ zsh เป็นตัวเลือกเริ่มต้น
มีความเป็นไปได้อื่น ๆ ที่มีอยู่ แต่เป็นที่นิยมน้อยกว่ามาก ยกเว้น Microsoft PowerShell บนระบบ Windows PowerShell ได้รับแรงบันดาลใจส่วนหนึ่งจากเชลล์ UNIX แบบโต้ตอบ เช่น zsh และบางส่วนโดยรันไทม์ .NET แทนที่จะถือว่าทุกอย่างเป็นข้อความ ซึ่งเป็นแนวคิดทั่วไปในโลก UNIX อนุญาตให้จัดการข้อมูลเชิงวัตถุได้
แม้ว่า Microsoft PowerShell จะค่อนข้างเป็นที่นิยมในขอบเขตของ Windows แต่หลายโปรแกรมที่มีต้นกำเนิด UNIX (ที่โดดเด่นที่สุดคือ Git, Autotools หรือ Make) มักจะชอบรูปแบบต่างๆ ของ Bourne Shell ด้วยเหตุนี้ โครงการต่างๆ เช่น msys (ที่มาพร้อมกับ Git สำหรับ Windows), Cygwin หรือ WSL ล่าสุดของ Microsoft จึงถือกำเนิดขึ้น หากคุณต้องการความรู้สึกเหมือน Linux บน Windows MSys เป็นตัวเลือกที่ดีที่สุดที่นี่ หากคุณต้องการให้สภาพแวดล้อม Linux ที่มีคุณสมบัติครบถ้วนสามารถเรียกใช้ไบนารี Linux มาตรฐานได้ WSL คือหนทางที่จะไป สำหรับบางสิ่งระหว่างนั้น—UNIX API แต่คอมไพล์เป็นไฟล์ปฏิบัติการของ Windows (ใช้เมื่อคุณรู้จริง ๆ แล้วว่าทำไมคุณถึงต้องการสิ่งนี้)—Cygwin คือคำตอบ
บรรณาธิการ
เมื่อคุณคุ้นเคยกับเปลือกของคุณแล้ว คุณจะต้องเลือกทักษะที่มีประโยชน์ เนื่องจากงานเขียนโค้ดส่วนใหญ่เกี่ยวข้องกับการเขียนข้อความ (โค้ด, README, คอมมิตข้อความ) ความรู้ที่ดีเกี่ยวกับโปรแกรมแก้ไขข้อความแบบโต้ตอบจึงเป็นสิ่งจำเป็น มีตัวเลือกมากมายให้เลือก และเนื่องจากตัวแก้ไขเป็นหนึ่งในเครื่องมือที่จำเป็นที่สุดสำหรับนักพัฒนาซอฟต์แวร์ใดๆ ก็ตาม อาจมีความคิดเห็นมากมายพอๆ กันกับตัวแก้ไขที่ดีที่สุด
โปรแกรมแก้ไขข้อความที่ได้รับความนิยมมากที่สุดสามารถแบ่งออกเป็นสองกลุ่มพื้นฐาน: โปรแกรมแก้ไขข้อความอย่างง่าย และ โปรแกรมแก้ไขข้อความที่ ตั้งโปรแกรมได้
ทั้งสองแบบเหมาะสำหรับการเขียนโค้ด แต่ตามชื่อที่แนะนำ ตัวแบบตั้งโปรแกรมได้ให้ความสามารถในการกำหนดรูปร่างและปรับแต่งตัวแก้ไขให้เหมาะกับความต้องการของคุณได้อย่างสมบูรณ์แบบ สิ่งนี้มาในราคาที่ย่อมเยา เนื่องจากพวกมันมักจะมีช่วงการเรียนรู้ที่ชันกว่าและอาจต้องใช้เวลาในการตั้งค่ามากขึ้น
โปรแกรมแก้ไขข้อความพื้นฐาน
ในบรรดาโปรแกรมแก้ไขข้อความทั่วไป GNU Nano เป็นโปรแกรมที่แพร่หลายที่สุด อันที่จริงมันเป็นโคลนของตัวแก้ไข pico ดังนั้นหากไม่มีตัวแก้ไขใดในระบบของคุณ คุณสามารถลองใช้ตัวอื่นได้ อีกทางเลือกหนึ่งที่ทันสมัยกว่าสำหรับทั้งสองอย่างคือตัวแก้ไขขนาดเล็ก หากคุณต้องการบางสิ่งที่เรียบง่ายและขยายได้ในเวลาเดียวกัน สิ่งนี้เป็นจุดเริ่มต้นที่ดี
โปรแกรมแก้ไขข้อความ
นักพัฒนาหลายคนพึ่งพาโปรแกรมแก้ไขจากค่ายต่างๆ เช่น Vim และ GNU Emacs บรรณาธิการทั้งสองสามารถเรียกใช้ในคอนโซลหรือในโหมด GUI และทั้งคู่มีผลกระทบต่อการเชื่อมโยงคีย์ที่พบในซอฟต์แวร์อื่น พวกเขาทั้งสองไม่เพียงเสนอ API เท่านั้น แต่ยังเสนอภาษาโปรแกรมจริงในตัวด้วย Emacs มุ่งเน้นไปที่ LISP และ Vim ใช้ VimL ของตัวเอง แต่ก็มีส่วนต่อประสานกับภาษาสคริปต์ยอดนิยมอื่น ๆ (เช่น Lua, Perl, Python หรือ Ruby) แนวทางล่าสุดสำหรับ Vim ที่เรียกว่า Neovim ก็ควรค่าแก่การกล่าวถึงเช่นกัน เนื่องจากมันเริ่มได้รับการติดตามอย่างจริงจัง
อาจทำให้สับสนบ้าง แต่ก็มีตัวแก้ไขชื่อ vi ซึ่งเป็นบรรพบุรุษของ Vim (ซึ่งบังเอิญหมายถึง " Vi i m ได้รับการพิสูจน์แล้ว") มันง่ายกว่า Vim มาก แต่ถ้าคุณมีความมั่นใจมากพอที่จะเขียนใน Vim ก็ไม่ควรท้าทายคุณถ้าคุณพบว่าตัวเองจำเป็นต้องใช้ vi
เนื่องจากโดยปกติแล้ว pico/GNU Nano และ vi/Vim จะติดตั้งไว้ล่วงหน้าบนระบบต่างๆ ก็ตาม อย่างน้อยจึงควรทำความเข้าใจพื้นฐาน (การออกจาก Vim เป็นปัญหาที่ยากสำหรับผู้เริ่มต้น) ด้วยวิธีนี้ หากคุณต้องการแก้ไขบางสิ่งบนเครื่องระยะไกล คุณจะพร้อมไม่ว่าตัวแก้ไขใดจะมีอยู่แล้ว ในอุปกรณ์ส่วนตัวของคุณ คุณสามารถใช้ตัวแก้ไขใดก็ได้ที่คุณรู้สึกว่าสะดวกที่สุด
ตัวแก้ไขระบบเริ่มต้น
สิ่งสุดท้ายที่ควรทราบคือ ระบบของคุณอาจมีสิ่งที่เรียกว่าตัว แก้ไขเริ่มต้น
ตัวแปรสภาพแวดล้อม $EDITOR
ชี้ไปที่ตัวแก้ไขเริ่มต้นและในเชลล์ที่เข้ากันได้กับบอร์น (sh, bash, ksh, zsh) คุณสามารถดูได้โดยป้อน echo $EDITOR
หากค่าแตกต่างจากตัวเลือกส่วนตัวของคุณ คุณสามารถตั้งค่าได้ด้วยตนเองโดยเพิ่ม export EDITOR=my-awesome-editor
ให้กับการกำหนดค่ารันไทม์ของเชลล์ ( ~/.profile
, ~./bashrc
, ~/.zshrc
เป็นต้น)
โปรแกรมอื่นๆ เช่น ระบบควบคุมเวอร์ชันและโปรแกรมรับส่งเมล จะใช้โปรแกรมแก้ไขนี้เมื่อต้องการป้อนข้อความที่ยาวขึ้น
มัลติเพล็กเซอร์
ทันทีที่คุณเริ่มทำเรื่องร้ายแรงใน CLI คุณจะพบกับข้อจำกัดในการเปิดแอปพลิเคชันไว้เพียงแอปพลิเคชันเดียวในเวลาใดก็ตาม เมื่อเขียนโค้ด คุณอาจต้องการแก้ไขโค้ด รัน แก้ไขข้อผิดพลาด และดำเนินการอีกครั้ง เมื่อค้นหาจุดบกพร่อง คุณอาจต้องการแสดงรายการบันทึกและดูว่าสิ่งใดถูกบันทึกเมื่อคุณส่งคำขอไปยังเซิร์ฟเวอร์ โดยทั่วไป นี่อาจหมายถึงการสลับไปมาระหว่างสองแอปพลิเคชันอย่างต่อเนื่องหรือเปิดหน้าต่างเทอร์มินัลหลายหน้าต่าง
นี่คือจุดที่มัลติเพล็กเซอร์เทอร์มินัลสามารถช่วยคุณได้ เมื่อพูดถึงมัลติเพล็กเซอร์ บางคนจะถือว่าหัวข้อนี้เป็นหน้าจอ GNU ทันที เป็นเครื่องมือแรกที่แพร่หลายในประเภทนี้และยังคงได้รับความนิยมอย่างมากในปัจจุบัน (มักถูกติดตั้งตามค่าเริ่มต้น) การแทนที่ที่ทันสมัยของมันคือ tmux ซึ่งไม่น่าแปลกใจเลยที่ย่อมาจาก “ t erminal mu ltiple x er”

สองหน้าต่างนี้อนุญาตให้คุณเปิดมากกว่าหนึ่งหน้าต่างในเทอร์มินัลเซสชันที่กำหนด และสลับไปมาระหว่างเซสชันเหล่านั้นได้อย่างอิสระ ช่วยให้คุณแบ่งหน้าต่างออกเป็นบานหน้าต่าง ซึ่งช่วยให้ใช้งานหลาย ๆ แอปพลิเคชั่นพร้อมกันและสังเกตผลลัพธ์แบบเรียลไทม์ (โดยไม่ต้องเปลี่ยนหน้าต่างใด ๆ เลย) นอกจากนี้ยังทำงานในโหมดไคลเอนต์-เซิร์ฟเวอร์ ซึ่งหมายความว่าคุณสามารถถอดออกได้ทุกเมื่อและกลับมาทำงานต่อจากที่ค้างไว้ได้ในภายหลัง คุณลักษณะสุดท้ายนี้นำไปสู่ความนิยมของ Screen เมื่อผู้คนต้องการเซสชัน IRC แบบถาวร
สำหรับกรณีการใช้งานส่วนใหญ่ GNU Screen หรือ tmux น่าจะเหมาะสำหรับคุณ แต่ถ้าด้วยเหตุผลบางอย่างคุณคิดว่าพวกมันมีทรัพยากรมากเกินไป ก็ยังมีทางเลือกอื่นที่เบากว่า มี dtach/atach และมี abduco พวกเขามีขอบเขตจำกัดแต่สามารถปฏิบัติหน้าที่ของตนได้ดี
ตัวจัดการแพ็คเกจ
ณ จุดนี้ คุณอาจเริ่มคิดถึงการติดตั้งซอฟต์แวร์ดังกล่าวทั้งหมดในเครื่องของคุณ ปัญหาหนึ่งคือเครื่องมือแต่ละตัวมีคำแนะนำในการติดตั้งต่างกัน บางครั้ง คุณจำเป็นต้องดาวน์โหลดแหล่งข้อมูลและคอมไพล์ด้วยตนเอง บางครั้งคุณได้รับไบนารีที่มีอยู่ในตัว และบางครั้งคุณจะได้สิ่งที่เรียกว่า ไบนารีแพ็คเกจ ซึ่งมักจะหมายถึงไฟล์สั่งการที่บีบอัดร่วมกับข้อมูลเมตาบางรายการ
เพื่อให้ขั้นตอนการติดตั้งซอฟต์แวร์ง่ายขึ้น ผู้สร้างระบบปฏิบัติการจึงมาพร้อมกับแนวคิดของตัวจัดการแพ็คเกจ พูดง่ายๆ ก็คือ ตัวจัดการแพ็คเกจก็เหมือนกับร้านแอพสำหรับ CLI และแอพเดสก์ท็อป มันนำหน้าร้านค้าแอพจริงบางทศวรรษ ปัญหาคือเกือบทุกระบบมีตัวจัดการแพ็คเกจของตัวเอง การแจกแจงแบบ Debian, Ubuntu และ GNU/Linux ที่ได้รับนั้นใช้ APT การแจกแจงแบบอิง Red Hat ชอบ yum หรือ DNF ลินุกซ์ distros อื่น ๆ มีวิธีการติดตั้งซอฟต์แวร์ที่แปลกใหม่กว่า และโคลน BSD ที่แตกต่างกันก็เช่นกัน นอกจากตัวจัดการแพ็คเกจในตัวแล้ว ยังมีตัวจัดการที่ผู้ใช้ติดตั้ง เช่น Chocolatey สำหรับ MS Windows และ Homebrew สำหรับ Mac OS X/macOS เมื่อคุณต้องการเขียนคำแนะนำเกี่ยวกับวิธีการติดตั้งโปรแกรมของคุณ คุณอาจจบลงด้วยการเขียนเคสสำหรับแต่ละระบบเหล่านั้น ดูเหมือนจะมากเกินไปใช่มั้ย?
โชคดีที่ระบบสุดท้ายที่กล่าวถึง Homebrew อาจเป็นระบบที่พกพาได้สะดวกที่สุด ต้องขอบคุณ Linuxbrew ซึ่งเป็นพอร์ตของ Homebrew ไปยังระบบ GNU/Linux สิ่งที่ตลกก็คือ มันใช้งานได้บน WSL หากคุณต้องการมีประสบการณ์การใช้งานที่คล้ายคลึงกันบน Microsoft Windows โปรดทราบว่า WSL ไม่ได้รับการสนับสนุนอย่างเป็นทางการ
นอกจากการพกพาแล้ว Homebrew สามารถเสนออะไรได้อีกบ้าง อย่างแรกเลย มันไม่รบกวนแพ็คเกจของระบบ ดังนั้นทุกสิ่งที่คุณติดตั้งจะอยู่บนเลเยอร์ที่แยกจากกันของระบบปฏิบัติการ นอกจากนี้ โดยปกติแล้ว ไม่จำเป็นต้องมีการอนุญาตรูทเพื่อติดตั้งแพ็คเกจ ดังนั้น คุณสามารถมีแพ็คเกจระบบที่เสถียรและผ่านการทดสอบแล้ว แต่ในขณะเดียวกันก็ตรวจสอบเวอร์ชันที่ใหม่กว่าได้โดยไม่ลดทอนความเสถียรของระบบ
หากคุณต้องการทดสอบตัวแก้ไข ฉันได้กล่าวไว้ก่อนหน้านี้ว่าทั้งหมดที่คุณต้องทำบนระบบที่มี Homebrew หรือ Linuxbrew คือการเรียกใช้คำสั่งนี้:
brew install emacs micro nano vim neovim
เงาวับ
สิ่งที่เราได้กล่าวไปแล้วนั้นมีประโยชน์อย่างไม่ต้องสงสัยสำหรับการทำงาน แต่ก็มีแอปพลิเคชั่นที่ยังคงนำความสะดวกสบายมาสู่ชีวิตประจำวันแม้ไม่จำเป็น คุณอาจไม่ต้องการพวกเขา แต่ควรค่าแก่การรู้จักพวกเขาเสมอ
ตัวกรองแบบโต้ตอบ
การค้นหาประวัติคำสั่งอาจเป็นเรื่องที่น่าเบื่อ ในขณะที่ทั้ง bash และ zsh มีฟีเจอร์การโยงปุ่ม Ctrl+R จะแสดงเพียงการแทนที่ครั้งละหนึ่งรายการเท่านั้น ยิ่งไปกว่านั้น คุณต้องป้อนข้อความที่คุณใช้ก่อนหน้านี้ให้ถูกต้อง เนื่องจากเป็นการดำเนินการทั่วไป เมื่อคุณเริ่มใช้บรรทัดคำสั่ง ดูเหมือนว่าจะเป็นจุดที่ดีสำหรับการปรับปรุง
ตัวกรองแบบโต้ตอบ เช่น fzy, percol, peco หรือ fzf ช่วยคุณในการกรองข้อความยาวๆ นี่อาจเป็นประวัติคำสั่งดังกล่าว โค้ดทั้งหมดในไดเร็กทอรีโครงการ หรือรายการชื่อไฟล์ที่สร้างโดย find .
. แนวคิดทั่วไปในที่นี้คือการนำเสนอให้คุณเห็นทุกบรรทัดที่มี จากนั้นจึงใช้อัลกอริธึมการค้นหาที่คลุมเครือเพื่อกรองทุกสิ่งที่ไม่ตรงกันออกไป
ตัวอย่างเช่น การผูก Ctrl+R กับ fzf จะแสดงรายการคำสั่งล่าสุด ซึ่งคุณสามารถเลื่อนขึ้นและลงโดยใช้ลูกศร หรือพิมพ์ git
เพื่อแสดงเฉพาะคำสั่งที่มี Git อยู่ที่ไหนสักแห่งภายใน โดยส่วนตัวแล้ว เมื่อฉันทำงานกับเชลล์ที่ไม่มีตัวกรองแบบโต้ตอบ ฉันรู้สึกหลงทางเล็กน้อยในทันใด คุณลักษณะนี้น่าสนใจจริงๆ!
นอกจากนี้ คุณยังสามารถทำให้ตัวกรองแบบโต้ตอบของคุณพร้อมใช้งานภายในโปรแกรมแก้ไขข้อความที่ตั้งโปรแกรมได้ ด้วยวิธีนี้ คุณจะมีความสามารถในการค้นหาแบบรวมเป็นหนึ่งระหว่างเชลล์และเอดิเตอร์ของคุณ
ตัวนำทางแบบโต้ตอบ
Facebook PathPicker ช่วยได้มากเมื่อฉันทำงานกับโปรเจ็กต์ C++ เป็นส่วนใหญ่ บันทึกข้อผิดพลาดที่สร้างโดยคอมไพเลอร์อาจมีขนาดใหญ่และน่ารังเกียจ และความสามารถในการค้นหาเส้นทางจริงภายในบันทึกนั้นเป็นประโยชน์ต่อประสิทธิภาพการทำงาน
ในไฟล์ข้อความที่กำหนด หรือเนื้อหาของหน้าจอของคุณเมื่อใช้กับ tmux fpp จะกรองทุกอย่างยกเว้นพาธของไฟล์ จากนั้นจะแสดง UI ซึ่งคุณสามารถเลือกเส้นทางเหล่านั้นได้ตั้งแต่หนึ่งเส้นทางขึ้นไปและเรียกใช้คำสั่งกับเส้นทางเหล่านั้น คำตอบที่พบบ่อยที่สุดคือการเปิดไฟล์ในตัวแก้ไข ซึ่งเป็นการดำเนินการเริ่มต้น
Git UI
โอกาสอย่างน้อยหนึ่งโครงการที่คุณทำงานจะใช้ Git เป็นระบบควบคุมเวอร์ชัน แม้ว่า Git CLI จะทรงพลังโดยสิ้นเชิง แต่ Git CLI ก็ไม่ใช่จุดสุดยอดของประสบการณ์ผู้ใช้ที่ยอดเยี่ยม เพื่อช่วยให้คุณไม่ต้องเครียดในการอ่านตัวเลือกทั้งหมดใน Git help $SUBCOMMAND
ฉันแนะนำให้คุณลองใช้ tig มันมี UI คอนโซลที่ดีสำหรับการดำเนินการที่ได้รับประโยชน์จากมัน เช่น log
หรือ blame
เครื่องมืออื่นที่มีจุดมุ่งหมายเพื่อช่วยเหลือผู้ใช้ GIt คือ fac ซึ่งเป็นตัวย่อสำหรับ Fix All Conflicts อย่างที่คุณอาจเดาได้ มันจะมีประโยชน์เมื่อคุณพบข้อขัดแย้งขณะทำการผสานหรือรีเบส เป็นทางเลือกแทนเครื่องมือผสานอื่นๆ เช่น vimdiff
ตัวจัดการไฟล์
มีช่วงเวลาหนึ่งในยุค 90 ที่ทุกคนต้องการตัวจัดการไฟล์แบบสองบานหน้าต่าง เทรนด์เริ่มต้นด้วย Norton Commander คนอื่นๆ หลายคนเดินตามเส้นทางเดียวกัน แต่คนที่ยังคงเห็นฐานผู้ใช้ที่เสถียรคือ Midnight Commander กรณีการใช้งานที่ชัดเจนที่สุดคือการใช้ mc เพื่อจัดการไฟล์ในเครื่อง แต่ก็มีประโยชน์มากเมื่อทำงานกับเครื่องระยะไกล
เช่นเดียวกับโปรแกรมบรรทัดคำสั่งส่วนใหญ่ มันมีน้ำหนักเบามาก ดังนั้นจึงไม่มีปัญหาในการใช้งานบน ssh และด้วยการสนับสนุนโปรโตคอล FTP และ FISH คุณสามารถมองเห็นระบบไฟล์ในเครื่องได้ในบานหน้าต่างเดียวและอีกบานหนึ่งจากระยะไกลในอีกบานหนึ่ง—สะดวก คุณลักษณะเมื่อคุณต้องการหลีกเลี่ยงการพิมพ์หรือคัดลอกชื่อไฟล์เป็นอาร์กิวเมนต์ใน scp
เครื่องมือ CLI เพื่อความสนุก
“การทำงานทั้งหมดและการไม่เล่นทำให้แจ็คเป็นเด็กที่น่าเบื่อ” พวกเขากล่าว มีโปรแกรม บรรทัดคำสั่ง และอื่นๆ มากมายที่ให้บริการความบันเทิงของคุณเท่านั้น วิดีโอเกม Rogue จัดอยู่ในหมวดหมู่นี้ มันยังให้ชื่อแก่เกมทุกประเภทอีกด้วย! ของเล่นยอดนิยมอื่นๆ เช่น โชคลาภและคำบอกเล่า ซึ่งจะทำให้วันของคุณดูน่าเบื่อน้อยลงหากคุณใช้ของเล่นเหล่านี้ในที่ใดที่หนึ่งในสคริปต์ CI ของคุณ เป็นต้น
แต่สำหรับพวกเราบางคน ความน่าดึงดูดใจหลักของการใช้คอนโซลตั้งแต่แรกคือการรู้สึกเหมือนเป็นแฮ็กเกอร์ในภาพยนตร์ No More Secrets และ Hollywood Hacker เป็นตัวแทนของกลุ่มนี้เป็นอย่างดี ลองใช้เมื่อมีคนดูคุณทำงาน และความน่าเชื่อถือของแฮ็กเกอร์จะเพิ่มขึ้นอย่างแน่นอน!
Command Line ในทางปฏิบัติ
ดังนั้น อะไรที่น่าสนใจมากเกี่ยวกับบรรทัดคำสั่งที่ชดเชยชั่วโมงที่ใช้ในการเรียนรู้วิธีใช้เชลล์ โปรแกรมแก้ไข และสวิตช์ทั้งหมดของแอปต่างๆ คำตอบสั้น ๆ คือ ประสิทธิภาพ ซึ่งมาจากสองสิ่ง:
หนึ่งคือเมื่อคุณถูกนำเสนอด้วยหน้าต่างเทอร์มินัลและไม่มีอะไรมากไปกว่านี้ คุณสามารถโฟกัสได้เข้มข้นขึ้น เนื่องจากไม่มีอะไรมากให้กวนใจคุณ ไม่มีการแจ้งเตือนปรากฏขึ้น ไม่มีโฆษณา ไม่มีรูปภาพลูกแมวแสนสวย เพียงคุณและเป้าหมายของคุณ
สิ่งที่สองคือระบบอัตโนมัติ คุณสามารถใส่การกระทำที่รวมกันบ่อยๆ หลายๆ อย่างในสคริปต์แล้วเรียกโดยรวมในภายหลัง แทนที่จะต้องพิมพ์ด้วยมือทุกครั้ง คุณสามารถกลับไปใช้คำสั่งที่ซับซ้อนโดยเฉพาะที่คุณเคยเขียนได้อย่างรวดเร็วโดยค้นหาจากประวัติของเชลล์ของคุณ โดยพื้นฐานแล้ว คุณสามารถบันทึกและเล่นซ้ำอะไรก็ได้ และโค้ดนี้มีให้เป็นเอกสารประกอบสิ่งที่คุณทำ
ความสามารถในการเพิ่มนามแฝงยังมีส่วนช่วยในการได้รับ ตัวอย่างเช่น ฉันพบว่าตัวเองมักจะสร้างคอมมิตใน Git โดยอัปเดตอันเดียวกันจนกว่าจะสมบูรณ์แบบ (ในขณะนี้) เมื่อฉันแสดงไฟล์ที่ต้องการแล้ว ฉันเรียกใช้ git carmh
อย่าพยายามค้นหาในคู่มือ เนื่องจากเป็นนามแฝงส่วนตัวของฉัน หมายถึง commit --amend --reuse-message=HEAD
มันช่วยประหยัดการพิมพ์บางอย่างอย่างแน่นอน
สิ่งนั้นคือ ผู้คนรู้สึกเบื่อหน่ายกับการทำสิ่งเดิมๆ ซ้ำแล้วซ้ำเล่า และความเบื่อหน่ายก็ลดโฟกัสลง นี้สามารถนำไปสู่ข้อผิดพลาดและข้อผิดพลาด วิธีเดียวที่จะหลีกเลี่ยงสิ่งเหล่านี้คืออย่าสลับระหว่างการกระทำที่มีโฟกัสสูงและโฟกัสต่ำ การเขียนโค้ดมีโฟกัสสูง และการทบทวนข้อความยืนยันและเนื้อหามีโฟกัสสูง แต่เมื่อคุณต้องการคลิกเชิงกลหลายครั้งที่นี่และที่นั่นเพื่อไปยังขั้นตอนของการตรวจสอบการคอมมิต โอกาสที่โฟกัสของคุณจะลดลง แน่นอนว่าบรรทัดคำสั่งไม่ได้ไม่มีกิจกรรมทางกลดังกล่าว แต่ด้วยระบบอัตโนมัติ คุณจึงสามารถหลีกเลี่ยงสิ่งเหล่านั้นได้เกือบทั้งหมด
การสำรวจเพิ่มเติม
คุณอาจทราบเครื่องมือบรรทัดคำสั่งบางส่วนหรือทั้งหมดที่กล่าวถึงในบทความนี้แล้ว คุณอาจได้เรียนรู้สิ่งใหม่และมีประโยชน์ขณะอ่าน ยอดเยี่ยมมาก เป้าหมายของฉันที่นี่ไม่ใช่การนำเสนอภาพรวมและการเปรียบเทียบเครื่องมือต่างๆ อย่างครอบคลุม แต่เพื่อสาธิตเครื่องมือสำคัญสองสามอย่างที่ฉันพบว่ามีประโยชน์ในการทำงานประจำวัน หวังว่าคุณจะพบว่าเครื่องมือเหล่านี้มีประโยชน์ ด้วย.
มีโปรแกรมบรรทัดคำสั่งที่น่าสนใจกว่านี้อีกมาก และหากคุณสนใจโปรแกรมเหล่านี้ ผมขอแนะนำให้ตรวจสอบรายการเครื่องมือบรรทัดคำสั่งที่ดีที่สุดบางตัวที่รวบรวมโดย Awesome Shell ที่มีอยู่ในปัจจุบัน
แอพ GUI ส่วนใหญ่มีเทอร์มินัลคู่กัน ซึ่งรวมถึงเว็บเบราว์เซอร์ โปรแกรมรับส่งเมล โปรแกรมแชท (IRC, Slack, XMPP), ชุดโปรแกรม PIM หรือสเปรดชีต หากคุณรู้จักโปรแกรมดีๆ ที่ไม่ได้กล่าวถึง โปรดแสดงความคิดเห็น