Хуучин Линуксийн командын шугамын хэрэгслүүдийн орчин үеийн 5 хувилбар

Хуучин командын мөрийн хэрэгслүүдийн хажуугаар илүү орчин үеийн хувилбаруудыг ашигласнаар та илүү хөгжилтэй байж, бүтээмжээ ч сайжруулж чадна.

Хуучин Линуксийн командын шугамын хэрэгслүүдийн орчин үеийн 5 хувилбар

Linux/Unix дээрх өдөр тутмын ажилдаа бид командын шугамын олон хэрэгслийг ашигладаг - жишээлбэл, дискний хэрэглээ болон системийн нөөцийг хянахын тулд du. Эдгээр хэрэгслүүдийн зарим нь удаан хугацааны туршид бий болсон. Жишээлбэл, top 1984 онд гарч байсан бөгөөд du-гийн анхны хувилбар нь 1971 онд гарсан.

Олон жилийн туршид эдгээр хэрэгслүүдийг шинэчилж, өөр өөр системд шилжүүлсэн боловч ерөнхийдөө анхны хувилбараасаа хол хөндийрөөгүй, гадаад төрх байдал, ашиглах чадвар нь тийм ч их өөрчлөгдөөгүй байна.

Эдгээр нь олон системийн администраторуудад хэрэгтэй гайхалтай хэрэгслүүд юм. Гэсэн хэдий ч олон нийт нэмэлт ашиг тусыг санал болгодог өөр хэрэгслүүдийг боловсруулсан. Тэдгээрийн зарим нь орчин үеийн, үзэсгэлэнтэй интерфэйстэй байдаг бол зарим нь ашиглах чадварыг ихээхэн сайжруулдаг. Энэ орчуулгад бид Линуксийн стандарт командын мөрийн хэрэгслүүдийн таван хувилбарын талаар ярих болно.

1. ncdu vs du

NCurses дискний хэрэглээ (ncdu) нь 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 нь олон Линукс платформ болон түгээлтийн хувьд боломжтой. Жишээлбэл, та үүнийг Fedora дээр албан ёсны репозитороос шууд суулгахын тулд dnf ашиглаж болно:

$ sudo dnf install ncdu

2. htop vs top

htop Энэ нь дээд талынхтай төстэй интерактив процесс үзэгч боловч хайрцагнаас гарвал хэрэглэгчийн сайхан туршлагыг өгдөг. Анхдагч байдлаар, htop нь дээд талынхтай ижил мэдээллийг харуулдаг боловч илүү харагдахуйц, өнгөлөг байдлаар харуулдаг.

Анхдагч байдлаар htop дараах байдалтай байна:

Хуучин Линуксийн командын шугамын хэрэгслүүдийн орчин үеийн 5 хувилбар
Топоос ялгаатай нь:

Хуучин Линуксийн командын шугамын хэрэгслүүдийн орчин үеийн 5 хувилбар
Нэмж дурдахад, htop нь дээд хэсэгт системийн талаарх ерөнхий мэдээллийг, доод талд нь функцийн товчлууруудыг ашиглан тушаалуудыг ажиллуулах самбарыг харуулдаг. Та тохиргооны дэлгэцийг нээхийн тулд F2 товчийг дарж тохируулж болно. Тохиргоо дотроос та өнгийг өөрчлөх, хэмжүүр нэмэх, хасах эсвэл тойм самбарын дэлгэцийн сонголтыг өөрчлөх боломжтой.

Хэдийгээр та дээд хувилбарын хамгийн сүүлийн хувилбаруудын тохиргоог өөрчилснөөр үүнтэй төстэй ашиглах боломжтой боловч htop нь тохиромжтой анхдагч тохиргоог өгдөг бөгөөд энэ нь илүү практик, ашиглахад хялбар болгодог.

3. tldr vs man

tldr командын мөрийн хэрэгсэл нь командуудын тухай хялбаршуулсан тусламжийн мэдээллийг харуулдаг, гол төлөв жишээнүүд. Үүнийг олон нийт боловсруулсан tldr хуудасны төсөл.

