وبلاگ رسانگار
با ما حرفه ای باشید

سرور مجازی NVMe

دستورات و بسط های تاریخ Bash

0 3
زمان لازم برای مطالعه: 6 دقیقه


در این راهنما، روش کار با دستورات تاریخچه Bash را نشان خواهیم داد.

پیش نیازها:

برای انجام مراحلی که در این آموزش نشان داده شده است، به اجزای زیر نیاز دارید:

  • یک سیستم لینوکس با پیکربندی مناسب روش راه اندازی یک VM اوبونتو را در VirtualBox بررسی کنید.
  • آشنایی اولیه با command-line رابط.

تاریخچه Bash

Bash پوسته پیش فرض در اکثر سیستم های لینوکس مدرن است. به‌عنوان جانشین «sh»، پوسته اصلی یونیکس، دارای ویژگی‌ها و پیشرفت‌های متعددی مانند دستکاری فهرست، کنترل کار، نام‌های مستعار، تاریخچه فرمان و غیره است.

Bash تمام دستوراتی را که قبلاً از آن اجرا شده بود، ردیابی می کند terminal. این می تواند در موقعیت های متعددی مانند اشکال زدایی فوق العاده مفید باشد. همچنین می‌تواند نیاز به تایپ دستورات یکسان/مشابه را کاهش دهد.

برای مدیریت تاریخچه، Bash با دو دستور داخلی ارائه می شود:

$ نوع تاریخ

دستورات و بسط های تاریخ Bash

$ نوع fc

دستورات و بسط های تاریخ Bashدستورات و بسط های تاریخ Bash

برای ذخیره تاریخچه، Bash از دو تکنیک مختلف استفاده می کند:

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

فایل تاریخچه پیش‌فرض که Bash استفاده می‌کند در این آدرس قرار دارد:

$ گربه ~/.bash_history

دستورات و بسط های تاریخ Bashدستورات و بسط های تاریخ Bash

همچنین تعدادی متغیر محیطی و میانبرهای صفحه کلید وجود دارد که روش مدیریت Bash تاریخچه را تغییر می دهد.

کار با Bash History

استفاده پایه

برای دریافت لیست دستوراتی که اخیرا اجرا شده اند، از دستور زیر استفاده کنید:

$ تاریخ

دستورات و بسط های تاریخ Bashدستورات و بسط های تاریخ Bash

در اینجا، تمام دستوراتی که در بافر ذخیره می شوند، فهرست شده اند. هر دستور دارای مقدار عددی است. قدیمی ترین دستور با 1 اختصاص داده می شود.

با استفاده از دستور زیر می توانیم تعداد دستورات را برای چاپ محدود کنیم:

$ تاریخ ن

دستورات و بسط های تاریخ Bashدستورات و بسط های تاریخ Bash

در اینجا، N یک عدد صحیح است که در آن N >= 0 است. خروجی حاوی آخرین N دستورات از تاریخ است.

همچنین می توانیم از خروجی پشت سر هم با grep برای فیلتر کردن استفاده کنیم:

$ تاریخ | grep <رشته>

دستورات و بسط های تاریخ Bashدستورات و بسط های تاریخ Bash

برای مرور تاریخچه طولانی، می‌توانیم از دستور «کمتر» استفاده کنیم:

$ تاریخ | کمتر

دستورات و بسط های تاریخ Bashدستورات و بسط های تاریخ Bash

حذف دستورات از تاریخچه

اگر می خواهید دستور خاصی را از تاریخچه حذف کنید، از دستورات زیر استفاده کنید:

$ تاریخ

دستورات و بسط های تاریخ Bashدستورات و بسط های تاریخ Bash

$ تاریخ <فرمان_شماره>

دستورات و بسط های تاریخ Bashدستورات و بسط های تاریخ Bash

$ تاریخ

دستورات و بسط های تاریخ Bashدستورات و بسط های تاریخ Bash

به طور مشابه، برای حذف دستورات از M به N از تاریخچه، می توانیم از دستورات زیر استفاده کنیم:

$ تاریخ

دستورات و بسط های تاریخ Bashدستورات و بسط های تاریخ Bash

