توسعه دهنده؛ متمرکز بر برنامهنویسی سمت وب و هوش مصنوعی. linktr.ee/mh_sattarian
چای ۷: اجرای دستورات قبلی در ترمینال
![](https://files.virgool.io/upload/users/5179/posts/ubiallmxbdri/cqvknrqwq3gq.png)
برای اینکه دستوراتی که قبلا توی shell اجرا کردیم رو دوباره اجرا کنیم معمولا history رو نگاه میکنیم:
history | grep <search_term>
اما روشهای راحتتری هم برای اینکار هستن که بررسی میکنیم:
تمامی این اپراتورها هم در bash و هم در zsh قابل استفاده هستند.
اجرای دستور قبلی
برای اجرای آخرین دستوری که وارد کردیم میتونیم کلید بالا ⬆️ رو بزنیم تا دستور انتخاب بشه، اما اگر بخوایم از دستور قبلی توی دستور فعلی استفاده کنیم، میتونیم از از اپراتور !! استفاده کنیم:
هنگام استفاده از کلید بالا ⬆️ اگر وسط نوشتن دستوری باشین، فقط بین دستوراتی که مشابه تا اینجای دستور نوشته شده هستن جستجو میکنه؛ برای دیدن دستورات قبلی بدون در نظر گرفتن شباهت از Ctrl+P استفاده کنین.
pacman -S edex-ui
sudo !!
sudo pacman -S edex-ui
یکی از کاربردهای زیاد این روش میتونه اضافه کردن sudo به ابتدای دستور قبلی باشه.
![اجرای دستور قبلی توسط اپراتور !!](https://files.virgool.io/upload/users/5179/posts/ubiallmxbdri/otq4q3ib0tqi.gif)
اجرای دستور nام history
از اولین اجرای سیستم دستوراتی که توی ترمینال اجرا میشن توی history ذخیره میشن که با همین دستور هم لیست اونها رو میشه دید. هرکدوم از این دستورات یک index دارن که همینطور نشون دهنده ترتیب اجرای اونها هم هست. با دونستن شماره یک دستور و با کمک عملگر ! میشه اون دستور رو دوباره اجرا کرد:
# history : 105 ping google.com
!105
ping google.com
![اجرای دستور nام history](https://files.virgool.io/upload/users/5179/posts/ubiallmxbdri/38k6418rvsrt.gif)
جستجو در دستورهای قبلی
جستو با حرف شروع
برای استفاده و اجرا دوباره آخرین دستوری که با حرف مثلا q شروع شده میتونیم از اپراتور q! استفاده کنیم:
توجه کنید که q جزو اپراتور نبوده و جای اون هرکدوم از حروف رو میتونیم بذاریم.
!s
serve -s . # last command used starting with 's'
![جستو با حرف شروع](https://files.virgool.io/upload/users/5179/posts/ubiallmxbdri/pjvpkohjzvod.gif)
جستجو پویا در تاریخچه دستورات
برای اینکه آخرین دستوری که یک عبارت داخلش استفاده شده، میتونیم با استفاده از ترکیب Ctrl+R، جستجو در دستورات قبل رو فعال کرده و عبارت مورد جستجو رو وارد کنیم:
# press Ctrl+R
(zsh) bck-i-search: _
(bash) (reverse-i-search)`':
برای خارج شدن از این حالت، از Ctrl+G یا Ctrl+Q استفاده کنین.
![جستجو پویا در تاریخچه دستورات](https://files.virgool.io/upload/users/5179/posts/ubiallmxbdri/hx2ynmbxxjne.gif)
جستجو پویا با استفاده از fzf
fzf یک ابزار جستجوی فازی تحت خط فرمان هست که به کمک اون میتونیم خروجی هر دستوری رو بهصورت فازی جستجو کنیم. میتونید fzf رو از مدیر بسته سیستمعاملتون نصب کنید.
برای استفاده از fzf برای جستجو در history بهصورت زیر عمل میکنیم:
history | fzf +s --tac
![جستجو پویا با استفاده از fzf](https://files.virgool.io/upload/users/5179/posts/ubiallmxbdri/shtwkdxiumtb.gif)
استفاده از آرگومانهای دستور قبل
استفاده از آخرین آرگومان دستور قبل
برای تنها استفاده از آخرین آرگومان دستور قبلی میتونیم از اپراتور $! استفاده کنیم:
echo arg1 arg2 arg3
cd !$
echo arg3
![استفاده از آخرین آرگومان دستور قبل](https://files.virgool.io/upload/users/5179/posts/ubiallmxbdri/uqjimhgkdejj.gif)
استفاده از اولین آرگومان دستور قبل
برای استفاده از اولین آرگومان دستور قبلی میتونیم از اپراتور ^! استفاده کنیم:
echo arg1 arg2 arg3
cd !^
echo arg1
![استفاده از اولین آرگومان دستور قبل](https://files.virgool.io/upload/users/5179/posts/ubiallmxbdri/vruunm9lnb4s.gif)
استفاده از دستور قبلی بدون آرگومان
برای استفاده از دستور قبلی بدون آرگومانهاش میتونیم از اپراتور #! استفاده کنیم:
echo arg1 arg2 arg3
cd !#
echo echo
![استفاده از دستور قبلی بدون آرگومان](https://files.virgool.io/upload/users/5179/posts/ubiallmxbdri/8faxicp8torb.gif)
![](https://files.virgool.io/upload/users/5179/posts/ubiallmxbdri/ezpw0ymxhu6l.png)
این پست، قسمت هفتم از چای، مجموعهای در باب «چیزی که امروز یادگرفتم» است. باقی چایها رو میتونید از اینجا مشاهده کنید و در مورد فلسفهی این کار بخونید.
مطلبی دیگر از این انتشارات
چای ۵: اسکریپت نویسی Shell، بازهها در حلقه for
مطلبی دیگر از این انتشارات
چای ۱: بروزرسانی Google Sheets با استفاده از پایتون
مطلبی دیگر از این انتشارات
چای ۲: دسترسی به کنسول مرورگر در موبایل