---
title: بش bash چیست؟
description: توسعه‌دهندگان، مدیران سیستم و مهندسان DevOps زمان زیادی را در خط فرمان لینوکس می‌گذرانند در مواقع دیگر، فقط باید همان دستور را دوباره اجرا کنیم یا مشخص کنیم که قبلاً چه دستوراتی روی یک سیستم اجرا شده‌اند. در همه این موارد، دانستن نحوه کار با دستور history در bash لینوکس مفید است.
url: "https://www.novinhost.org/docs/what-is-bash/"
updated: "2025-10-15"
category: راهنمای لینوکس
---

# بش bash چیست؟

توسعه‌دهندگان، مدیران سیستم و مهندسان DevOps زمان زیادی را در خط فرمان لینوکس می‌گذرانند در مواقع دیگر، فقط باید همان دستور را دوباره اجرا کنیم یا مشخص کنیم که قبلاً چه دستوراتی روی یک سیستم اجرا شده‌اند. در همه این موارد، دانستن نحوه کار با دستور history در bash لینوکس مفید است.

در این مقاله، نگاهی دقیق‌تر به تاریخچه bash، نحوه عملکرد آن و نحوه استفاده از آن برای افزایش کارایی در هنگام کار با خط فرمان لینوکس خواهیم داشت. می‌توانید دستورات این مقاله را تقریباً با استفاده از هر سیستم عامل مدرن *nix با bash دنبال کنید.

## تاریخچه بش چیست؟

اصطلاح تاریخچه bash به دستورات، فایل‌ها و میانبرهایی اشاره دارد که به شما امکان مشاهده، تغییر و حذف دستورات bash اجرا شده روی یک سیستم را می‌دهند.

Bash دو دستور برای کار با تاریخچه bash دارد:

- `history`- به شما امکان می‌دهد دستورات را فهرست کرده و تاریخچه bash خود را تغییر دهید.
- `fc`- به شما امکان می‌دهد دستورات موجود در تاریخچه bash خود را فهرست، ویرایش و اجرا کنید.

از آنجا که اصطلاح «تاریخچه bash» اغلب به معنای خود دستور است، ما در بیشتر این مقاله به جای آن، `history`بر سازوکار دستور تمرکز خواهیم کرد .`history``fc`

علاوه بر این دو دستور bulitin، انواع فایل‌ها (مانند `~/.bash_history`)، بسط‌ها (مانند `!!`) و میانبرهای صفحه کلید (مانند کلیدهای ↑ و ↓) وجود دارند که به شما در کار با تاریخچه bash کمک می‌کنند.

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

### تاریخچه Bash کجا ذخیره می‌شود؟

به طور پیش‌فرض، `history`دستورات را تا زمانی که از ترمینال خارج شوید در RAM ذخیره می‌کند. پس از خروج، دستورات در `~/.bash_history`فایل روی دیسک نوشته می‌شوند. بافر تاریخچه به ۱۰۰۰ ورودی دستور و فایل تاریخچه به ۲۰۰۰ ورودی محدود است.

شما می‌توانید رفتار پیش‌فرض `history`دستور را با تنظیم متغیرهای محیطی تغییر دهید، که به زودی جزئیات بیشتری در مورد آنها بررسی خواهیم کرد.

## کار با تاریخچه Bash: اصول اولیه

تاریخچه‌ی Bash قابلیتی است که به شما امکان مشاهده و پاک کردن دستورات اجرا شده‌ی قبلی را می‌دهد. در ادامه، نحوه‌ی مشاهده‌ی تاریخچه‌ی bash، نحوه‌ی پاک کردن تاریخچه‌ی bash و همچنین نحوه‌ی جستجو در تاریخچه‌ی bash را بررسی خواهیم کرد.

### چگونه تاریخچه Bash را ببینیم؟

ساده‌ترین راه برای شروع کار با bash، اجرای `history`دستور بدون هیچ گزینه‌ای است. خروجی مشابه زیر را خواهید دید:

```bash
history
1  echo "one"
2  echo "two"
3  echo "three"
4  echo "four"
5  echo "five"
6  echo "six"
```

اعداد کنار دستورات، ترتیب وارد شدن آنها در تاریخچه را نشان می‌دهند (قدیمی‌ترین دستور ۱ است). همچنین می‌توانید از کلیدهای ↑ و ↓ روی صفحه کلید خود برای پیمایش در تاریخچه bash خود استفاده کنید.