$ تاریخ MN

دستورات و بسط های تاریخ Bashدستورات و بسط های تاریخ Bash

$ تاریخ

دستورات و بسط های تاریخ Bashدستورات و بسط های تاریخ Bash

برای پاک کردن تاریخچه از بافر RAM برای جریان terminal جلسه، به جای آن از دستورات زیر استفاده کنید:

$ تاریخ

$ تاریخ

دستورات و بسط های تاریخ Bashدستورات و بسط های تاریخ Bash

برای پاک کردن تاریخچه از فایل تاریخچه ذخیره شده روی دیسک، ما می توانیم آن را به طور کامل با NULL بازنویسی کنیم:

$ گربه /توسعه دهنده/خالی > $HISTFILE

دستورات و بسط های تاریخ Bashدستورات و بسط های تاریخ Bash

تنظیمات تاریخچه Bash

راه‌های مختلفی برای تغییر روش مدیریت Bash در تاریخ وجود دارد. بسیاری از این گزینه ها توسط متغیرهای محیطی مدیریت می شوند.

برای تغییر مقدار آنها، فایل “bashrc” را ویرایش می کنیم:

$ نانو ~/.bashrc

دستورات و بسط های تاریخ Bashدستورات و بسط های تاریخ Bash

پس از ویرایش، فایل را ذخیره کرده و مجدداً در Bash بارگذاری کنید.

$ منبع ~/.bashrc

دستورات و بسط های تاریخ Bashدستورات و بسط های تاریخ Bash

برای ایجاد تغییرات در سراسر سیستم، “bashrc” را که در مکان‌های زیر قرار دارد ویرایش کنید:

$ نانو /و غیره/bash.bashrc

پیشنهاد می‌کنیم بخوانید:  چگونه می توانم استدلال را در یک اسکریپت Bash پاس کنم؟

$ نانو /و غیره/بشرک

دستورات و بسط های تاریخ Bashدستورات و بسط های تاریخ Bash

اندازه بافر

همانطور که قبلا ذکر شد، Bash از دو بافر برای ذخیره تاریخچه فرمان در RAM (برای جلسه فعلی) و در یک فایل دیسک (برای تمام جلسات قبلی) استفاده می کند.

اندازه این بافرها توسط دو متغیر محیطی کنترل می شود:

  • HISTSIZE: تعداد ورودی های ذخیره شده در بافر RAM را مشخص می کند.
  • HISTFILESIZE: تعداد ورودی های ذخیره شده در فایل دیسک را مشخص می کند.

ما می توانیم مقدار آنها را در “bashrc” برای مطابقت با نیازهای خود تغییر دهیم:

$ نانو ~/.bashrc

به عنوان مثال، برای ذخیره 5000 ورودی در هر دو بافر، “bashrc” را با کد زیر به روز کنید:

$ HISTSIZE=5000

$ HISTFILESIZE=5000

دستورات و بسط های تاریخ Bashدستورات و بسط های تاریخ Bash

حذف فرمان

به طور پیش‌فرض، Bash تک تک دستورات اجرا شده را در بافرهای تاریخچه ذخیره می‌کند. با این حال، می‌توانیم آن را طوری پیکربندی کنیم که Bash دستورات خاصی را نادیده بگیرد. این می تواند در شرایطی مفید باشد که مجبور هستید چندین بار دستورات مشابه را اجرا کنید و بافر را با هرزنامه پر کنید.

  • HISTCONTROL

بیایید با مثال دستور زیر شروع کنیم:

$ اکو “میمون” && تاریخ 5

دستورات و بسط های تاریخ Bashدستورات و بسط های تاریخ Bash

$ اکو “بونک” && تاریخ 5

دستورات و بسط های تاریخ Bashدستورات و بسط های تاریخ Bash

همانطور که خروجی فرمان history نشان می دهد، فقط اولین فرمان echo ثبت می شود اما دومی نه.

