การใช้ทางเลือกที่ทันสมัยกว่าควบคู่ไปกับเครื่องมือบรรทัดคำสั่งแบบเก่า จะทำให้คุณสนุกได้มากขึ้นและยังปรับปรุงประสิทธิภาพการทำงานของคุณด้วย
ในการทำงานประจำวันบน Linux/Unix เราใช้เครื่องมือบรรทัดคำสั่งมากมาย เช่น du เพื่อตรวจสอบการใช้งานดิสก์และทรัพยากรระบบ เครื่องมือเหล่านี้บางส่วนมีมานานแล้ว ตัวอย่างเช่น ด้านบน ปรากฏในปี 1984 และ du รุ่นแรกออกในปี 1971
ในช่วงหลายปีที่ผ่านมา เครื่องมือเหล่านี้ได้รับการปรับปรุงให้ทันสมัยและย้ายไปยังระบบต่างๆ แต่โดยทั่วไปแล้ว เครื่องมือเหล่านี้ไม่ได้ห่างไกลจากเวอร์ชันแรกมากนัก รูปลักษณ์และการใช้งานก็ไม่เปลี่ยนแปลงมากนัก
นี่เป็นเครื่องมือที่ยอดเยี่ยมที่ผู้ดูแลระบบจำนวนมากต้องการ อย่างไรก็ตาม ชุมชนได้พัฒนาเครื่องมือทางเลือกที่ให้ประโยชน์เพิ่มเติม บางตัวมีอินเทอร์เฟซที่ทันสมัยและสวยงาม ในขณะที่บางตัวมีการปรับปรุงการใช้งานอย่างมาก ในการแปลนี้ เราจะพูดถึงทางเลือก XNUMX ประการนอกเหนือจากเครื่องมือบรรทัดคำสั่ง Linux มาตรฐาน
1.ncdu กับ du
การใช้งานดิสก์ NCurses (
ncdu จะวิเคราะห์ดิสก์แล้วแสดงผลลัพธ์โดยจัดเรียงตามไดเร็กทอรีหรือไฟล์ที่ใช้บ่อยที่สุด เช่น
ncdu 1.14.2 ~ Use the arrow keys to navigate, press ? for help
--- /home/rgerardi ------------------------------------------------------------
96.7 GiB [##########] /libvirt
33.9 GiB [### ] /.crc
7.0 GiB [ ] /Projects
. 4.7 GiB [ ] /Downloads
. 3.9 GiB [ ] /.local
2.5 GiB [ ] /.minishift
2.4 GiB [ ] /.vagrant.d
. 1.9 GiB [ ] /.config
. 1.8 GiB [ ] /.cache
1.7 GiB [ ] /Videos
1.1 GiB [ ] /go
692.6 MiB [ ] /Documents
. 591.5 MiB [ ] /tmp
139.2 MiB [ ] /.var
104.4 MiB [ ] /.oh-my-zsh
82.0 MiB [ ] /scripts
55.8 MiB [ ] /.mozilla
54.6 MiB [ ] /.kube
41.8 MiB [ ] /.vim
31.5 MiB [ ] /.ansible
31.3 MiB [ ] /.gem
26.5 MiB [ ] /.VIM_UNDO_FILES
15.3 MiB [ ] /Personal
2.6 MiB [ ] .ansible_module_generated
1.4 MiB [ ] /backgrounds
944.0 KiB [ ] /Pictures
644.0 KiB [ ] .zsh_history
536.0 KiB [ ] /.ansible_async
Total disk usage: 159.4 GiB Apparent size: 280.8 GiB Items: 561540
คุณสามารถเลื่อนดูรายการต่างๆ ได้โดยใช้ปุ่มลูกศร หากคุณกด Enter ncdu จะแสดงเนื้อหาของไดเร็กทอรีที่เลือก:
--- /home/rgerardi/libvirt ----------------------------------------------------
/..
91.3 GiB [##########] /images
5.3 GiB [ ] /media
คุณสามารถใช้เครื่องมือนี้เพื่อกำหนดว่าไฟล์ใดที่ใช้พื้นที่ดิสก์มากที่สุด เป็นต้น คุณสามารถไปที่ไดเร็กทอรีก่อนหน้าได้โดยกดปุ่มลูกศรซ้าย ด้วย ncdu คุณสามารถลบไฟล์ได้โดยกดปุ่ม d มันจะขอการยืนยันก่อนที่จะลบ หากคุณต้องการปิดการใช้งานคุณสมบัติการลบเพื่อป้องกันการสูญหายของไฟล์ที่มีค่าโดยไม่ตั้งใจ ให้ใช้ตัวเลือก -r เพื่อเปิดใช้งานโหมดการเข้าถึงแบบอ่านอย่างเดียว: ncdu -r
ncdu พร้อมใช้งานสำหรับแพลตฟอร์มและการกระจาย Linux จำนวนมาก ตัวอย่างเช่น คุณสามารถใช้ dnf เพื่อติดตั้งบน Fedora ได้โดยตรงจากแหล่งเก็บข้อมูลอย่างเป็นทางการ:
$ sudo dnf install ncdu
2. htop กับ ด้านบน
โดยค่าเริ่มต้น htop มีลักษณะดังนี้:
ไม่เหมือนด้านบน:
นอกจากนี้ htop ยังแสดงข้อมูลภาพรวมเกี่ยวกับระบบที่ด้านบน และแผงสำหรับการรันคำสั่งโดยใช้ปุ่มฟังก์ชั่นที่ด้านล่าง คุณสามารถกำหนดค่าได้โดยกด F2 เพื่อเปิดหน้าจอการกำหนดค่า ในการตั้งค่า คุณสามารถเปลี่ยนสี เพิ่มหรือลบเมตริก หรือเปลี่ยนตัวเลือกการแสดงแผงภาพรวมได้
แม้ว่าคุณจะสามารถบรรลุการใช้งานที่คล้ายกันได้โดยการปรับแต่งการตั้งค่าของเวอร์ชันล่าสุด htop มีการกำหนดค่าเริ่มต้นที่สะดวก ซึ่งทำให้ใช้งานได้จริงและใช้งานง่ายยิ่งขึ้น
3. tldr กับ มนุษย์
เครื่องมือบรรทัดคำสั่ง tldr จะแสดงข้อมูลวิธีใช้แบบง่ายเกี่ยวกับคำสั่ง ซึ่งส่วนใหญ่เป็นตัวอย่าง ได้รับการพัฒนาโดยชุมชน
เป็นที่น่าสังเกตว่า tldr ไม่สามารถทดแทนมนุษย์ได้ ยังคงเป็นเครื่องมือส่งออก man page ที่เป็นที่ยอมรับและครอบคลุมที่สุด อย่างไรก็ตาม ในบางกรณี มนุษย์ก็มีความซ้ำซ้อน เมื่อคุณไม่ต้องการข้อมูลที่ครอบคลุมเกี่ยวกับคำสั่ง คุณเพียงแค่พยายามจดจำการใช้งานพื้นฐานของคำสั่งนั้น ตัวอย่างเช่น man page สำหรับคำสั่ง curl มีเกือบ 3000 บรรทัด หน้า tldr สำหรับ curl มีความยาว 40 บรรทัด ส่วนของมันมีลักษณะดังนี้:
$ tldr curl
# curl
Transfers data from or to a server.
Supports most protocols, including HTTP, FTP, and POP3.
More information: <https://curl.haxx.se>.
- Download the contents of an URL to a file:
curl http://example.com -o filename
- Download a file, saving the output under the filename indicated by the URL:
curl -O http://example.com/filename
- Download a file, following [L]ocation redirects, and automatically [C]ontinuing (resuming) a previous file transfer:
curl -O -L -C - http://example.com/filename
- Send form-encoded data (POST request of type `application/x-www-form-urlencoded`):
curl -d 'name=bob' http://example.com/form
- Send a request with an extra header, using a custom HTTP method:
curl -H 'X-My-Header: 123' -X PUT http://example.com
- Send data in JSON format, specifying the appropriate content-type header:
curl -d '{"name":"bob"}' -H 'Content-Type: application/json' http://example.com/users/1234
... TRUNCATED OUTPUT
TLDR หมายถึง “ยาวเกินไป; ไม่ได้อ่าน" นั่นคือ ข้อความบางส่วนถูกละเว้นเนื่องจากมีคำฟุ่มเฟือยมากเกินไป ชื่อนี้เหมาะสมกับเครื่องมือนี้ เนื่องจาก man page แม้จะมีประโยชน์ แต่บางครั้งอาจยาวเกินไป
สำหรับ Fedora นั้น tldr เขียนด้วยภาษา Python คุณสามารถติดตั้งได้โดยใช้ dnf manager โดยปกติแล้ว เครื่องมือนี้ต้องการการเข้าถึงอินเทอร์เน็ตจึงจะทำงานได้ แต่ไคลเอนต์ Python ของ Fedora อนุญาตให้ดาวน์โหลดและแคชเพจเหล่านี้สำหรับการเข้าถึงแบบออฟไลน์
4.jq กับ sed/grep
jq เป็นตัวประมวลผล JSON สำหรับบรรทัดคำสั่ง คล้ายกับ sed หรือ grep แต่ได้รับการออกแบบมาโดยเฉพาะให้ทำงานกับข้อมูล JSON หากคุณเป็นนักพัฒนาหรือผู้ดูแลระบบที่ใช้ JSON ในงานประจำวัน นี่คือเครื่องมือสำหรับคุณ
ข้อได้เปรียบหลักของ jq เหนือเครื่องมือประมวลผลข้อความมาตรฐาน เช่น grep และ sed ก็คือ เข้าใจโครงสร้างข้อมูล JSON ทำให้คุณสามารถสร้างคิวรีที่ซับซ้อนได้ในนิพจน์เดียว
ตัวอย่างเช่น คุณกำลังพยายามค้นหาชื่อคอนเทนเนอร์ในไฟล์ JSON นี้:
{
"apiVersion": "v1",
"kind": "Pod",
"metadata": {
"labels": {
"app": "myapp"
},
"name": "myapp",
"namespace": "project1"
},
"spec": {
"containers": [
{
"command": [
"sleep",
"3000"
],
"image": "busybox",
"imagePullPolicy": "IfNotPresent",
"name": "busybox"
},
{
"name": "nginx",
"image": "nginx",
"resources": {},
"imagePullPolicy": "IfNotPresent"
}
],
"restartPolicy": "Never"
}
}
วิ่ง grep เพื่อค้นหาชื่อสตริง:
$ grep name k8s-pod.json
"name": "myapp",
"namespace": "project1"
"name": "busybox"
"name": "nginx",
grep ส่งคืนทุกบรรทัดที่มีชื่อคำ คุณสามารถเพิ่มพารามิเตอร์อีกสองสามตัวเพื่อจำกัด grep และด้วยการจัดการนิพจน์ทั่วไปในการค้นหาชื่อคอนเทนเนอร์
เพื่อให้ได้ผลลัพธ์เดียวกันโดยใช้ jq เพียงเขียน:
$ jq '.spec.containers[].name' k8s-pod.json
"busybox"
"nginx"
คำสั่งนี้จะให้ชื่อของทั้งสองคอนเทนเนอร์ หากคุณกำลังมองหาเพียงชื่อของคอนเทนเนอร์ที่สอง ให้เพิ่มดัชนีขององค์ประกอบอาร์เรย์ในนิพจน์:
$ jq '.spec.containers[1].name' k8s-pod.json
"nginx"
เนื่องจาก jq รู้เกี่ยวกับโครงสร้างข้อมูล จึงให้ผลลัพธ์เดียวกัน แม้ว่ารูปแบบไฟล์จะเปลี่ยนแปลงเล็กน้อยก็ตาม grep และ sed อาจทำงานไม่ถูกต้องในกรณีนี้
jq มีฟังก์ชันมากมาย แต่จำเป็นต้องมีบทความอื่นเพื่ออธิบายฟังก์ชันเหล่านี้ หากต้องการข้อมูลเพิ่มเติมกรุณาติดต่อ
5. fd กับ ค้นหา
ตัวอย่างเช่น เมื่อค้นหาไฟล์ในไดเร็กทอรีที่เก็บ Git fd จะยกเว้นไฟล์และไดเร็กทอรีย่อยที่ซ่อนไว้โดยอัตโนมัติ รวมถึงไดเร็กทอรี .git และยังไม่สนใจไวด์การ์ดจากไฟล์ .gitignore อีกด้วย โดยรวมแล้ว การค้นหาจะเร็วขึ้นโดยแสดงผลลัพธ์ที่เกี่ยวข้องมากขึ้นในครั้งแรก
ตามค่าเริ่มต้น fd จะทำการค้นหาโดยคำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ในไดเร็กทอรีปัจจุบันด้วยเอาต์พุตสี การค้นหาเดียวกันโดยใช้คำสั่ง find จำเป็นต้องป้อนพารามิเตอร์เพิ่มเติมบนบรรทัดคำสั่ง เช่น หากต้องการค้นหาไฟล์ .md (หรือ .MD) ทั้งหมดในไดเร็กทอรีปัจจุบัน ให้เขียนคำสั่ง find ดังนี้
$ find . -iname "*.md"
สำหรับ fd ดูเหมือนว่านี้:
$ fd .md
แต่ในบางกรณี fd ยังต้องการตัวเลือกเพิ่มเติมด้วย เช่น หากคุณต้องการรวมไฟล์และไดเร็กทอรีที่ซ่อนอยู่ คุณต้องใช้ตัวเลือก -H แม้ว่าโดยปกติจะไม่จำเป็นเมื่อค้นหาก็ตาม
fd พร้อมใช้งานสำหรับลีนุกซ์หลายรุ่น ใน Fedora สามารถติดตั้งได้ดังนี้:
$ sudo dnf install fd-find
คุณไม่จำเป็นต้องยอมแพ้อะไร
คุณใช้เครื่องมือบรรทัดคำสั่ง Linux ใหม่หรือไม่? หรือคุณนั่งเฉพาะคนเก่า? แต่ส่วนใหญ่แล้วคุณจะมีคอมโบใช่ไหม? กรุณาแบ่งปันประสบการณ์ของคุณในความคิดเห็น
เป็นโฆษณา
ลูกค้าหลายรายของเราชื่นชมคุณประโยชน์นี้แล้ว เซิร์ฟเวอร์มหากาพย์!
มัน
ที่มา: will.com