Bash: تفاوت بین نسخه‌ها

از ویکی فارسی اوبونتو
پرش به: ناوبری، جستجو
(صفحه‌ای تازه حاوی «200px|thumb|left|alt text '''بَش''' یک پوسته یونیکس است که به صورت نرم‌ا...» ایجاد کرد)
 
جز (میان‌برهای صفحه‌کلید)
 
(۱۶ نسخه‌ٔ میانی ویرایش شده توسط ۴ کاربر نشان داده نشده)
سطر ۱: سطر ۱:
[[پرونده:bash.png|200px|thumb|left|alt text]]
+
[[پرونده:bash.png|200px|thumb|left|نمایی از پوستهٔ بش]]
'''بَش''' یک [[پوسته یونیکس]] است که به صورت [[نرم‌افزار آزاد|آزاد]] توسط [[برایان فاکس]] برای [[پروژه گنو|پروژهٔ گنو]] نوشته شده‌است. نام بَش [[سرنام]] '''B'''ourne-'''a'''gain '''sh'''ell در انگلیسی است.
+
'''گنو بَش''' (به انگلیسی GNU Bash) سرواژگان ''' GNU B'''ourne-'''A'''gain '''Sh'''ell یک [[Shell|پوسته]] برای [[OS|سیستم‌عامل‌های]]  [[شبه یونیکس]] است که به صورت [[Free Software|آزاد]] و تحت پروانهٔ GPLv3 توسّط [[Brian Fox|برایان فاکس]] در [[GNU Project|پروژهٔ گنو]] نوشته شده‌است.
  
 
== ویژگی‌ها ==
 
== ویژگی‌ها ==
بش یک پوستهٔ [[پوزیکس|پازیکس]] با تعداد قابل توجهی افزونه است. در ابتدا این پوسته برای [[سیستم‌عامل]] [[گنو]] طراحی شده‌بود. اما بش در اکثر سیستم‌عامل‌های خانواده [[شبه-یونیکس]] قابل اجراست. پوستهٔ پیش‌فرض در اکثر سیستم‌عامل‌هایی که از [[هسته لینوکس]] استفاده می‌کند، است. همچنین پوستهٔ پیش‌فرض سیستم‌عامل [[مک اواس ده]] که مبتنی بر [[داروین (سیستم‌عامل)|داروین]] است نیز می‌باشد. این پوسته برای سیستم‌عامل [[مایکروسافت ویندوز]] به وسیلهٔ شبیه‌ساز [[پوزیکس]] به نام [[سیگوین]] انتقال داده شده‌است.
+
بش یک پوستهٔ [[POSIX|پازیکس]] با تعداد قابل توجّهی افزونه است. در ابتدا این پوسته برای [[GNU OS|سیستم‌عامل گنو]] طرّاحی شده‌بود، ولی امروزه در بیش‌تر سیستم‌عامل‌های شبه‌یونیکس قابل اجرا و پوستهٔ پیش‌گزیدهٔ اغلب [[Distro|توزیع‌های]] سیستم‌عامل [[GNU/Linux|گنو/لینوکس]] و هم‌چنین [[Mac OS|مک]] است. این پوسته به وسیلهٔ شبیه‌ساز پوزیکس [[Cygwin|سیگ‌وین]] برای سیستم‌عامل [[Windows|ویندوز]] نیز پورت شده است. هم‌چنین ویندوز نیز از نگارش ده به بعد، امکان اجرای آن را توسّط مفسّر فراخوان‌های سامانه‌ای گنو/لینوکس فراهم کرده است.
  