این کار متغیر محیطی HISTIGNORE است. به Bash می‌گوید دستورات را در بافر تاریخچه مبتنی بر ثبت نکند روی الگوهای خاص مقادیر زیر در دسترس هستند:

  • نادیده گرفتن: اگر دستوری با ورودی سابقه قبلی مطابقت داشته باشد، ثبت نمی شود.
  • نادیده گرفتن فضا: اگر دستوری در ابتدا با فاصله شروع شود، ثبت نمی شود.
  • هر دو را نادیده بگیرید: هم قاعده ignoredups و هم ignorespace را اعمال می کند.
  • پاک شده ها: تمام خطوط قبلی که با دستور فعلی مطابقت دارند از تاریخچه پاک می شوند.

در مثال اول، استفاده از ignorespace را نشان دادیم. با این حال، همه توزیع‌ها نمی‌توانند Bash را با این پیکربندی ارسال کنند. مثل همیشه، می توانیم آنها را به “bashrc” اضافه کنیم:

$ HISTCONTROL=هر دو را نادیده بگیرید

دستورات و بسط های تاریخ Bashدستورات و بسط های تاریخ Bash

همچنین با استفاده از دستور زیر می توان چندین گزینه را فعال کرد:

$ HISTCONTROL=ignoredups:ignorespace

در اینجا، ignoredups:ignorespace معادل ignoreboth است.

  • HISTIGNORE

این متغیر محیطی می تواند شامل یک یا چند الگو باشد. هر فرمانی که با هر الگوی توصیف شده توسط HISTIGNORE مطابقت داشته باشد در هیچ یک از بافرهای سابقه ثبت نخواهد شد. الگوها با استفاده از عبارات منظم تعریف می شوند.

ساختار به شرح زیر است:

$ HISTIGNORE=::

به عنوان مثال، برای حذف دستورات history و echo از تاریخچه Bash، HISTIGNORE را به صورت زیر به روز کنید:

$ HISTIGNORE=‘تاریخ’:“پژواک *”

دستورات و بسط های تاریخ Bashدستورات و بسط های تاریخ Bash

ما می توانیم از زنجیره دستورات زیر برای آزمایش آن استفاده کنیم:

$ ls /var/لوب &> /توسعه دهنده/خالی

$ تاریخ

دستورات و بسط های تاریخ Bashدستورات و بسط های تاریخ Bash

$ اکو سلام دنیا

$ تاریخ

دستورات و بسط های تاریخ Bashدستورات و بسط های تاریخ Bash

مهر زمانی

Bash همچنین می تواند برای ثبت زمان اجرای یک فرمان پیکربندی شود. می تواند در موقعیت های مختلف مانند اشکال زدایی مفید باشد.

برای فعال کردن مهرهای زمانی در سابقه Bash، مقدار HISTTIMEFORMAT را به‌روزرسانی کنید:

$ HISTTIMEFORMAT=

تمام کاراکترهای کنترل قالب زمانی موجود در مرد موجود است page از دستور تاریخ

$ مرد تاریخ

دستورات و بسط های تاریخ Bashدستورات و بسط های تاریخ Bash

لیست زیر شامل چند مورد ساده است:

  • %T: زمان
  • %d: روز
  • %m: ماه
  • %y: سال
$ HISTTIMEFORMAT=“%T %d:”

دستورات و بسط های تاریخ Bashدستورات و بسط های تاریخ Bash

تداوم تاریخ

هنگام کار با CLI، در بسیاری از موارد، با چندین ترمینال کار می کنید. اینجاست که مدیریت تاریخ باش می تواند به منبع درد تبدیل شود.

پیشنهاد می‌کنیم بخوانید:  25 فرمان Bash که باید بدانید

به طور پیش فرض، پس از بسته شدن جلسه، فایل تاریخچه به روز می شود. در حالی که برای یک جلسه خوب است، اما برای چندین جلسه به طور همزمان کافی نیست. ما می توانیم این مشکل را با مجبور کردن Bash برای به روز رسانی فایل تاریخچه هر بار که دستوری اجرا می شود حل کنیم.

برای انجام این کار، مقدار PROMPT_COMMAND را به‌روزرسانی کنید:

$ PROMPT_COMMAND=“تاریخچه -a”