می‌توانیم با دستور زیر خروجی را به N دستور آخر محدود کنیم `history N`. برای مثال، `history 2`دو دستور اخیر را برمی‌گرداند.

```bash
history 2
6  echo "six"
7  history 2
```

می‌توانید تاریخچه را به داخل `grep`یا `less`برای فیلتر کردن آسان‌تر خروجی، لوله‌کشی کنید.

```bash
history | grep ping
6  ping cherryservers.com
27  history | grep ping
```

### چگونه تاریخچه Bash را پاک کنیم؟

برای پاک کردن تاریخچه Bash، می‌توانید یک ورودی خاص را با حذف کنید که `history -d N`در آن N شماره دستور یا محدوده‌ای از اعداد است. به عنوان مثال، `history -d 2-4`دستورات ۲، ۳ و ۴ را از تاریخچه ما حذف می‌کند.

برای پاک کردن بافر تاریخچه (یعنی دستورات ذخیره شده در RAM برای جلسه ترمینال فعلی) از دستور استفاده کنید `history -c`.

تاریخچه bash که به طور پیش فرض روی دیسک ذخیره می‌شود، در مسیر زیر قرار دارد `$HISTFILE`. `~/.bash_history`می‌توانید آن فایل را با دستوری مانند زیر پاک کنید:

```bash
cat /dev/null > ~/.bash_history
```

## پیکربندی تنظیمات تاریخچه Bash با .bashrc

در برخی موارد، ممکن است بخواهید نحوه عملکرد تاریخچه bash را در سیستم لینوکس خود تغییر دهید. افزودن متغیرهای محیطی لینوکس به فایل شما می‌تواند به شما در انجام این کار کمک کند. در اینجا چند مورد استفاده رایج برای سفارشی‌سازی تاریخچه bash با استفاده از . `~/.bashrc`آمده است .`~/.bashrc`

در ادامه، به یاد داشته باشید که تغییرات در فایل کاربر `~/.bashrc`پس از خروج و ورود مجدد به پوسته شما اعمال می‌شوند. به عنوان یک روش جایگزین، می‌توانید تنظیمات bash را اجرا کنید `. ~/.bashrc`یا دوباره بارگذاری کنید.`source ~/.bashrc`

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

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