اکثر قریب به اتفاق [[اسکریپت]]‌های نوشته شده برای [[پوسته بورن]] بدون تغییر در Bash نیز قابل اجرا هستند. همچنین در شکل دستورهای (Command Syntax) بش، از [[Korn shell]] و [[سی شل]] نیز الهام گرفته شده است، مانند ویرایش خط فرمان، تاریخچه‌ی فرمان، متغیرهای <code>RANDOM$</code> و <code>PPID$</code> و جایگزینی فرمان مطابق [[پازیکس]] <code>(…)$</code>. [[تکمیل خط فرمان]] نیز از ویژگیهای پرکاربرد Bash است که می‌توان با زدن [[کلید تب]] نام ناکامل برنامه‌ها، فایل‌ها و متغیرها را بصورت خودکار کامل کرد.
+
تقریباً تمامی [[Script|اسکریپت‌های]]نوشته شده برای پوستهٔ [[Bourne|بورن]] بدون تغییر در بش نیز قابل اجرایند. هم‌چنین در شکل، دستورهای بش از پوستهٔ [[Korn|کورن]] و پوستهٔ [[C|سی]] نیز الهام گرفته‌اند، مانند ویرایش [[CLI|خط فرمان]]، تاریخچهٔ فرمان، متغیَرهای <code>RANDOM$</code> و <code>PPID$</code> و جایگزینی فرمان مطابق پازیکس <code>(…)$</code>. ویژگی [[Auto Complete|تکمیل خودکار]] نیز از ویژگی‌های پرکاربرد بش است که می‌توان با زدن [[Tab Key|کلید جهش]] نام ناکامل برنامه‌ها، پرونده‌ها و متغیرها را به صورت خودکار کامل کرد.
 +
 
 +
بش دارای تعداد بسیاری افزونه است که پوستهٔ بورن فاقد آنهاست. بش بر خلاف بورن، می‌تواند بدون اجرا کردن [[Proccess|فرایندی]]‌ بیرونی روی اعداد صحیح محاسبات انجام دهد. بش از شکل دستوری <code>((…))</code> و متغیرهایی به صورت <code>((…))$</code> برای این کار استفاده می‌کند. شکل دستورهای بش به گونه‌ای است که امکان [[Redirection|تغییر مسیر]] ورودی/خروجی را به شکل ساده‌ای به کاربر می‌دهد. به عنوان نمونه بش می‌تواند [[stdout|خروجی استاندارد]] و [[stderr|خطای استاندارد]] را توسّط اپراتور <& در یک زمان تغییر مسیر دهد. همین کار را در پوستهٔ بورن باید توسّط <code>'command> file 2>&1'</code> انجام داد که نسبت به بش سخت‌تر است. به دلیل این تفاوت‌ها اسکریپت‌های نوشته شده برای بش، به ندرت در پوسته‌های بورن یا کورن قابل اجرا هستند، مگر این که در نوشتن آن‌ها به سازگاری فرمان‌های مورد استفاده توجّه شود. البته در حالت Posix Mode خیلی بیش‌تر از پازیکس تبعیت می‌کند.
  
بش دارای تعداد بسیاری افزونه است که Bourne shell فاقد آنهاست. بش می‌تواند بر خلاف Bourne shell بدون اجرا کردن [[پروسه]]‌ای بیرونی بر روی اعدا صحیح محاسباتی را انجام دهد. بش از شکل دستوری <code>((…))</code> و متغیرهایی بصورت <code>((…))$</code> برای اینکار استفاده می‌کند. شکل دستورهای بش بگونه‌ای است که امکان [[تغییر مسیر (رایانه)|تغییر مسیر ورودی/خروجی]] را به شکل ساده‌ای به کاربر می‌دهد. بعنوان نمونه بش می‌تواند [[خروجی استاندارد]] (stdout) و [[خطای استاندارد]] (stderr) را توسط اپراتور <& در یک زمان تغییرمسیر دهد. همین کار را در Bourne shell باید توسط <code>'command> file 2>&1'</code> انجام داد که نسبت به بش سخت‌تر است. بدلیل این تفاوت‌ها اسکریپت‌های نوشته شده برای بش، بندرت در Bourne shell یا Korn Shell قابل اجرا هستند مگر اینکه در نوشتن آنها به سازگاری فرمانهای مورد استفاده توجه شود. البته در حالت Posix mode خیلی بیشتر از [[پازیکس]] تبعیت می‌کند.
 
 
== افزونه‌های براکت ==
 