در اینجا، متغیر PROMPT_COMMAND می تواند حاوی دستورات معتبری باشد. محتویات PROMPT_COMMAND قبل از اینکه Bash ورودی کاربر را شروع کند اجرا می شود. دستور “history –a” تاریخچه را مجبور می کند تا محتویات را به پرونده تاریخچه اضافه کند.

بسط تاریخ و تعیین کنندگان

Bash دارای چند میانبر داخلی برای استفاده از ویژگی تاریخچه آن است. در اینجا لیست تعیین کنندگان آمده است:

  • !!: آخرین دستور را از تاریخ اجرا می کند.
  • : دستور N ام را از تاریخ اجرا می کند.
  • !-ن: دستور N ام را قبل از آخرین دستور تاریخ اجرا می کند.
  • !<فرمان>: آخرین دستور را اجرا می کند.

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

$ اکو 1

$ اکو 2

$ اکو 3

$ تاریخ

$ !اکو

$ !3

$ !1

$ !!

دستورات و بسط های تاریخ Bashدستورات و بسط های تاریخ Bash

برخی از تعیین کننده ها نیز با آرگومان های دستوری از تاریخ کار می کنند:

  • !:*: از تمام آرگومان های آخرین دستور استفاده کنید.
  • !:^: از اولین آرگومان آخرین دستور استفاده کنید.
  • !: ن: از آرگومان N ام آخرین دستور استفاده کنید.
  • !:MN: از آرگومان های M تا N آخرین دستور استفاده کنید.
  • !:$: از آخرین آرگومان آخرین دستور استفاده کنید.

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

$ اکو 1 2 3 4 5 6 7

$ اکو !:*

$ اکو 1 2 3 4 5 6 7

$ اکو !:^

$ اکو 1 2 3 4 5 6 7

$ اکو !:5

$ اکو 1 2 3 4 5 6 7

$ اکو !:15

$ اکو 1 2 3 4 5 6 7

$ اکو !:$

دستورات و بسط های تاریخ Bashدستورات و بسط های تاریخ Bash

اگر نیاز به کار با پارامترهای یک دستور دیگر دارید، تعیین کننده ها به شکل زیر هستند:

  • !^: از اولین آرگومان دستور استفاده می کند.
  • !$: از آخرین آرگومان دستور استفاده می کند.

زنجیره فرمان زیر کاربرد آنها را نشان می دهد:

$ ls -lh /var/ورود به سیستم &> /توسعه دهنده/خالی

$ دست زدن به 1txt 2txt 3txt 4txt 5txt

$ اکو !دست زدن به^

$ اکو !دست زدن به$

دستورات و بسط های تاریخ Bashدستورات و بسط های تاریخ Bash

میانبرهای صفحه کلید تاریخچه

علاوه بر تمام دستورات و متغیرهای محیطی، Bash همچنین از تعداد انگشت شماری میانبر صفحه کلید برای پیمایش آسان تر در تاریخ پشتیبانی می کند:

  • بالا کلید پیکان: به عقب اسکرول کنید
  • پایین کلید پیکان: به جلو بروید

همچنین میانبرهای صفحه کلیدی برای جستجوی تاریخچه تعاملی در دسترس هستند:

  • Ctrl + R: دستورات را در تاریخ جستجو کنید.
  • Ctrl + O: دستور انتخاب شده را اجرا کنید.
  • Ctrl + G: از جستجوی تعاملی خارج شوید.

نتیجه

ما در مورد تاریخچه Bash با جزئیات صحبت کردیم. ما یاد گرفتیم که Bash چگونه تاریخچه فرمان را ذخیره می کند و چگونه از آن به روش های مختلف استفاده کنیم. ما روش کار با سابقه Bash را با استفاده از مثال‌های مختلف نشان دادیم.

مایلید درباره Bash بیشتر بدانید؟ زیر مجموعه برنامه نویسی Bash شامل صدها راهنما است روی ویژگی های مختلف Bash

محاسبات مبارک!

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

زمان انتشار: 1402-12-28 18:31:03

امتیاز شما به این مطلب
دیدگاه شما در خصوص مطلب چیست ؟

آدرس ایمیل شما منتشر نخواهد شد.

لطفا دیدگاه خود را با احترام به دیدگاه های دیگران و با توجه به محتوای مطلب درج کنید