5 جایگزین مدرن برای ابزارهای خط فرمان قدیمی لینوکس

با استفاده از جایگزین های مدرن تر در کنار ابزارهای خط فرمان قدیمی تر، می توانید لذت بیشتری ببرید و حتی بهره وری خود را بهبود ببخشید.

5 جایگزین مدرن برای ابزارهای خط فرمان قدیمی لینوکس

در کار روزانه خود بر روی لینوکس/یونیکس، از بسیاری از ابزارهای خط فرمان استفاده می کنیم - به عنوان مثال، برای نظارت بر استفاده از دیسک و منابع سیستم. برخی از این ابزارها برای مدت طولانی در دسترس بوده اند. به عنوان مثال، تاپ در سال 1984 ظاهر شد و اولین انتشار du به سال 1971 باز می گردد.

این ابزارها در طول سال ها مدرن شده و به سیستم های مختلف منتقل شده اند، اما به طور کلی از نسخه های اولیه خود فاصله زیادی نداشته اند، ظاهر و کاربرد آنها نیز تغییر چندانی نکرده است.

اینها ابزارهای عالی هستند که بسیاری از مدیران سیستم به آنها نیاز دارند. با این حال، جامعه ابزارهای جایگزینی را توسعه داده است که مزایای بیشتری را ارائه می دهد. برخی از آنها به سادگی دارای یک رابط مدرن و زیبا هستند، در حالی که برخی دیگر قابلیت استفاده را تا حد زیادی بهبود می بخشند. در این ترجمه، ما در مورد پنج جایگزین برای ابزارهای خط فرمان استاندارد لینوکس صحبت خواهیم کرد.

1. ncdu در مقابل 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 برای بسیاری از پلتفرم ها و توزیع های لینوکس در دسترس است. به عنوان مثال، می توانید از dnf برای نصب آن بر روی فدورا مستقیماً از مخازن رسمی استفاده کنید:

$ sudo dnf install ncdu

2. htop vs top

htop یک نمایشگر فرآیند تعاملی شبیه به بالا است، اما خارج از جعبه تجربه کاربری خوبی را ارائه می دهد. به طور پیش فرض، htop همان اطلاعات بالا را نمایش می دهد، اما به شکلی بصری و رنگارنگ تر.

به طور پیش فرض htop به شکل زیر است:

5 جایگزین مدرن برای ابزارهای خط فرمان قدیمی لینوکس
برخلاف بالا:

5 جایگزین مدرن برای ابزارهای خط فرمان قدیمی لینوکس
علاوه بر این، htop اطلاعات کلی در مورد سیستم را در بالا، و یک پانل برای اجرای دستورات با استفاده از کلیدهای عملکرد در پایین نمایش می دهد. می توانید با فشار دادن F2 آن را پیکربندی کنید تا صفحه پیکربندی باز شود. در تنظیمات، می‌توانید رنگ‌ها را تغییر دهید، معیارها را اضافه یا حذف کنید، یا گزینه‌های نمایش پانل نمای کلی را تغییر دهید.

اگرچه می‌توانید با بهینه‌سازی تنظیمات آخرین نسخه‌های top به قابلیت استفاده مشابهی دست پیدا کنید، htop تنظیمات پیش‌فرض مناسبی را ارائه می‌کند که استفاده از آن را کاربردی‌تر و آسان‌تر می‌کند.

3. tldr در مقابل مرد

ابزار خط فرمان tldr اطلاعات راهنمای ساده شده را در مورد دستورات، عمدتاً نمونه، نمایش می دهد. توسط جامعه توسعه داده شد پروژه صفحات tldr.

شایان ذکر است که tldr جایگزینی برای انسان نیست. هنوز هم متعارف ترین و جامع ترین ابزار خروجی صفحه مرد است. با این حال، در برخی موارد انسان زائد است. وقتی به اطلاعات جامعی در مورد یک دستور نیاز ندارید، فقط سعی می کنید کاربردهای اصلی آن را به خاطر بسپارید. برای مثال، صفحه man برای دستور 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 در عین مفید بودن، گاهی اوقات می توانند بیش از حد طولانی باشند.

برای فدورا، tldr در پایتون نوشته شده بود. با استفاده از dnf manager می توانید آن را نصب کنید. به طور معمول، ابزار برای کار کردن نیاز به دسترسی به اینترنت دارد. اما کلاینت پایتون فدورا به این صفحات اجازه دانلود و کش برای دسترسی آفلاین را می دهد.

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 یک جایگزین ساده برای ابزار Find است. Fd برای جایگزینی کامل آن در نظر گرفته نشده است: رایج ترین تنظیمات را به طور پیش فرض نصب کرده است که رویکرد کلی کار با فایل ها را تعریف می کند.

به عنوان مثال، هنگام جستجوی فایل‌ها در فهرست مخزن Git، fd به طور خودکار فایل‌ها و زیرشاخه‌های مخفی، از جمله دایرکتوری git. را حذف می‌کند، و همچنین حروف عام را از فایل gitignore. نادیده می‌گیرد. به طور کلی، با برگرداندن نتایج مرتبط تر در اولین تلاش، سرعت جستجوها را افزایش می دهد.

به‌طور پیش‌فرض، fd جستجوی بدون حروف بزرگ را در فهرست فعلی با خروجی رنگ انجام می‌دهد. جستجوی مشابه با استفاده از دستور find مستلزم وارد کردن پارامترهای اضافی در خط فرمان است. به عنوان مثال، برای یافتن همه فایل‌های md. (یا MD.) در فهرست فعلی، باید یک دستور find مانند این بنویسید:

$ find . -iname "*.md"

برای fd به صورت زیر است:

$ fd .md

اما در برخی موارد، fd به گزینه‌های اضافی نیز نیاز دارد: به عنوان مثال، اگر می‌خواهید فایل‌ها و دایرکتوری‌های مخفی را اضافه کنید، باید از گزینه -H استفاده کنید، اگرچه معمولاً هنگام جستجو این مورد نیاز نیست.

fd برای بسیاری از توزیع های لینوکس در دسترس است. در فدورا به صورت زیر قابل نصب است:

$ sudo dnf install fd-find

شما مجبور نیستید چیزی را رها کنید

آیا از ابزارهای خط فرمان جدید لینوکس استفاده می کنید؟ یا فقط روی قدیمی ها می نشینید؟ اما به احتمال زیاد شما یک ترکیب ترکیبی دارید، درست است؟ لطفا تجربه خود را در نظرات به اشتراک بگذارید.

در حقوق تبلیغات

بسیاری از مشتریان ما قبلاً از مزایای آن قدردانی کرده اند سرورهای حماسی!
آن سرورهای مجازی با پردازنده های AMD EPYC، فرکانس هسته پردازنده تا 3.4 گیگاهرتز. حداکثر پیکربندی به شما امکان می دهد که یک انفجار داشته باشید - 128 هسته CPU، 512 گیگابایت رم، 4000 گیگابایت NVMe. برای سفارش عجله کنید

5 جایگزین مدرن برای ابزارهای خط فرمان قدیمی لینوکس

منبع: www.habr.com

اضافه کردن نظر