== افزونه‌های براکت ==
یکی از ویژوگی‌هایی که از [[سی شل]] به درون Bash راه یافته افزونه‌های براکت است که می‌توان توسط این امکان ترکیب‌هایی تکرار شونده بوجود آورد. ترتیب اجرای این دستورهای گسترش یافته از چپ به راست است. به نمونه‌های زیر توجه کنید :
+
یکی از ویژگی‌هایی که از پوستهٔ سی به درون بش راه یافته، افزونه‌های براکت است که می‌توان توسّط این امکان ترکیب‌هایی تکرار شونده به وجود آورد. ترتیب اجرای این دستورهای گسترش‌یافته از چپ به راست است. به نمونه‌های زیر توجه کنید:
<source lang="bash">
 
echo a{p,c,d,b}e # ape ace ade abe
 
echo {a,b,c}{d,e,f} # ad ae af bd be bf cd ce cf
 
</source>
 
  
از این ویژگی نمی‌توان در اسکریپت‌هایی که قصد داریم قابل حمل باشند استفاده کرد، بدلیل اینکه Bourne shell خروجی دیگری برای آن تولید می‌کند :
+
{{bc|
<source lang="bash">
+
$ echo a{p,c,d,b}e
 +
ape ace ade abe
 +
 
 +
$ echo {a,b,c}{d,e,f}
 +
ad ae af bd be bf cd ce cf
 +
}}
 +
 
 +
از این ویژگی نمی‌توان در اسکریپت‌هایی که قصد داریم قابل حمل باشند استفاده کرد، به دلیل این که بورن خروجی دیگری برای آن تولید می‌کند:
 +
 
 +
{{bc|
 
# A traditional shell does not produce the same output
 
# A traditional shell does not produce the same output
echo a{p,c,d,b}e # a{p,c,d,b}e
+
$ echo a{p,c,d,b}e
</source>
+
a{p,c,d,b}e
 +
}}
 +
 
 +
وقتی براکت‌ها توسّط [[wildcars|نویسه‌های جایگزین]] استفاده شوند، ابتدا براکت‌ها و سپس نویسه‌های جایگزین اعمال می‌شوند. به عنوان نمونه برای نمایش فهرستی از تصاویر JPEG و PNG موجود در [[Directory|شاخهٔ]] فعلی، می‌توان از دستور زیر استفاده کرد:
  
