เนื้อหาซึ่งเป็นคำแปลที่เราเผยแพร่ในวันนี้ มีไว้สำหรับผู้ที่ต้องการเชี่ยวชาญบรรทัดคำสั่ง Linux ความสามารถในการใช้เครื่องมือนี้อย่างมีประสิทธิภาพสามารถประหยัดเวลาได้มาก โดยเฉพาะเราจะพูดถึง Bash เชลล์และคำสั่งที่มีประโยชน์ 21 คำสั่งที่นี่ นอกจากนี้เรายังจะพูดถึงวิธีใช้แฟล็กคำสั่งและนามแฝง Bash เพื่อเพิ่มความเร็วในการพิมพ์คำสั่งแบบยาว
→
ข้อตกลงและเงื่อนไข
เมื่อคุณเรียนรู้ที่จะทำงานกับบรรทัดคำสั่ง Linux คุณจะพบกับแนวคิดมากมายที่เป็นประโยชน์ในการนำทาง บางส่วนเช่น "Linux" และ "Unix" หรือ "shell" และ "terminal" บางครั้งก็สับสน เรามาพูดถึงข้อกำหนดเหล่านี้และข้อกำหนดสำคัญอื่นๆ กันดีกว่า
ตอนนี้เราได้พูดถึงคำศัพท์ที่สำคัญแล้ว ฉันอยากจะชี้ให้เห็นว่าฉันจะใช้คำว่า "Bash", "shell" และ "command line" สลับกันที่นี่ เช่นเดียวกับคำว่า "directory" และ "folder"
มาตรฐาน stdin
), เอาต์พุตมาตรฐาน (เอาต์พุตมาตรฐาน, stdout
) และเอาต์พุตข้อผิดพลาดมาตรฐาน (ข้อผิดพลาดมาตรฐาน stderr
).
หากในคำสั่งตัวอย่างที่จะได้รับด้านล่างคุณจะพบสิ่งที่ต้องการ my_whatever
- นี่หมายความว่าชิ้นส่วนนี้จำเป็นต้องถูกแทนที่ด้วยของของคุณ เช่น ชื่อไฟล์.
ตอนนี้ ก่อนที่จะดำเนินการวิเคราะห์คำสั่งที่ใช้กับเนื้อหานี้ เรามาดูรายการและคำอธิบายสั้น ๆ กันก่อน
21 คำสั่งทุบตี
▍รับข้อมูล
man
: แสดงคู่มือผู้ใช้ (วิธีใช้) สำหรับคำสั่งpwd
: แสดงข้อมูลเกี่ยวกับไดเร็กทอรีการทำงานls
: แสดงเนื้อหาของไดเร็กทอรีps
: ช่วยให้คุณดูข้อมูลเกี่ยวกับกระบวนการที่กำลังทำงานอยู่
▍การจัดการระบบไฟล์
cd
: เปลี่ยนไดเร็กทอรีการทำงานtouch
: สร้างไฟล์.mkdir
: สร้างไดเรกทอรีcp
: คัดลอกไฟล์mv
: ย้ายหรือลบไฟล์ln
: สร้างลิงค์
▍การเปลี่ยนเส้นทาง I/O และไปป์ไลน์
<
: เปลี่ยนเส้นทางstdin
.>
: เปลี่ยนเส้นทางstdout
.|
: ไพพ์เอาต์พุตของคำสั่งหนึ่งไปยังอินพุตของคำสั่งอื่น
▍การอ่านไฟล์
head
: อ่านจุดเริ่มต้นของไฟล์tail
: อ่านจุดสิ้นสุดของไฟล์cat
: อ่านไฟล์และพิมพ์เนื้อหาลงบนหน้าจอ หรือต่อไฟล์
▍การลบไฟล์ การหยุดกระบวนการ
rm
: ลบไฟล์kill
: หยุดกระบวนการ
▍ค้นหา
grep
: ค้นหาข้อมูลag
: คำสั่งขั้นสูงสำหรับการค้นหา
▍การเก็บถาวร
tar
: การสร้างไฟล์เก็บถาวรและทำงานกับไฟล์เหล่านั้น
เรามาพูดถึงคำสั่งเหล่านี้โดยละเอียดกันดีกว่า
รายละเอียดทีม
ขั้นแรกให้จัดการกับคำสั่งซึ่งผลลัพธ์จะออกมาในรูปแบบ stdout
. โดยปกติผลลัพธ์เหล่านี้จะปรากฏในหน้าต่างเทอร์มินัล
▍รับข้อมูล
man command_name
: แสดงคำแนะนำคำสั่ง เช่น ข้อมูลช่วยเหลือ
pwd
: แสดงเส้นทางไปยังไดเร็กทอรีการทำงานปัจจุบัน ในระหว่างการทำงานกับบรรทัดคำสั่ง ผู้ใช้มักจะต้องค้นหาว่าเขาอยู่ที่ไหนในระบบ
ls
: แสดงเนื้อหาของไดเร็กทอรี คำสั่งนี้ใช้ค่อนข้างบ่อยเช่นกัน
ls -a
: แสดงไฟล์ที่ซ่อน ใช้ธงที่นี่ -a
คำสั่ง ls
. การใช้แฟล็กช่วยปรับแต่งพฤติกรรมของคำสั่ง
ls -l
: แสดงข้อมูลโดยละเอียดเกี่ยวกับไฟล์
โปรดทราบว่าสามารถรวมแฟล็กได้ ตัวอย่างเช่น - เช่นนี้: ls -al
.
ps
: ดูกระบวนการที่กำลังทำงานอยู่
ps -e
: แสดงข้อมูลเกี่ยวกับกระบวนการที่ทำงานอยู่ทั้งหมด ไม่ใช่แค่กระบวนการที่เกี่ยวข้องกับเชลล์ผู้ใช้ปัจจุบัน คำสั่งนี้มักใช้ในรูปแบบนี้
▍การจัดการระบบไฟล์
cd my_directory
: เปลี่ยนไดเร็กทอรีการทำงานเป็น my_directory
. หากต้องการเลื่อนขึ้นหนึ่งระดับในแผนผังไดเร็กทอรี ให้ใช้ my_directory
เส้นทางสัมพัทธ์ ../
.
คำสั่งซีดี
touch my_file
: การสร้างไฟล์ my_file
ตามเส้นทางที่กำหนด
mkdir my_directory
: สร้างโฟลเดอร์ my_directory
ตามเส้นทางที่กำหนด
mv my_file target_directory
: ย้ายไฟล์ my_file
ไปยังโฟลเดอร์ target_directory
. เมื่อระบุไดเร็กทอรีเป้าหมาย คุณต้องใช้เส้นทางที่แน่นอน (และไม่ใช่โครงสร้างแบบเดียวกัน) ../
).
ทีม mv
สามารถใช้เพื่อเปลี่ยนชื่อไฟล์หรือโฟลเดอร์ ตัวอย่างเช่น อาจมีลักษณะดังนี้:
mv my_old_file_name.jpg my_new_file_name.jpg
: สร้างสำเนาของไฟล์
cp my_source_file target_directorymy_source_file
และวางไว้ในโฟลเดอร์ target_directory
.
ln -s my_source_file my_target_file
: สร้างลิงค์สัญลักษณ์ my_target_file
ต่อไฟล์ my_source_file
. หากคุณเปลี่ยนลิงก์ ไฟล์ต้นฉบับก็จะเปลี่ยนไปด้วย
ถ้าเป็นไฟล์ my_source_file
จะถูกลบออกไปแล้ว my_target_file
จะยังคง. ธง -s
คำสั่ง ln
ช่วยให้คุณสร้างลิงค์สำหรับไดเรกทอรี
ตอนนี้เรามาพูดถึงการเปลี่ยนเส้นทาง I/O และไปป์ไลน์
▍การเปลี่ยนเส้นทาง I/O และไปป์ไลน์
my_command < my_file
: แทนที่ตัวอธิบายไฟล์อินพุตมาตรฐาน (stdin
) ต่อไฟล์ my_file
. สิ่งนี้มีประโยชน์หากคำสั่งกำลังรออินพุตจากคีย์บอร์ด และข้อมูลนี้ถูกบันทึกไว้ในไฟล์แล้ว
my_command > my_file
: เปลี่ยนเส้นทางผลลัพธ์ของคำสั่ง เช่น สิ่งที่ปกติจะเข้าไปอยู่ในนั้น stdout
และส่งออกไปยังหน้าจอเป็นไฟล์ my_file
. ถ้าเป็นไฟล์ my_file
ไม่มีอยู่ - มันถูกสร้างขึ้น หากมีไฟล์อยู่ ไฟล์นั้นจะถูกเขียนทับ
เช่น หลังจากรันคำสั่งแล้ว ls > my_folder_contents.txt
ไฟล์ข้อความจะถูกสร้างขึ้นโดยมีรายการสิ่งที่อยู่ในไดเร็กทอรีการทำงานปัจจุบัน
ถ้าแทนสัญลักษณ์ >
ใช้การก่อสร้าง >>
จากนั้น โดยมีเงื่อนไขว่าไฟล์ที่มีการเปลี่ยนเส้นทางเอาต์พุตของคำสั่ง ไฟล์นี้จะไม่ถูกเขียนทับ ข้อมูลจะถูกเพิ่มต่อท้ายไฟล์นี้
ตอนนี้เรามาดูการประมวลผลไปป์ไลน์ข้อมูลกัน
ผลลัพธ์ของคำสั่งหนึ่งจะถูกป้อนเข้าไปในอินพุตของคำสั่งอื่น มันเหมือนกับการต่อท่อหนึ่งเข้ากับอีกท่อหนึ่ง
first_command | second_command
: สัญลักษณ์สายพานลำเลียง |
ใช้เพื่อส่งเอาต์พุตของคำสั่งหนึ่งไปยังอีกคำสั่งหนึ่ง สิ่งที่คำสั่งทางด้านซ้ายของโครงสร้างที่อธิบายส่งไป stdout
, ล้มลง stdin
คำสั่งทางด้านขวาของสัญลักษณ์ไปป์ไลน์
บน Linux ข้อมูลสามารถไปป์ไลน์ได้โดยใช้คำสั่งที่มีรูปแบบถูกต้อง มักกล่าวกันว่าทุกสิ่งใน Linux นั้นเป็นไปป์ไลน์
คุณสามารถเชื่อมโยงหลายคำสั่งโดยใช้สัญลักษณ์ไปป์ไลน์ ดูเหมือนว่านี้:
first_command | second_command | third_command
ไปป์ไลน์ของคำสั่งหลายคำสั่งสามารถเปรียบเทียบได้กับไปป์ไลน์
โปรดทราบว่าเมื่อคำสั่งไปทางด้านซ้ายของสัญลักษณ์ |
, ส่งออกบางสิ่งไปที่ stdout
สิ่งที่เธอส่งออกออกมาจะพร้อมใช้งานทันที stdin
ทีมที่สอง นั่นคือปรากฎว่าเรากำลังจัดการกับการดำเนินการคำสั่งแบบขนานโดยใช้ไปป์ไลน์ บางครั้งสิ่งนี้อาจนำไปสู่ผลลัพธ์ที่ไม่คาดคิด รายละเอียดเกี่ยวกับเรื่องนี้สามารถอ่านได้
ตอนนี้เรามาพูดถึงการอ่านข้อมูลจากไฟล์และแสดงบนหน้าจอ
▍การอ่านไฟล์
head my_file
: อ่านบรรทัดจากจุดเริ่มต้นของไฟล์และพิมพ์ลงบนหน้าจอ คุณสามารถอ่านได้ไม่เพียงแต่เนื้อหาของไฟล์เท่านั้น แต่ยังรวมถึงสิ่งที่คำสั่งส่งออกออกมาด้วย stdin
ใช้คำสั่งนี้เป็นส่วนหนึ่งของไปป์ไลน์
tail my_file
: อ่านบรรทัดจากท้ายไฟล์ คำสั่งนี้สามารถใช้ในไปป์ไลน์ได้
หัว (หัว) อยู่ข้างหน้า และหาง (หาง) อยู่ด้านหลัง
หากคุณกำลังทำงานกับข้อมูลโดยใช้ไลบรารี pandas ให้ใช้คำสั่ง head
и tail
ควรจะคุ้นเคยกับคุณ หากไม่เป็นเช่นนั้น ลองดูรูปด้านบนแล้วคุณจะจำได้ง่าย
พิจารณาวิธีอื่นในการอ่านไฟล์ เรามาพูดถึงคำสั่งกัน cat
.
ทีม cat
พิมพ์เนื้อหาของไฟล์ลงบนหน้าจอหรือต่อหลายไฟล์เข้าด้วยกัน ขึ้นอยู่กับจำนวนไฟล์ที่ถูกส่งผ่านไปยังคำสั่งนี้เมื่อถูกเรียก
คำสั่งแมว
cat my_one_file.txt
: เมื่อไฟล์เดียวถูกส่งผ่านไปยังคำสั่งนี้ ไฟล์นั้นจะส่งออกไปที่ stdout
.
หากคุณให้ไฟล์ตั้งแต่สองไฟล์ขึ้นไป มันจะทำงานแตกต่างออกไป
cat my_file1.txt my_file2.txt
: เมื่อได้รับไฟล์หลายไฟล์เป็นอินพุต คำสั่งนี้จะเชื่อมเนื้อหาเข้าด้วยกันและแสดงสิ่งที่เกิดขึ้น stdout
.
หากจำเป็นต้องบันทึกผลลัพธ์ของการต่อไฟล์เป็นไฟล์ใหม่ คุณสามารถใช้โอเปอเรเตอร์ได้ >
:
cat my_file1.txt my_file2.txt > my_new_file.txt
ตอนนี้เรามาพูดถึงวิธีลบไฟล์และหยุดกระบวนการกัน
▍การลบไฟล์ การหยุดกระบวนการ
rm my_file
: ลบไฟล์ my_file
.
rm -r my_folder
: ลบโฟลเดอร์ my_folder
และไฟล์และโฟลเดอร์ทั้งหมดที่มีอยู่ ธง -r
บ่งชี้ว่าคำสั่งจะทำงานในโหมดเรียกซ้ำ
เพื่อป้องกันไม่ให้ระบบขอการยืนยันทุกครั้งที่ลบไฟล์หรือโฟลเดอร์ ให้ใช้แฟล็ก -f
.
kill 012345
: หยุดกระบวนการทำงานที่ระบุ โดยให้เวลาในการปิดระบบอย่างสง่างาม
kill -9 012345
: บังคับให้ยุติกระบวนการทำงานที่ระบุ ดูแฟล็ก -s SIGKILL
ความหมายเหมือนกับธง -9
.
▍ค้นหา
คุณสามารถใช้คำสั่งต่างๆ เพื่อค้นหาข้อมูลได้ โดยเฉพาะอย่างยิ่ง - grep
, ag
и ack
. มาเริ่มทำความรู้จักกับคำสั่งเหล่านี้กันดีกว่า grep
. นี่เป็นคำสั่งที่ผ่านการทดสอบตามเวลาและเชื่อถือได้ ซึ่งช้ากว่าคำสั่งอื่นๆ และไม่สะดวกในการใช้เท่าที่ควร
คำสั่ง grep
grep my_regex my_file
: ค้นหา my_regex
в my_file
. หากพบรายการที่ตรงกัน ระบบจะส่งคืนสตริงทั้งหมดสำหรับการจับคู่แต่ละรายการ ค่าเริ่มต้น my_regex
ถือเป็นการแสดงออกปกติ
grep -i my_regex my_file
: การค้นหาดำเนินการในลักษณะที่ไม่คำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่
grep -v my_regex my_file
: ส่งคืนแถวทั้งหมดที่ไม่มี my_regex
. ธง -v
หมายถึง การผกผัน มีลักษณะคล้ายตัวดำเนินการ NOT
พบได้ในภาษาการเขียนโปรแกรมหลายภาษา
grep -c my_regex my_file
: ส่งกลับข้อมูลเกี่ยวกับจำนวนรายการที่ตรงกันสำหรับรูปแบบการค้นหาที่พบในไฟล์
grep -R my_regex my_folder
: ทำการค้นหาแบบเรียกซ้ำในไฟล์ทั้งหมดที่อยู่ในโฟลเดอร์ที่ระบุและในโฟลเดอร์ที่ซ้อนอยู่ในนั้น
ตอนนี้เรามาพูดถึงทีมกันดีกว่า ag
. เธอมาทีหลัง grep
มันเร็วกว่าสะดวกกว่าในการทำงานด้วย
คำสั่งเอจี
ag my_regex my_file
: ส่งคืนข้อมูลเกี่ยวกับหมายเลขบรรทัดและบรรทัดที่พบรายการที่ตรงกัน my_regex
.
ag -i my_regex my_file
: การค้นหาดำเนินการในลักษณะที่ไม่คำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่
ทีม ag
ประมวลผลไฟล์โดยอัตโนมัติ .gitignore
และแยกสิ่งที่พบในโฟลเดอร์หรือไฟล์ที่อยู่ในไฟล์นั้นออกจากเอาต์พุต มันสะดวกสบายมาก
ag my_regex my_file -- skip-vcs-ignores
: เนื้อหาของไฟล์ควบคุมเวอร์ชันอัตโนมัติ (เช่น .gitignore
) จะไม่นำมาพิจารณาในการค้นหา
นอกจากนี้เพื่อที่จะได้บอกกับทีมงานว่า ag
เส้นทางไฟล์ที่คุณต้องการยกเว้นจากการค้นหา คุณสามารถสร้างไฟล์ได้ .agignore
.
ในตอนต้นของส่วนนี้ เราได้กล่าวถึงคำสั่งแล้ว ack
. ทีม ack
и ag
คล้ายกันมาก เราสามารถพูดได้ว่า 99% ใช้แทนกันได้ อย่างไรก็ตามทางทีมงาน ag
ทำงานเร็วขึ้น นั่นคือเหตุผลที่ฉันอธิบายไว้
ตอนนี้เรามาพูดถึงการทำงานกับไฟล์เก็บถาวร
▍การเก็บถาวร
tar my_source_directory
: เชื่อมต่อไฟล์จากโฟลเดอร์ my_source_directory
ให้เป็นไฟล์ tarball ไฟล์เดียว ไฟล์ดังกล่าวมีประโยชน์สำหรับการถ่ายโอนไฟล์ชุดใหญ่ให้กับบุคคลอื่น
คำสั่ง tar
ไฟล์ tarball ที่สร้างโดยคำสั่งนี้เป็นไฟล์ที่มีนามสกุล .tar
(เก็บเทป) ความจริงที่ว่าคำว่า "เทป" (เทป) ถูกซ่อนอยู่ในชื่อของคำสั่งและในนามสกุลของชื่อไฟล์ที่สร้างขึ้นจะระบุว่าคำสั่งนี้มีอยู่นานแค่ไหน
tar -cf my_file.tar my_source_directory
: สร้างไฟล์ tarball ชื่อ my_file.tar
พร้อมเนื้อหาในโฟลเดอร์ my_source_directory
. ธง -c
ย่อมาจากคำว่า create (การสร้างสรรค์) และธง -f
เป็น "ไฟล์" (ไฟล์)
หากต้องการแตกไฟล์จาก .tar
-file ใช้คำสั่ง tar
ด้วยธง -x
("สารสกัด", สารสกัด) และ -f
("ไฟล์", ไฟล์).
tar -xf my_file.tar
: แยกไฟล์จาก my_file.tar
ไปยังไดเร็กทอรีการทำงานปัจจุบัน
ตอนนี้เรามาพูดถึงวิธีการบีบอัดและขยายขนาด .tar
-ไฟล์
tar -cfz my_file.tar.gz my_source_directory
: ที่นี่ใช้ธง -z
("zip", อัลกอริธึมการบีบอัด) ระบุว่าควรใช้อัลกอริธึมในการบีบอัดไฟล์ gzip
(GNUzip) การบีบอัดไฟล์ช่วยประหยัดพื้นที่ดิสก์เมื่อจัดเก็บไฟล์ดังกล่าว หากมีการวางแผนไฟล์ เช่น ที่จะถ่ายโอนไปยังผู้ใช้รายอื่น สิ่งนี้จะช่วยให้ดาวน์โหลดไฟล์ดังกล่าวเร็วขึ้น
แตกไฟล์ .tar.gz
คุณสามารถเพิ่มธงได้ -z
ไปยังคำสั่งแยกเนื้อหา .tar
-files ซึ่งเราได้กล่าวถึงข้างต้น ดูเหมือนว่านี้:
tar -xfz my_file.tar.gz
ควรสังเกตว่าทีมงาน tar
มีแฟล็กที่มีประโยชน์อีกมากมาย
นามแฝงทุบตี
นามแฝง Bash (เรียกอีกอย่างว่านามแฝงหรือตัวย่อ) ได้รับการออกแบบมาเพื่อสร้างชื่อย่อของคำสั่งหรือลำดับการใช้ซึ่งแทนที่จะใช้คำสั่งปกติจะช่วยเพิ่มความเร็วในการทำงาน สมมติว่าคุณมีนามแฝง bu
ซึ่งซ่อนคำสั่งไว้ python setup.py sdist bdist_wheel
จากนั้นหากต้องการเรียกใช้คำสั่งนี้ก็เพียงพอแล้วที่จะใช้นามแฝงนี้
หากต้องการสร้างนามแฝง เพียงเพิ่มคำสั่งต่อไปนี้ลงในไฟล์ ~/.bash_profile
:
alias bu="python setup.py sdist bdist_wheel"
หากระบบของคุณไม่มีไฟล์ ~/.bash_profile
จากนั้นคุณสามารถสร้างมันขึ้นมาเองได้โดยใช้คำสั่ง touch
. หลังจากสร้างนามแฝงแล้ว ให้รีสตาร์ทเทอร์มินัล หลังจากนั้นคุณสามารถใช้นามแฝงนี้ได้ ในกรณีนี้การป้อนอักขระสองตัวจะแทนที่การป้อนอักขระของคำสั่งมากกว่าสามโหลซึ่งมีไว้สำหรับ
В ~/.bash_profile
คุณสามารถเพิ่มนามแฝงสำหรับคำสั่งที่ใช้บ่อยได้
▍ผลลัพธ์
ในโพสต์นี้ เราได้กล่าวถึงคำสั่ง Bash ยอดนิยม 21 คำสั่ง และพูดคุยเกี่ยวกับการสร้างนามแฝงของคำสั่ง หากคุณสนใจในหัวข้อนี้ -
เรียนผู้อ่าน! คุณจะเพิ่มคำสั่งใดที่เป็นประโยชน์สำหรับผู้เริ่มต้นให้กับคำสั่งที่กล่าวถึงในบทความนี้
→
ที่มา: will.com