خط فرمانگنو/لینوکس

استفاده از تاریخچه (History) در خط فرمان لینوکس

آخرین بروزرسانی

همانطوری که در درس‌های ابتدایی یاد گرفتیم، بش (Bash) تاریخچه (History) از فرمان‌هایی است که وارد کرده‌ایم را حفظ و نگهداری می‌کند. این لیست فرمان‌های در داخل پوشه home در داخل فایلی با نام bash_history نگهداری می‌شوند.

تسهیلات تاریخچه منبعی مفید است که به شما کمک می‌کند تا کمتر تایپ کنید. به‌ویژه زمانی که با ویرایش فرمان ترکیب شوند شما می‌توانید فرمان قبلی تایپ شده را با تغییرات جزیی به فرمانی جدید تبدیل نمایید.

جستجو در تاریخچه (History) خط فرمان

هر زمانی، ما می‌توانیم محتوای لیست تاریخچه فرمان‌ها را مشاهده کنیم:

به‌طور پیش‌فرض، بش (Bash) آخرین ۵۰۰ فرمان وارد شده توسط شما را در حافظه خود ذخیره می‌کند. در آینده خواهیم آموخت که چگونه این مقدار را تغییر دهیم. به‌عنوان مثال می‌خواهیم فرمان‌هایی که برای لیست کردن /usr/bin استفاده شده‌اند را پیدا کنیم. این یک راه برای رسیدن به این هدف است:

حال در بین فرمان‌های خود به یک فرمان جذاب مثل این رسیدیم:

عدد ۸۸ شماره خطی است که فرمان در لیست تاریخچه فرمان‌ها به خود اختصاص داده است. یک نوع دیگر بسط وجود دارد به نام بسط تاریخچه (History Expansion). برای استفاده از فرمان خط ۸۸ از علامت تعجب (!) قبل از شماره خط استفاده می‌کنیم، به‌صورت زیر:

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

برای شروع یک جستجوی فزایند، Ctrl+R را فشار دهید و در دنباله آن متن مورد نظر را وارد نمایید. وقتی که فرمان را پیدا کردید می‌توانید Enter را فشار دهید تا فرمان اجرا شود یا Ctrl+J را بفشارید تا فرمان از خط تاریخچه به فرمان اخیر خط فرمان کپی شود.

برای یافتن پیدایش متن بعدی (حرکت به بالا در لیست تاریخچه)، کلید Ctrl+R را دوباره فشار دهید و برای خروج از حالت جستجو نیز می‌توانید Ctrl+G و یا Ctrl+C را فشار دهید. ابتدا Ctrl+R را فشار دهید:

مشاهده می‌شود که وضعیت خط فرمان تغییر کرده تا نشان دهد که ما در حال انجام یک جستجوی فزاینده برعکس هستیم. چرا برعکس؟ زیرا ما داریم از زمان حال (اکنون) به فرمان‌های گذشته جستجو می‌کنیم. سپس شروع به نوشتن متن جستجو می‌کنیم. (به‌عنوان مثال /usr/bin)

بلافاصله جستجو نتیجه را به ما برمی‌گرداند. اکنون می‌توانیم فرمان را با فشردن کلید Enter اجرا کنیم و یا با استفاده از Ctrl+J آن را به داخل فرمان‌های اخیر کپی کنیم. حال Ctrl+J را فشار می‌دهیم:

شل (Shell) برمی‌گردد و خط فرمان برای اجرا آماده می‌شود.

جدول زیر لیست برخی از کلمات کلیدی به‌منظور دستکاری لیست تاریخچه را نشان می‌دهد:

کلیدشرح عملکرد
Ctrl+Pجابجایی به ورودی قبلی تاریخچه، درست همان کاری که کلید جهت بالا در صفحه‌کلید می‌کند.
Ctrl+Nجابجایی به ورودی بعدی تاریخچه، درست همان کاری که کلید جهت پایین در صفحه‌کلید می‌کند.
Alt+<جابجایی به ابتدا (بالای) لیست تاریخچه
Alt+>جابجایی به انتها (پایین) لیست تاریخچه. برای مثال فرمان اخیر
Ctrl+Rبرعکس کردن جستجوی افزایشی، جستجوهای بصورت افزایشی از فرمان اخیر لیست تاریخچه را مرتب می‌کنند.
Alt+Pبرعکس کردن جستجوی غیرافزایشی، با این کلید، رشته جستجو را تایپ کنید و قبل از انجام جستجو کلید Enter را فشار دهید.
Alt+Nجستجو رو به جلو، غیرافزایشی
Ctrl+Oاجرای آیتم در لیست تاریخچه و پیش روی به مورد بعدی. این زمانی به کار می‌آید که شما می‌خواهید یک تاولی از فرمان‌های موجود در لیست تاریخچه را دوباره اجرا کنید.

بسط تاریخچه (History Expansion)

شل (Shell) نوع ویژه‌ای از بسط برای آیتم‌هایی که در لیست تاریخچه استفاده می‌شوند را با استفاده از کاراکتر علامت تعجب (!) عرضه می‌کند.

همانطور که دیدیم علامت تعجب سبب شد تا شماره خط فرمان ذخیره شده در لیست تاریخچه را پیدا کنیم. ویژگی‌های دیگری از نوع بسط در جدول زیر وجود دارد:

توالیعملکرد
!!تکرار آخرین فرمان. احتمالا این آسان‌تر است تا کلید جهت بالا و سپس Enter را فشار دهید.
!numberتکرار شماره آیتم لیست تاریخچه
!stringتکرار آخرین آیتم لیست تاریخچه که با رشته خاص شروع می‌شود.
!?stringتکرار آخرین آیتم لیست تاریخچه که حاوی رشته‌ای خاص است.

توجه: از بسط تاریخچه استفاده نکنید مگر آن که کاملاً از محتوای فرمان در تاریخچه مطمئن باشید.

منبع: لینوکس‌سیزن نوشته فرشید نوتاش حقیقت

برچسب ها

نوشته‌های مشابه

دیدگاهتان را بنویسید

همچنین ببینید

بستن
دکمه بازگشت به بالا
بستن