tldr бол хүнийг орлох зүйл биш гэдгийг тэмдэглэх нь зүйтэй. Энэ нь каноник бөгөөд хамгийн өргөн хүрээтэй хүн хуудас гаргах хэрэгсэл хэвээр байна. Гэсэн хэдий ч зарим тохиолдолд хүн илүүдэлтэй байдаг. Хэрэв танд командын талаар дэлгэрэнгүй мэдээлэл хэрэггүй бол та түүний үндсэн хэрэглээг санахыг л хичээж байна. Жишээлбэл, curl командын хүн хуудас нь бараг 3000 мөртэй. Curl-д зориулсан tldr хуудас нь 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 "хэт урт; уншаагүй": өөрөөр хэлбэл зарим бичвэрийг хэт нарийн бичсэний улмаас үл тоомсорлосон. Энэ хэрэгсэлд нэр нь тохиромжтой, учир нь хүн хуудаснууд нь ашигтай хэдий ч заримдаа хэтэрхий урт байж болно.

Федорагийн хувьд tldr нь Python дээр бичигдсэн. Та үүнийг dnf менежер ашиглан суулгаж болно. Ихэвчлэн энэ хэрэгсэл ажиллахын тулд интернет холболт шаарддаг. Гэхдээ Fedora-ийн Python клиент нь эдгээр хуудсыг татаж авах, офлайнаар нэвтрэх боломжийг олгодог.

4.jq vs 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 vs find

fd олох хэрэгслийн хялбаршуулсан хувилбар юм. Fd нь үүнийг бүрэн орлуулах зорилгогүй: энэ нь анхдагчаар суулгасан хамгийн түгээмэл тохиргоотой бөгөөд файлуудтай ажиллах ерөнхий хандлагыг тодорхойлдог.

Жишээ нь, Git репозиторын лавлахаас файл хайх үед fd автоматаар .git директор зэрэг далд файлууд болон дэд сангуудыг хасч, мөн .gitignore файлын орлуулагч тэмдгийг үл тоомсорлодог. Ерөнхийдөө энэ нь эхний оролдлого дээр илүү хамааралтай илэрцүүдийг гаргаж хайлтыг хурдасгадаг.

Анхдагч байдлаар, fd нь одоогийн директор дотор өнгөт гаралт бүхий жижиг үсгийн жижиг үсгийн хайлтыг гүйцэтгэдэг. Find командыг ашиглан ижил хайлт хийх нь тушаалын мөрөнд нэмэлт параметрүүдийг оруулахыг шаарддаг. Жишээлбэл, одоогийн директор доторх бүх .md (эсвэл .MD) файлуудыг олохын тулд та дараах байдлаар олох командыг бичнэ.

$ find . -iname "*.md"

fd-ийн хувьд дараах байдалтай байна.

$ fd .md

Гэхдээ зарим тохиолдолд fd нь нэмэлт сонголтуудыг шаарддаг: жишээлбэл, хэрэв та далд файл, лавлахыг оруулахыг хүсвэл -H сонголтыг ашиглах ёстой, гэхдээ энэ нь ихэвчлэн хайлт хийхэд шаардлагагүй байдаг.

fd нь олон Linux түгээлтийн хувьд боломжтой. Fedora-д үүнийг дараах байдлаар суулгаж болно.

$ sudo dnf install fd-find

Та юу ч орхих шаардлагагүй

Та Линуксийн шинэ командын мөрийн хэрэгслийг ашиглаж байна уу? Эсвэл зөвхөн хуучин дээр суудаг уу? Гэхдээ танд комбо байгаа байх, тийм үү? Сэтгэгдэл хэсэгт туршлагаа хуваалцана уу.

Сурталчилгааны эрх

Манай олон үйлчлүүлэгчид ашиг тусыг нь аль хэдийн үнэлдэг баатарлаг серверүүд!
энэ AMD EPYC процессортой виртуал серверүүд, CPU-ийн үндсэн давтамж 3.4 GHz хүртэл. Хамгийн их тохиргоо нь танд тэсрэлт хийх боломжийг олгоно - 128 CPU цөм, 512 ГБ RAM, 4000 ГБ NVMe. Захиалга өгөхдөө яараарай!

Хуучин Линуксийн командын шугамын хэрэгслүүдийн орчин үеийн 5 хувилбар

Эх сурвалж: www.habr.com

сэтгэгдэл нэмэх