Bash چیست ؟ ( بش) +آموزش دستورات ۰ تا ۱۰۰ توضیحات/ ۲۰۲۲


Bash چیست ؟
فهرست موضوعات مطالب
Bash چیست بَش (Bash) یک پوسته یونیکس است که توسط برایان فاکس آزادانه برای پروژه گنو نوشته شده است تا جایگزین پوسته Bourne شود. این پوسته برای اولین بار در سال ۱۹۸۹ معرفی شد و به عنوان یک پوسته ورودی در بسیاری از نسخه های لینوکس و MacAvaS، Solaris و Baseless توزیع شده است. نسخه ای از بَش نیز در ویندوز ۱۰ موجود است.
- بازگردانی پیج دیسیبل شده اینستاگرام
- آموزش نصب ویندوز ۱۱ با فلش
- آموزش بازگردانی پیج هک شده اینستاگرام
- راه های جلوگیری از هک اینستاگرام
Bash چیست یک پردازشگر فرمان است که معمولاً در یک پنجره ترمینال اجرا می شود. این پوسته مانند تمام پوسته های یونیکس می تواند دستورات خود را از یک فایل دریافت کند. همچنین کلمات اساسی، قواعد دستور زبان و سایر ویژگی های ضروری را از پوسته Bourne کپی می کند. سایر ویژگی ها، مانند تاریخچه، از پوسته C و ذرت پوسته کپی شده است. بَش با استاندارد PASIX مطابقت دارد.
بَش نام انگلیسی Bourne-again shell است که بازی با کلمات و ابهام است و هم به پوسته Bourne و هم به کلمه born again اشاره دارد که به معنای “دوباره متولد شده” است.
یک حفره امنیتی در پوسته بَش از نسخه ۱.۰۳ (اوت ۱۹۸۹) که به “شوک پوسته” معروف است، در سپتامبر ۲۰۱۴ کشف شد و به سرعت باعث ایجاد یک سری حملات سایبری شد. پس از یافتن سایت باگ، تغییرات بهروزرسانی سریع انجام شد و مشکل برطرف شد.
تاریخ bash چیست ؟
تاریخچه bash چیست برایان فاکس در ۱۰ ژانویه ۱۹۸۸ توسط ریچارد استالمن استخدام شد. استالمن و بنیاد نرمافزار آزاد، پروژه بَش را آنقدر مهم و استراتژیک میدانستند که خودشان بودجه و بودجه پروژه را تأمین میکردند.
فاکس نسخه ۰.۹۹ را به عنوان نسخه آزمایشی در ژوئن ۱۹۸۹ منتشر کرد و تا زمانی که توسط بنیاد نرم افزار آزاد اصلاح شد، نگهدارنده اصلی پوسته بود. او بعداً مسئولیت یکی دیگر از توسعه دهندگان اولیه بَش، Chat Rami را بر عهده گرفت.
از آن زمان، بَش به محبوب ترین پوسته در بین کاربران یونیکس تبدیل شده است، تا حد زیادی محبوب ترین. اکنون به عنوان پوسته پیش فرض در بسیاری از نسخه های لینوکس و سیستم عامل مک در دسترس است.
در Bash سه مفهوم مهم داریم که به صورت زیر می باشد
- Stdin:منظور از آن Standard input یا ورودی استاندارد می باشد که در فایل تشریحی مقدار ۰ به آن تخصیص می یابد که به آن STDIN نیز گفته میشود. هر سیستم یونیکس یا لینوکس مقدار پیش فرض ورودی را از STDIN میخواند.
- stdout: منظور از آن Standard Output خروجی استانداردی است که مقدار ۱ به آن در فایل توصیفی اختصاص داده می شود که STDOUT نیز نامیده می شود. هر سیستم یونیکس یا لینوکس مقدار خروجی استاندارد پیش فرض را به STDOUT می نویسد.
- stderr: منظور از آن Standard Error یا خطای استاندارد که به آن مقدار ۲ در فایل توصیفی اختصاص داده می شود که STDERR نیز نامیده می شود. هر سیستم یونیکس یا لینوکس پیام خطای پیش بارگذاری را در STDERR می نویسد.
بعداً با مفاهیم و مثال های بهتر توضیح خواهیم داد که این سه حالت برای چیست.
نکته ای که هنگام کار با هر قطعه ای باید بدانید تفاوت بین یوزر معمولی و روت است. وقتی خط فرمان شما $ است، به این معنی است که با کاربری غیر از root وارد شده اید، اما زمانی که # باشد، به این معنی است که با یک کاربر root و بالاترین سطح دسترسی وارد شده اید. به شما دستور داده شده است
user@nextadmin:~$
root@nextadmin:~#
برای این که بدانید با چه یوزری لاگین کرده اید می توانید از دستور whoami استفاده کنید.
بش یک فایل دارد به ادرس /etc/profile که تمام تنظیمات اولیه در آن قرار دارد و هر کاربر هم در صفحه home خود یک profile./~ دارد که بعد اجاری تنظیمات اولیه خود بش تنظیمات کاربر اجرا می شود.
همچنین فایلی به اسم bash_profile./~ نیز داریم که آن هم به بش اضافه می شود. یک فایل هم به نام bash_logout./~ داریم که در زمان logout اجرا می شود
آموزش دستورات Bash
دستور echo: یک دستور ساده است که هر ورودی بهش بدید همان را برای شما نمایش می دهد مانند زیر.
$ echo Hello lpic
Hello lpic
نکته اینجاست که اگر از # در متن استفاده کنید که یک کاراکتر خاص است و برای نوشتن توضیحات (comments) استفاده می شود و در دستور شما اجرا نمی شود.
$ echo Hello lpic #just a simple hi
Hello lpic
کارکترها و کلید های خاص در bash
Tab ↹ دو کاربرد اصلی دارد، اگر چند کاراکتر اول دستورمان را بنویسیم و یک تب را بزنیم، دستور را برایمان کامل میکند و اگر دوبار آن را بزنیم، تمام دستوراتی را که ممکن است در ادامه داشته باشیم نمایش میدهد.