وقتی براکت‌ها توسط کارکترهای جایگزین {{انگلیسی|wildcards استفاده شوند، ابتدا براکت‌ها و سپس کارکترهای جایگزین اعمال می‌شوند. بعنوان نمونه برای نمایش لیستی از تصاویر JPEG و PNG موجود در دایرکتوری فعلی، میتوان از دستور زیر استفاده کرد:
+
{{bc|
<source lang="bash">
+
$ ls *.{jpg,jpeg,png}
ls *.{jpg,jpeg,png} # expands to *.jpg *.jpeg *.png - after which,
+
# expands to *.jpg *.jpeg *.png - after which,
                      # the wildcards are processed
+
# the wildcards are processed
</source>
+
}}
  
 
== اسکریپت‌های راه‌اندازی ==
 
== اسکریپت‌های راه‌اندازی ==
وقتی Bash اجرا می‌شود، دستورهای موجود در اسکریپتهای مختلفی را اجرا می کند.
+
وقتی بش اجرا می‌شود، دستورهای موجود در اسکریپت‌های مختلفی را اجرا می کند.
وقتی Bash بعنوان یک پوسته‌ی تعاملی اجرا می‌شود، ابتدا اگر فایل <code>etc/profile/</code> موجود باشد دستورهای درون آنرا میخواند و اجرا می‌کند. سپس بترتیب بدنبال یکی از فایلهای <code>bash_profile.</code> یا <code>bash_login.</code> یا <code>profile.</code> در دایرکتوری خانگی کاربر می‌گردد (<code>/~</code>). هر کدام را که در ابتدا پیدا کرد، دستورهای درون آنرا می‌خواند و اجرا می‌کند.
+
وقتی بش به عنوان یک پوستهٔ تعاملی اجرا می‌شود، ابتدا اگر پروندهٔ <code>etc/profile</code> موجود باشد دستورهای درون آن را می‌خواند و اجرا می‌کند. سپس به ترتیب به دنبال یکی از پرونده‌های <code>bash_profile.</code> یا <code>bash_login.</code> یا <code>profile.</code> در شاخهٔ خانگی کاربر می‌گردد (<code>/~</code>). هر کدام را که پیدا کرد، دستورهای درون آن را می‌خواند و اجرا می‌کند.
 +
 
 +
== میان‌برهای صفحه‌کلید ==
 +
میان‌برهای گفته شده در زیر برای حالت پیش‌فرض ([[Emacs|ای‌مکس]]) است، میان‌برهای [[Vim|ویم]] را می‌توان با دستور <code>set -o vi</code> فعّال کرد.
 +
 
 +
{| class="wikitable sortable"
 +
! class="unsortable"| میانبر
 +
! class="unsortable"| کاربرد
 +
|-
 +
| [[Tab Key|جهش]] || [[Auto Complete|تکمیل خودکار]] از جایی که مکان‌نما وجود دارد
 +
|-
 +
|  <code>Ctrl+a</code> || انتقال مکان‌نما به ابتدای خط (معادل کلید Home)
 +
|-
 +
|  <code>Ctrl+e</code> || انتقال مکان‌نما به انتهای خط (معادل کلید End) 
 +
|-
 +
|  <code>Ctrl+p</code> || فراخوانی فرمان قبلی (معادل کلید Up) 
 +
|-
 +
|  <code>Ctrl+n</code> ||  فراخوانی فرمان بعدی (معادل کلید Down)
 +
|-
 +
|  <code>Ctrl+r</code> || جست‌وجوی آخرین فرمانی که دارای نویسه(های) مشخّصی باشد. زدن دوبارهٔ این کلید در هنگام جست‌وجو، به فرمان قبلی‌تر رجوع می‌کند.
 +
|-
 +
|  <code>Ctrl+o</code> || اجرای فرمانی که در جست‌وجو یافته شد.
 +
|-
 +
|  <code>Ctrl+l</code> || پاک کردن محتویات صفحه‌نمایش (معادل فرمان clear).
 +
|-
 +
|  <code>Ctrl+u</code> || پاک کردن محتویاتی از خط که قبل از مکان‌نما وجود دارند و رونوشت آن‌ها درون بریده‌دان.
 +
|-
 +
|  <code>Ctrl+k</code> || پاک کردن محتویاتی از خط که بعد از مکان‌نما وجود دارند و رونوشت آن‌ها درون بریده‌دان.
 +
|-
 +
|  <code>Ctrl+w</code> || پاک کردن واژهٔ پیش از مکان‌نما و رونوشت آن درون بریده‌دان.
 +
|-
 +
|  <code>Ctrl+y</code> || چسباندن محتویات بریده‌دان از جایی که مکان‌نما وجود دارد.
 +
|-
 +
|  <code>Ctrl+d</code> || ارسال یک نشانگر EOF که باعث بسته شدن خط فرمان فعلی می‌شود (معادل دستور exit). (تنها در زمانی این اتّفاق می‌افتد که متنی در خطّ فعلی موجود نباشد)
 +
|-
 +
|  <code>Ctrl+c</code> || ارسال یک سیگنال از نوع SIGINT به فرایند فعلی، که باعث پایان اجرا و بسته شدن آن می‌شود.
 +
|-
 +
|  <code>Ctrl+z</code> || ارسال یک سیگنال از نوع SIGTSTP به فرایند فعلی، که باعث به تعلیق در آمدن آن می‌شود. که برای برگشت دادن آن می‌توان از دستور fg process-name-or-job-id استفاده کرد.
 +
|-
 +
|  <code>Ctrl+x Ctrl+e</code> || ویرایش خط فعلی در ادیتوری که توسط متغیّر محیطی EDITOR$ تعریف شده است.
 +
|-
 +
|  <code>Alt+f</code> || حرکت به جلو به اندازهٔ یک واژه.
 +
|-
 +
|  <code>Alt+b</code> || حرکت به عقب به اندازهٔ یک واژه.
 +
|-
 +
|  <code>Alt+Del</code> || برش واژهٔ واقع در پیش از مکان‌نما
 +
|-
 +
|  <code>Alt+d</code> || برش واژهٔ واقع در پس از مکان‌نما
 +
|-
 +
|  <code>Alt+u</code> || تبدیل تمام حروف کوچک به بزرگ، واقع در پس از مکان‌نما تا انتهای واژهٔ فعلی
 +
|-
 +
|  <code>Alt+l</code> || تبدیل تمام حروف بزرگ به کوچک، واقع در پس از مکان‌نما تا انتهای واژهٔ فعلی
 +
|-
 +
|  <code>Alt+c</code> || تبدیل حرف واقع در زیر مکان‌نما از کوچک به بزرگ و رفتن به انتهای واژهٔ فعلی
 +
|-
 +
|  <code>Alt+r</code> || انصراف تغییرات و برگرداندن محتویات خط فعلی به همان شکلی که در تاریخچهٔ خط فرمان موجود بود.
 +
|-
 +
|}
 +
 
 +
== بسته‌های مکمّل ==
 +
 
 +
=== bash-completion ===
 +
این بسته، مکمّلی برای بَش است که با تشخیص برنامه‌های موجود و به کار رفته در پوسته و یا سیستم‌عامل، ادامهٔ فرمان‌ها را پیشنهاد می‌دهد.
 +
این قابلیت با فشردن کلید [[Tab Key|جهش]] بر روی [[Keyboard|صفحه‌کلید]] قابل اجرا است. هم‌چنین با دوبار فشردن این کلید، فرمان‌های پیشنهادی به صورت کامل ظاهر خواهند شد.
 +
 
 +
برای نصب، از فرمان زیر استفاده می‌شود:
 +
{{bc|$ sudo apt install bash-completion}}
  
== میانبرهای صفحه‌کلید ==
+
[[رده:پوسته‌ها]]
میانبرهای گفته شده در زیر برای حالت پیش‌فرض ([[ایمکس]]) است، میانبرهای [[ویم]] را می‌توان توسط دستور <code>set -o vi</code> فعال کرد.
+
[[رده:گنو]]
* TAB : [[تکمیل خط فرمان|تکمیل خودکار]] از جایی که مکان‌نما وجود دارد.
 
* Ctrl+a : انتقال مکان‌نما به ابتدای خط (معادل کلید Home)
 
* Ctrl+e : انتقال مکان‌نما به انتهای خط (معادل کلید End)
 
* Ctrl+p : فراخوانی فرمان قبلی (معادل کلید Up)
 
* Ctrl+n : فراخوانی فرمان بعدی (معادل کلید Down)
 
* Ctrl+r : جستجوی آخرین فرمانی که دارای کارکتر(های) مشخصی باشد. زدن دوباره‌ی این کلید در هنگام جستجو، به فرمان قبلی‌تر رجوع می‌کند.
 
* Ctrl+o : اجرای فرمانی که در جستجو یافته شد.
 
* Ctrl+l : پاک کردن محتویات صفحه‌نمایش (معادل فرمان <code>[[Clear (یونیکس)|clear]]</code>).
 
* Ctrl+u : پاک کردن محتویاتی از خط که قبل از مکان‌نما وجود دارند و کپی کردن آنها درون [[بریده‌دان]].
 
* Ctrl+k : پاک کردن محتویاتی از خط که بعد از مکان‌نما وجود دارند و کپی کردن آنها درون [[بریده‌دان]].
 
* Ctrl+w : پاک کردن کلمه‌ی قبل از مکان‌نما و کپی کردن آن درون [[بریده‌دان]].
 
* Ctrl+y : چسباندن محتویات [[بریده‌دان]] از جایی که مکان‌نما وجود دارد.
 
* Ctrl+d : ارسال یک نشانگر EOF که باعث بسته شدن خط فرمان فعلی می‌شود (معادل دستور <code>exit</code>). (تنها در زمانی این اتفاق می‌افتد که متنی در خط فعلی موجود نباشد)
 
* Ctrl+c : ارسال یک سیگنال از نوع SIGINT به پروسه‌ی فعلی، که باعث پایان اجرا و بسته شدن آن می‌شود.
 
* Ctrl+z : ارسال یک سیگنال از نوع SIGTSTP به پروسه‌ی فعلی، به باعث به تعلیق در آمدن آن می‌شود. که برای برگشت دادن آن می‌توان از دستور <code>fg process-name-or-job-id</code> استفاده کرد.
 
* Ctrl+x Ctrl+e : ویرایش خط فعلی در ادیتوری که توسط متغیر EDITOR$ تعریف شده است.
 
* Alt+f : حرکت به جلو به اندازه‌ی یک واژه.
 
* Alt+b : حرکت به عقب به اندازه‌ی یک واژه.
 
* Alt+Del : برش کلمه‌ی واقع در قبل از مکان‌نما
 
* Alt+d : برش کلمه‌ی واقع در بعد از مکان‌نما
 
* Alt+u : تبدیل تمام حروف کوچک به بزرگ، واقع در بعد از مکان‌نما تا انتهای کلمه‌ی فعلی
 
* Alt+l : تبدیل تمام حروف بزرگ به کوچک، واقع در بعد از مکان‌نما تا انتهای کلمه‌ی فعلی
 
* Alt+c : تبدیل حرف واقع در زیر مکان‌نما از کوچک به بزرگ و رفتن به انتهای کلمه‌ی فعلی
 
* Alt+r : انصراف تغییرات و برگرداندن محتویات خط فعلی به همان شکلی که در تاریخچه‌ی خط فرمان موجود بود.
 

نسخهٔ کنونی تا ‏۱۳ تیر ۱۴۰۳، ساعت ۰۹:۲۳

نمایی از پوستهٔ بش

گنو بَش (به انگلیسی GNU Bash) سرواژگان GNU Bourne-Again Shell یک پوسته برای سیستم‌عامل‌های شبه یونیکس است که به صورت آزاد و تحت پروانهٔ GPLv3 توسّط برایان فاکس در پروژهٔ گنو نوشته شده‌است.

ویژگی‌ها

بش یک پوستهٔ پازیکس با تعداد قابل توجّهی افزونه است. در ابتدا این پوسته برای سیستم‌عامل گنو طرّاحی شده‌بود، ولی امروزه در بیش‌تر سیستم‌عامل‌های شبه‌یونیکس قابل اجرا و پوستهٔ پیش‌گزیدهٔ اغلب توزیع‌های سیستم‌عامل گنو/لینوکس و هم‌چنین مک است. این پوسته به وسیلهٔ شبیه‌ساز پوزیکس سیگ‌وین برای سیستم‌عامل ویندوز نیز پورت شده است. هم‌چنین ویندوز نیز از نگارش ده به بعد، امکان اجرای آن را توسّط مفسّر فراخوان‌های سامانه‌ای گنو/لینوکس فراهم کرده است.

تقریباً تمامی اسکریپت‌های‌ نوشته شده برای پوستهٔ بورن بدون تغییر در بش نیز قابل اجرایند. هم‌چنین در شکل، دستورهای بش از پوستهٔ کورن و پوستهٔ سی نیز الهام گرفته‌اند، مانند ویرایش خط فرمان، تاریخچهٔ فرمان، متغیَرهای RANDOM$ و PPID$ و جایگزینی فرمان مطابق پازیکس (…)$. ویژگی تکمیل خودکار نیز از ویژگی‌های پرکاربرد بش است که می‌توان با زدن کلید جهش نام ناکامل برنامه‌ها، پرونده‌ها و متغیرها را به صورت خودکار کامل کرد.

بش دارای تعداد بسیاری افزونه است که پوستهٔ بورن فاقد آنهاست. بش بر خلاف بورن، می‌تواند بدون اجرا کردن فرایندی‌ بیرونی روی اعداد صحیح محاسبات انجام دهد. بش از شکل دستوری ((…)) و متغیرهایی به صورت ((…))$ برای این کار استفاده می‌کند. شکل دستورهای بش به گونه‌ای است که امکان تغییر مسیر ورودی/خروجی را به شکل ساده‌ای به کاربر می‌دهد. به عنوان نمونه بش می‌تواند خروجی استاندارد و خطای استاندارد را توسّط اپراتور <& در یک زمان تغییر مسیر دهد. همین کار را در پوستهٔ بورن باید توسّط 'command> file 2>&1' انجام داد که نسبت به بش سخت‌تر است. به دلیل این تفاوت‌ها اسکریپت‌های نوشته شده برای بش، به ندرت در پوسته‌های بورن یا کورن قابل اجرا هستند، مگر این که در نوشتن آن‌ها به سازگاری فرمان‌های مورد استفاده توجّه شود. البته در حالت Posix Mode خیلی بیش‌تر از پازیکس تبعیت می‌کند.

افزونه‌های براکت

یکی از ویژگی‌هایی که از پوستهٔ سی به درون بش راه یافته، افزونه‌های براکت است که می‌توان توسّط این امکان ترکیب‌هایی تکرار شونده به وجود آورد. ترتیب اجرای این دستورهای گسترش‌یافته از چپ به راست است. به نمونه‌های زیر توجه کنید:


$ echo a{p,c,d,b}e 
ape ace ade abe

$ echo {a,b,c}{d,e,f}
ad ae af bd be bf cd ce cf

از این ویژگی نمی‌توان در اسکریپت‌هایی که قصد داریم قابل حمل باشند استفاده کرد، به دلیل این که بورن خروجی دیگری برای آن تولید می‌کند:


# A traditional shell does not produce the same output
$ echo a{p,c,d,b}e
a{p,c,d,b}e

وقتی براکت‌ها توسّط نویسه‌های جایگزین استفاده شوند، ابتدا براکت‌ها و سپس نویسه‌های جایگزین اعمال می‌شوند. به عنوان نمونه برای نمایش فهرستی از تصاویر JPEG و PNG موجود در شاخهٔ فعلی، می‌توان از دستور زیر استفاده کرد:


$ ls *.{jpg,jpeg,png}
# expands to *.jpg *.jpeg *.png - after which,
# the wildcards are processed

اسکریپت‌های راه‌اندازی

وقتی بش اجرا می‌شود، دستورهای موجود در اسکریپت‌های مختلفی را اجرا می کند. وقتی بش به عنوان یک پوستهٔ تعاملی اجرا می‌شود، ابتدا اگر پروندهٔ etc/profile موجود باشد دستورهای درون آن را می‌خواند و اجرا می‌کند. سپس به ترتیب به دنبال یکی از پرونده‌های bash_profile. یا bash_login. یا profile. در شاخهٔ خانگی کاربر می‌گردد (/~). هر کدام را که پیدا کرد، دستورهای درون آن را می‌خواند و اجرا می‌کند.

میان‌برهای صفحه‌کلید

میان‌برهای گفته شده در زیر برای حالت پیش‌فرض (ای‌مکس) است، میان‌برهای ویم را می‌توان با دستور set -o vi فعّال کرد.

میانبر کاربرد
جهش تکمیل خودکار از جایی که مکان‌نما وجود دارد
Ctrl+a انتقال مکان‌نما به ابتدای خط (معادل کلید Home)
Ctrl+e انتقال مکان‌نما به انتهای خط (معادل کلید End)
Ctrl+p فراخوانی فرمان قبلی (معادل کلید Up)
Ctrl+n فراخوانی فرمان بعدی (معادل کلید Down)
Ctrl+r جست‌وجوی آخرین فرمانی که دارای نویسه(های) مشخّصی باشد. زدن دوبارهٔ این کلید در هنگام جست‌وجو، به فرمان قبلی‌تر رجوع می‌کند.
Ctrl+o اجرای فرمانی که در جست‌وجو یافته شد.
Ctrl+l پاک کردن محتویات صفحه‌نمایش (معادل فرمان clear).
Ctrl+u پاک کردن محتویاتی از خط که قبل از مکان‌نما وجود دارند و رونوشت آن‌ها درون بریده‌دان.
Ctrl+k پاک کردن محتویاتی از خط که بعد از مکان‌نما وجود دارند و رونوشت آن‌ها درون بریده‌دان.
Ctrl+w پاک کردن واژهٔ پیش از مکان‌نما و رونوشت آن درون بریده‌دان.
Ctrl+y چسباندن محتویات بریده‌دان از جایی که مکان‌نما وجود دارد.
Ctrl+d ارسال یک نشانگر EOF که باعث بسته شدن خط فرمان فعلی می‌شود (معادل دستور exit). (تنها در زمانی این اتّفاق می‌افتد که متنی در خطّ فعلی موجود نباشد)
Ctrl+c ارسال یک سیگنال از نوع SIGINT به فرایند فعلی، که باعث پایان اجرا و بسته شدن آن می‌شود.
Ctrl+z ارسال یک سیگنال از نوع SIGTSTP به فرایند فعلی، که باعث به تعلیق در آمدن آن می‌شود. که برای برگشت دادن آن می‌توان از دستور fg process-name-or-job-id استفاده کرد.
Ctrl+x Ctrl+e ویرایش خط فعلی در ادیتوری که توسط متغیّر محیطی EDITOR$ تعریف شده است.
Alt+f حرکت به جلو به اندازهٔ یک واژه.
Alt+b حرکت به عقب به اندازهٔ یک واژه.
Alt+Del برش واژهٔ واقع در پیش از مکان‌نما
Alt+d برش واژهٔ واقع در پس از مکان‌نما
Alt+u تبدیل تمام حروف کوچک به بزرگ، واقع در پس از مکان‌نما تا انتهای واژهٔ فعلی
Alt+l تبدیل تمام حروف بزرگ به کوچک، واقع در پس از مکان‌نما تا انتهای واژهٔ فعلی
Alt+c تبدیل حرف واقع در زیر مکان‌نما از کوچک به بزرگ و رفتن به انتهای واژهٔ فعلی
Alt+r انصراف تغییرات و برگرداندن محتویات خط فعلی به همان شکلی که در تاریخچهٔ خط فرمان موجود بود.

بسته‌های مکمّل

bash-completion

این بسته، مکمّلی برای بَش است که با تشخیص برنامه‌های موجود و به کار رفته در پوسته و یا سیستم‌عامل، ادامهٔ فرمان‌ها را پیشنهاد می‌دهد. این قابلیت با فشردن کلید جهش بر روی صفحه‌کلید قابل اجرا است. هم‌چنین با دوبار فشردن این کلید، فرمان‌های پیشنهادی به صورت کامل ظاهر خواهند شد.

برای نصب، از فرمان زیر استفاده می‌شود:

$ sudo apt install bash-completion