![بش bash چیست؟](https://www.novinhost.org/wp-content/uploads/2025/10/01-3.png)
 با این حال، این ممکن است در مورد همه توزیع‌ها صادق نباشد. اینکه آیا فاصله‌های ابتدایی نادیده گرفته می‌شوند یا خیر، به `$HISTCONTROL`متغیر محیطی بستگی دارد. اگر `$HISTCONTROL`روی `ignoreboth`یا تنظیم شده باشد `ignorespace`، دستوراتی که دارای فاصله ابتدایی هستند در تاریخ ذخیره نمی‌شوند.

برای حذف دستورات از تاریخچه bash خود با استفاده از `~/.bashrc`، می‌توانید از `$HISTIGNORE`متغیر محیطی استفاده کنید. `$HISTIGNORE`به شما امکان می‌دهد لیستی از الگوهای دستوری را که با دونقطه از هم جدا شده‌اند و در تاریخچه bash شما ذخیره نمی‌شوند، تعریف کنید. به عنوان مثال، برای نادیده گرفتن هر `sudo`دستور یا هر دستوری که در آن `echo`با یک `w`، دنبال می‌شود، این را به لیست خود اضافه کنید.`~/.bashrc`

```bash
HISTIGNORE='sudo *':'echo w*'
```

### دستورات را فوراً در ‎.bash_history‎ ذخیره کنید

معمولاً کاربران چندین ترمینال را برای یک حساب کاربری باز دارند و اینجاست که اوضاع می‌تواند پیچیده شود. به طور پیش‌فرض، این `history`دستور فقط دستورات مربوط به جلسه ترمینال فعلی را نشان می‌دهد و دستوراتی که در `~/.bash_history`فایل ذخیره می‌شوند، دستورات مربوط به آخرین جلسه برای خروج هستند.

![بش bash چیست؟](https://www.novinhost.org/wp-content/uploads/2025/10/02-2.png)
 برای اینکه دستورات بلافاصله در `~/.bash_history`فایل شما باقی بمانند، می‌توانید این کد را به فایل اضافه کنید `~/.bashrc`:

```bash
PROMPT_COMMAND='history -a'
```

### تاریخچه Bash به همراه مهر زمانی: تاریخ و مهرهای زمانی را به خروجی تاریخچه Bash اضافه کنید

اغلب، دانستن اینکه *چه زمانی* یک دستور را اجرا کرده‌اید، بخش مهمی از دانستن اینکه اکنون به کدام دستور نیاز دارید، است. اضافه کردن مهرهای زمانی به خروجی تاریخچه bash شما می‌تواند این کار را آسان‌تر کند.

برای اضافه کردن مهرهای زمانی به تاریخچه bash خود، این را به فایل زیر اضافه کنید `~/.bashrc`:

```bash
HISTTIMEFORMAT="%F %T "
```

`%F `تاریخ را با فرمت YYYY-MM-DD اضافه می‌کند و `%T `یک مهر زمانی HH:MM:SS نیز به آن اضافه می‌کند. در اینجا مثالی از `history`خروجی دستور با این مجموعه متغیر محیطی bash آورده شده است.

![بش bash چیست؟](https://www.novinhost.org/wp-content/uploads/2025/10/03-2.png)
 توجه داشته باشید که فاصله بعد از `%F`and `%T`برای قالب‌بندی خروجی مفید است. بدون فاصله، تاریخ، مهر زمان و دستور همگی با هم اجرا می‌شوند.

### تغییر بافر تاریخچه Bash و اندازه فایل

اگر مقادیر پیش‌فرض ۱۰۰۰ ورودی دستور در بافر تاریخچه و ۲۰۰۰ ورودی در فایل تاریخچه، آن چیزی نیست که شما می‌خواهید، می‌توانید متغیرهای محیطی `$HISTSIZE`(buffer) و `$HISTFILESIZE`(file) را تغییر دهید.

برای مثال، برای تنظیم هر دو روی ۱۱۰۰۰ ورودی، مقادیر پیش‌فرض را به صورت زیر تغییر دهید:

```bash
HISTSIZE=11000
HISTFILESIZE=11000
```

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

علاوه بر این `history`دستور، چندین میانبر صفحه کلید وجود دارد که کار با history در bash را آسان می‌کند. در اینجا به برخی از مفیدترین آنها اشاره می‌کنیم:

| میانبر صفحه کلید تاریخچه Bash | توضیحات |
| --- | --- |
| کلید ↑ | پیمایش به عقب در تاریخچه bash |
| کلید ↓ | حرکت به جلو در تاریخچه bash |
| ctrl+R | جستجوی دستورات در تاریخچه bash شما |
| ctrl+O | اجرای دستوری که با استفاده از جستجوی ctrl+R پیدا کرده‌اید |
| کنترل+جی | خروج از جستجو با crtl+R |

## گسترش تاریخچه Bash

اگر تا به حال دستور را اجرا کرده باشید `sudo !!`، از دستور بسط تاریخچه bash استفاده کرده‌اید. با این حال، روش‌های بسیار دیگری برای استفاده از دستورات بسط برای کار با تاریخچه bash شما وجود دارد. در اینجا لیستی از برخی از مفیدترین بسط‌های تاریخچه bash آورده شده است:

| دستور بسط تاریخچه Bash | توضیحات |
| --- | --- |
| `!!` | آخرین دستور اجرا شده در ترمینال. این معادل است با `!-1`. |
| `!N` | دستور Nام در تاریخچه دستورات bash شما. |
| `!-N` | دستور N قبل از آخرین دستور در تاریخچه bash شما. |

برای نشان دادن منطق، یک مثال ساده ارائه می‌دهیم:

![بش bash چیست؟](https://www.novinhost.org/wp-content/uploads/2025/10/04-2.png)
 توجه داشته باشید که در مثال، ما قبل از دستورات بسط خود یک فاصله اضافه کردیم تا آنها در تاریخچه bash ما گنجانده نشوند.

### تعیین‌ کننده‌ های تاریخچه‌ ی Bash

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

`!<command>`جدیدترین دستورات `<command>`در تاریخچه bash شما را اجرا خواهد کرد. برای مثال، فرض کنید این دستورات را در خروجی خود داریم `history`:

```bash
1  ping 1.1.2.2
2  touch pepperandegg.txt
3  curl -Lo cherry.html cherryservers.com
4  rm somefile.log
5  ls -la
```

`!curl`اجرا خواهد شد `curl -Lo cherry.html cherryservers.com`، `!ls`اجرا خواهد شد `ls -la`، و غیره.

همچنین می‌توانید از `^`designatorها برای جایگزینی بخش‌هایی از جدیدترین دستور در تاریخچه bash خود با محتوای متفاوت استفاده کنید. قالب کلی به این صورت است:

```bash
^<original content>^<new content>^
```

برای مثال، اگر دستور قبلی در تاریخچه شما این بوده باشد:

```bash
scp this.file root@host:/path/wrongplace
```

و اگر می‌خواستید به جای تایپ مجدد کل دستور، `/path/wrongplace`به این تغییر دهید، می‌توانستید دستور زیر را اجرا کنید:`/path/rightplace`

```bash
^wrongplace^rightplace^
```

و خروجی مشابه زیر خواهد بود:

```bash
scp this.file root@localhost:/tmp/rightplace

root@host's password:
this.file                             100%    10     0.0KB/s   00:01
```

#### استفاده از نشانگرها برای دریافت آرگومان‌ها از یک دستور

شما می‌توانید از یک دونقطه `:`و به دنبال آن یک نشانگر خاص برای اضافه کردن آرگومان‌هایی از جدیدترین دستور در تاریخچه خود به دستور بعدی استفاده کنید. جدول زیر جزئیات برخی از نشانگرهای رایج را نشان می‌دهد:

| طراح | توضیحات |
| --- | --- |
| `!:^` | از اولین آرگومان آخرین دستور در تاریخچه bash خود استفاده کنید. |
| `!:N` | از آرگومان Nام آخرین دستور در تاریخچه bash خود استفاده کنید |
| `!:$` | از آخرین آرگومان آخرین دستور در تاریخچه bash خود استفاده کنید. |
| `!:*` | از تمام آرگومان‌های آخرین دستور در تاریخچه bash خود استفاده کنید. |

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

![بش bash چیست؟](https://www.novinhost.org/wp-content/uploads/2025/10/05-2.png)
بش bash چیست؟

### اصلاح‌کننده‌های تاریخچه Bash

اصلاح‌کننده‌های تاریخچه Bash با تغییر محتوا یا اجرای دستور، معرف‌ها را تکمیل می‌کنند. شما اصلاح‌کننده‌ها را بعد از یک دستور با یک دونقطه و یک حرف (مثلاً `:h`) مشخص می‌کنید.

در اینجا برخی از اصلاح‌کننده‌های تاریخچه رایج bash و نحوه عملکرد آنها آورده شده است.

| اصلاح‌کننده | توضیحات |
| --- | --- |
| `:h` | مسیر انتهایی را از یک دستور حذف می‌کند. برای دریافت مسیر بدون نام فایل مفید است. |
| `:t` | مسیر ابتدایی یک دستور را حذف می‌کند. برای دریافت نام فایل بدون مسیر مفید است. |
| `:r` | پسوند را از نام فایل حذف می‌کند. |
| `:p` | یک دستور را بدون اجرای آن چاپ می‌کند. |
| `:s` | جایگزینی رشته‌ای مشابه با `sed`دستور را فعال می‌کند . |

برای مثال، فرض کنید می‌خواستیم تمام `.log`فایل‌های یک دایرکتوری را با فهرست کنیم، `ls /directory/*.log`اما به جای آن دستور را اجرا کردیم `ls /directory/*.txt`. می‌توانیم از این دستور `!:s/txt/log`برای اصلاح اشتباه استفاده کنیم. از ابتدا تا انتها، چیزی شبیه به این خواهد بود:

```bash
ls /directory/*.txt
pepperAndEgg.txt

!:s/txt/log
ls /directory/*.log
log1.log  log2.log  log3.log
```

## نتیجه‌ گیری

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

[**سرور کانادا**](https://www.novinhost.org/%D8%B3%D8%B1%D9%88%D8%B1-%D9%85%D8%AC%D8%A7%D8%B2%DB%8C-%DA%A9%D8%A7%D9%86%D8%A7%D8%AF%D8%A7/)