↵ Enter: شما هر زمان در خط فرمان ↵ Enter کنید به خط جدید منتقل می شوید.
در بش و مخصوصا برنامه نویسی ما یکسری کاراکتر خاص داریم که بعضی از آن ها را در زیر آورده ایم:
ESCAPE SEQUENCE FUNCTION | |
---|---|
\a | Alert (bell) |
\b | Backspace |
\c | Suppress trailing newline (same function as -n option) |
\f | Form feed (clear the screen on a video display) |
\n | New line |
\r | Carriage return |
\t | Horizontal tab |
هر جا که بخواهیم شخصیت خاصی مثل & یا; برای استفاده از اینکه منظور ما یک عملگر خاص نیست، باید آن را پشت سر بگذاریم.
$ echo but this \
is another \
usage
دقیقا برابر است با:
$ echo but this is another usage
لیست کاراکترهای خاص در Bash
کاراکتر | کاربرد |
# | برای کامنتگذاری استفاده میشود به غیر از مواقعی که بهصورت #\ و یا !# در ابتدای یک اسکریپت استفاده شود. |
\ | در انتهای یک خط استفاده میشود تا ادامهٔ اسکریپت به خط بعد را اعلام کند. |
; | هر دستوری که پس از این علامت قرار گیرد، بهعنوان یک دستور جدید تلقی خواهد شد. یعنی دستور اول را اجرا کن و سپس دستور دوم را اجرا کن |
$ | هر چیزی که پس از این علامت قرار گیرد (مثلاً sname$) بهعنوان یک متغیر شناخته میشود. |
| | یعنی خروجی دستور اول را به ورودی دستور دوم بده |
&& | یعنی دستور اول را اجرا کن اگر بدون خطا اجرا شد دستور دوم را هم اجرا کن |
|| | یعنی اگر دستور اول اجرا نشد برود دستور دوم را اجرا کند نکته ای که دارد این است که اگر دستور اول اجرا شد دیگر دستور دوم را اجرا نمی کند |
$ echo line 1;echo line 2; echo line 3
line 1
line 2
line 3
$ echo line 1&&echo line 2&&echo line 3
line 1
line 2
line 3
$ echo line 1||echo line 2; echo line 3
line 1
line 3
خروج از bash
Ctrl+d یک نشانگر EOF ارسال کنید که خط فرمان فعلی را ببندد (معادل دستور exit). (این فقط زمانی اتفاق می افتد که هیچ متنی در خط فعلی وجود نداشته باشد.) عملاً از این راه خارج می شویم.
- بهتربن شبیه ساز اندروید
- مهندسی نرم افزار چیست
- دواپس چیست
- بهترین بازی های کامپیوتری
- آموزش کنترل از راه دور کامپیوتر با گوشی
دستور exec نیز باعث می شود که ابتدا دستور ما اجرا شود و پس از اجرا، bash را می بندد. برای مثال در زیر دستور ls bash پس از اجرا بسته می شود.
متغیرهای محیطی در بش
تمام متغیر ها با $ قبل از آن باید اجرا شود حتی خود متغیر $
NAME | FUNCTION |
---|---|
USER | یوزر لاگین شده را نمایش می دهد |
UID | ای دی یوزر لاگین شده را نمایش می دهد |
HOME | مسیر خانه کاربر |
PWD | جایی که هستین را نمایش می دهد |
SHELL | نام شل که لاگین کردید |
$ | پروسس ای دی کاربر لاگین شده را نمایش میدهد |
PPID | پروسس ای دی بالا دستی را نمایش می دهد |
? | اخرین دستور با چی خارج شده است، هر چیزی بجز صفر یعنی اشتباه خارج شده است |
$ echo $USER $UID
user 1000
$SHELL $HOME $PWD
/bin/bash /home/user /home/user/lpic
$ (exit 0);echo $?;(exit 4);echo $?
۰
۴
$ echo $$ $PPID
۲۵۵۹ ۲۵۵۸
برای اضافه کردن یک متغیر به بش به صورت زیر عمل می کنیم:
user@funlife:~$ MYMOOD=happy
user@funlife:~$ echo I am $MYMOOD
I am happy
برای این که باقی ابزار ها هم به متغیر ما دسترسی داشته باشند باید از دستور export استفاده کنیم:
user@funlife:~$ export MYMOOD=happy
دستور env تمام متغیرهای موجود رو نمایش می دهد.
دستور unset هم متغیر تعریف شده را پاک می کند.
با دستور set می توانید کمی تغییرات در شل ایجاد کرد، برای مثال اگر –$
بزنیم تنظیمات فعلی رو نمایش می دهد که himBH
است.
$ echo $-
himBH
در حالت پیشفرض اگر یک متغیر الکی بنویسیم بدون جواب نمایش داده می شود:
$ echo $VAR1
ولی اگه set -u استفاده کنیم به ما در صورت نبود یک متغیر پیغام نمایش می دهد:
$ set -u;echo $- himuBH $ echo $VAR1 -bash: VAR1: unbound variable $ VAR1=v1;echo $VAR1 v1 $ unset VAR1;echo $VAR1 -bash: VAR1: unbound variable
میانبرهای صفحهکلید در BASH
Tab ↹: تکمیل خودکار از جایی که مکاننما وجود دارد.
Ctrl+a : انتقال مکاننما به ابتدای خط (معادل کلید Home)
Ctrl+e : انتقال مکاننما به انتهای خط (معادل کلید End)
Ctrl+p: فراخوانی فرمان قبلی (معادل کلید ↑)
Ctrl+n: فراخوانی فرمان بعدی (معادل کلید ↓)
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: انصراف تغییرات و برگرداندن محتویات خط فعلی به همان شکلی که در تاریخچهٔ خط فرمان موجود بود.
1 دیدگاه