5 ทางเลือกที่ทันสมัยสำหรับเครื่องมือบรรทัดคำสั่ง Linux รุ่นเก่า

การใช้ทางเลือกที่ทันสมัยกว่าควบคู่ไปกับเครื่องมือบรรทัดคำสั่งแบบเก่า จะทำให้คุณสนุกได้มากขึ้นและยังปรับปรุงประสิทธิภาพการทำงานของคุณด้วย

5 ทางเลือกที่ทันสมัยสำหรับเครื่องมือบรรทัดคำสั่ง Linux รุ่นเก่า

ในการทำงานประจำวันบน Linux/Unix เราใช้เครื่องมือบรรทัดคำสั่งมากมาย เช่น du เพื่อตรวจสอบการใช้งานดิสก์และทรัพยากรระบบ เครื่องมือเหล่านี้บางส่วนมีมานานแล้ว ตัวอย่างเช่น ด้านบน ปรากฏในปี 1984 และ du รุ่นแรกออกในปี 1971

ในช่วงหลายปีที่ผ่านมา เครื่องมือเหล่านี้ได้รับการปรับปรุงให้ทันสมัยและย้ายไปยังระบบต่างๆ แต่โดยทั่วไปแล้ว เครื่องมือเหล่านี้ไม่ได้ห่างไกลจากเวอร์ชันแรกมากนัก รูปลักษณ์และการใช้งานก็ไม่เปลี่ยนแปลงมากนัก

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

1.ncdu กับ du

การใช้งานดิสก์ NCurses (เอ็นดู) คล้ายกับ du แต่มีอินเทอร์เฟซแบบโต้ตอบที่อิงตามไลบรารีคำสาป ncdu จะแสดงโครงสร้างไดเร็กทอรีที่ใช้พื้นที่ดิสก์ส่วนใหญ่ของคุณ

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 จะแสดงข้อมูลเดียวกันกับด้านบน แต่ในลักษณะที่เป็นภาพและมีสีสันมากกว่า

โดยค่าเริ่มต้น htop มีลักษณะดังนี้:

5 ทางเลือกที่ทันสมัยสำหรับเครื่องมือบรรทัดคำสั่ง Linux รุ่นเก่า
ไม่เหมือนด้านบน:

5 ทางเลือกที่ทันสมัยสำหรับเครื่องมือบรรทัดคำสั่ง Linux รุ่นเก่า
นอกจากนี้ htop ยังแสดงข้อมูลภาพรวมเกี่ยวกับระบบที่ด้านบน และแผงสำหรับการรันคำสั่งโดยใช้ปุ่มฟังก์ชั่นที่ด้านล่าง คุณสามารถกำหนดค่าได้โดยกด F2 เพื่อเปิดหน้าจอการกำหนดค่า ในการตั้งค่า คุณสามารถเปลี่ยนสี เพิ่มหรือลบเมตริก หรือเปลี่ยนตัวเลือกการแสดงแผงภาพรวมได้

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

3. tldr กับ มนุษย์

เครื่องมือบรรทัดคำสั่ง 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 มีฟังก์ชันมากมาย แต่จำเป็นต้องมีบทความอื่นเพื่ออธิบายฟังก์ชันเหล่านี้ หากต้องการข้อมูลเพิ่มเติมกรุณาติดต่อ หน้าโครงการ jq หรือเป็น tldr

5. fd กับ ค้นหา

fd เป็นทางเลือกที่ง่ายกว่าสำหรับยูทิลิตีการค้นหา 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 ใหม่หรือไม่? หรือคุณนั่งเฉพาะคนเก่า? แต่ส่วนใหญ่แล้วคุณจะมีคอมโบใช่ไหม? กรุณาแบ่งปันประสบการณ์ของคุณในความคิดเห็น

เป็นโฆษณา

ลูกค้าหลายรายของเราชื่นชมคุณประโยชน์นี้แล้ว เซิร์ฟเวอร์มหากาพย์!
มัน เซิร์ฟเวอร์เสมือนพร้อมโปรเซสเซอร์ AMD EPYC, ความถี่คอร์ CPU สูงสุด 3.4 GHz การกำหนดค่าสูงสุดจะช่วยให้คุณใช้งานได้อย่างล้นหลาม - คอร์ CPU 128 คอร์, RAM 512 GB, NVMe 4000 GB รีบสั่งเลย!

5 ทางเลือกที่ทันสมัยสำหรับเครื่องมือบรรทัดคำสั่ง Linux รุ่นเก่า

ที่มา: will.com

เพิ่มความคิดเห็น