#ام_دی_کورس
💻 کرش کورس Bash noscript
توی این دوره از آموزش های MdDaily قرار باهم یه نگاه سریعی به بش اسکریپت بندازیم، محیط Lab امون رو آماده کنیم و مثال های مختلف رو تست کنیم، پس با من همراه باشید :)
ادامه در پست بعدی...
🆔 @MdDaily
💻 کرش کورس Bash noscript
توی این دوره از آموزش های MdDaily قرار باهم یه نگاه سریعی به بش اسکریپت بندازیم، محیط Lab امون رو آماده کنیم و مثال های مختلف رو تست کنیم، پس با من همراه باشید :)
ادامه در پست بعدی...
🆔 @MdDaily
❤4❤🔥1🔥1
Md Daily
#ام_دی_کورس 💻 کرش کورس Bash noscript توی این دوره از آموزش های MdDaily قرار باهم یه نگاه سریعی به بش اسکریپت بندازیم، محیط Lab امون رو آماده کنیم و مثال های مختلف رو تست کنیم، پس با من همراه باشید :) ادامه در پست بعدی... 🆔 @MdDaily
#ام_دی_کورس
آماده سازی محیط کار
خب قبل از هر چیزی ما نیاز به یه جایی داریم که توش بتونیم با Bash کار کنیم .
اگه می خواهید محیطی که توش قرار Bash را یادبگیرید ایزوله و جدا از محیط اصلیتون باشه میتونید از ابزار های زیر استفاده کنید:
☁️ - Google Cloud Shell
دسترسی به سرور لینوکسی ارائه شده توسط گوگل از طریق مرورگر
⌨️ - tutorialspoint
ترمینال لینوکسی با دسترسی های محدود
🐧 - bellard.org
دسترسی به توزیع های مختلفی مثل Fedora و Alpine Linux به صورت رایگان
💻 - onworks.net
ارائه دهنده میزبانی رایگان آنلاین برای توزیع های لینوکسی
🐳 - Docker
استفاده از image های توزیعات لینوکسی
ادامه در پست بعدی...
🆔 @MdDaily
آماده سازی محیط کار
خب قبل از هر چیزی ما نیاز به یه جایی داریم که توش بتونیم با Bash کار کنیم .
اگه می خواهید محیطی که توش قرار Bash را یادبگیرید ایزوله و جدا از محیط اصلیتون باشه میتونید از ابزار های زیر استفاده کنید:
☁️ - Google Cloud Shell
دسترسی به سرور لینوکسی ارائه شده توسط گوگل از طریق مرورگر
⌨️ - tutorialspoint
ترمینال لینوکسی با دسترسی های محدود
🐧 - bellard.org
دسترسی به توزیع های مختلفی مثل Fedora و Alpine Linux به صورت رایگان
💻 - onworks.net
ارائه دهنده میزبانی رایگان آنلاین برای توزیع های لینوکسی
🐳 - Docker
استفاده از image های توزیعات لینوکسی
ادامه در پست بعدی...
🆔 @MdDaily
❤1❤🔥1🔥1
Md Daily
#ام_دی_کورس آماده سازی محیط کار خب قبل از هر چیزی ما نیاز به یه جایی داریم که توش بتونیم با Bash کار کنیم . اگه می خواهید محیطی که توش قرار Bash را یادبگیرید ایزوله و جدا از محیط اصلیتون باشه میتونید از ابزار های زیر استفاده کنید: ☁️ - Google Cloud Shell…
#ام_دی_کورس
خب اینجا من از داکر استفاده میکنم
با استفاده از دستور زیر image اوبونتو رو از داکر هاب دریافت کردم
برای استفاده و شروع مجدد کانتینر از دستور زیر استفاده میشه:
ادامه در پست بعدی...
🆔 @MdDaily
خب اینجا من از داکر استفاده میکنم
با استفاده از دستور زیر image اوبونتو رو از داکر هاب دریافت کردم
docker pull ubuntu:latest
با استفاده از دستور زیر یه کانتینر اوبونتو اجرا کردم و اسمش رو گذاشتم mddaily-bashdocker run --name mddaily-bash -it ubuntu:latestبا اجرای دستور بالا پس از اجرای کانتینر، میتونید باهاش مثله هر سیستم اوبونتو دیگه ای تعامل داشته باشید. وقتی که کارتون تموم شد و میخواستید از کانتینر خارج بشید، میتونید از دستور exit استفاده کنید که کانتینر را متوقف می کنه
برای استفاده و شروع مجدد کانتینر از دستور زیر استفاده میشه:
docker start -i mddaily-bashخب حالا که محیط کارمون آماده شده وقتشه که بریم سراغ کار با Bash :)
ادامه در پست بعدی...
🆔 @MdDaily
🔥2❤1
Md Daily
#ام_دی_کورس خب اینجا من از داکر استفاده میکنم با استفاده از دستور زیر image اوبونتو رو از داکر هاب دریافت کردم docker pull ubuntu:latest با استفاده از دستور زیر یه کانتینر اوبونتو اجرا کردم و اسمش رو گذاشتم mddaily-bash docker run --name mddaily-bash…
#ام_دی_کورس
ایجاد و اجرای اولین Bash Shell Script
قدم اول رو به سمت اسکریپت نویسی شل بردارید :) بریم که یاد بگیریم برای ایجاد یک اسکریپت bash ساده و نحوه اجرای آن چه کاری لازمه 🤔.
اگه باید کاری را بیش از یک بار انجام دهید، اون رو خودکار کنید 🤖!
شما اغلب متوجه میشید که یک کار واحد را در لینوکس بارها و بارها تکرار می کنید 🔁. این کار ممکن است یک بکاپ ساده از یک دایرکتوری باشه 🗃 یا ممکنه پاک کردن فایل های موقت 🗑 یا حتی کلون کردن یک پایگاه داده 💾.
خودکار کردن یک کار یکی از سناریوهای مفید بسیاری هستش که میتونید در اون از قدرت اسکریپت نویسی bash استفاده کنید 🚀.
بریم ببینیم چطوری یه Bash Shell Script ساده ایجاد و اجرا کنیم و چه مواردی رو باید در مورد اسکریپت نویسی شل بدونید 💡.
📁 ابتدا یه دایرکتوری جدید به نام noscripts ایجاد می کنیم که تمام اسکریپت های ما تو این دایرکتوری قرار میگیرن.
برای ایجاد دایرکتوری از دستور
💡 شما همچنین میتونید از یه ویرایشگر متن مبتنی بر ترمینال مثل Vim، Emacs یا Nano استفاده کنید. اگر از لینوکس دسکتاپ استفاده می کنید، میتونید از ویرایشگر متن گرافیکی مثل Gedit یا vscode هم برای افزودن متن به این فایل یا ایجادش استفاده کنید.
💡 پس، اساسا شما از دستور
حال برای اجرایی کردن فایل
ادامه در پست بعدی...
🆔 @MdDaily
ایجاد و اجرای اولین Bash Shell Script
قدم اول رو به سمت اسکریپت نویسی شل بردارید :) بریم که یاد بگیریم برای ایجاد یک اسکریپت bash ساده و نحوه اجرای آن چه کاری لازمه 🤔.
اگه باید کاری را بیش از یک بار انجام دهید، اون رو خودکار کنید 🤖!
شما اغلب متوجه میشید که یک کار واحد را در لینوکس بارها و بارها تکرار می کنید 🔁. این کار ممکن است یک بکاپ ساده از یک دایرکتوری باشه 🗃 یا ممکنه پاک کردن فایل های موقت 🗑 یا حتی کلون کردن یک پایگاه داده 💾.
خودکار کردن یک کار یکی از سناریوهای مفید بسیاری هستش که میتونید در اون از قدرت اسکریپت نویسی bash استفاده کنید 🚀.
بریم ببینیم چطوری یه Bash Shell Script ساده ایجاد و اجرا کنیم و چه مواردی رو باید در مورد اسکریپت نویسی شل بدونید 💡.
📁 ابتدا یه دایرکتوری جدید به نام noscripts ایجاد می کنیم که تمام اسکریپت های ما تو این دایرکتوری قرار میگیرن.
برای ایجاد دایرکتوری از دستور
mkdir استفاده میشه:mkdir نام دایرکتورییعنی:
mkdir noscriptsبا استفاده از دستور
cd وارد دایرکتوری میشیم:cd noscriptsحالا تو این دایرکتوری
noscripts، با استفاده از دستور
cat یک فایل جدید به نام hello.sh ایجاد میکنیم:cat > hello.shبعد از اجرای کامند بالا متن زیر را وارد کنید یا بنویسد:
echo 'Hello, World!'و در نهایت با فشردن کلید های ترکیبی Ctrl+D ذخیرش کنید و از کامند
cat خارج بشید💡 شما همچنین میتونید از یه ویرایشگر متن مبتنی بر ترمینال مثل Vim، Emacs یا Nano استفاده کنید. اگر از لینوکس دسکتاپ استفاده می کنید، میتونید از ویرایشگر متن گرافیکی مثل Gedit یا vscode هم برای افزودن متن به این فایل یا ایجادش استفاده کنید.
💡 پس، اساسا شما از دستور
echo برای چاپ "Hello, World" استفاده می کنید. میتونید از این دستور به طور مستقیم در ترمینال استفاده کنید، اما در این تست، این دستور را از طریق یک اسکریپت شل اجرا خواهید کرد.حال برای اجرایی کردن فایل
hello.sh از دستور chmod به صورت زیر استفاده کنید:chmod u+x hello.shو در نهایت، اولین Bash Shell Script خود را با قرار دادن "
bash" قبل از hello.sh اجرا کنید:bash hello.shروی صفحه نمایش Hello, World! رو میبینید :)
ادامه در پست بعدی...
🆔 @MdDaily
❤🔥2🔥2
Md Daily
#ام_دی_کورس ایجاد و اجرای اولین Bash Shell Script قدم اول رو به سمت اسکریپت نویسی شل بردارید :) بریم که یاد بگیریم برای ایجاد یک اسکریپت bash ساده و نحوه اجرای آن چه کاری لازمه 🤔. اگه باید کاری را بیش از یک بار انجام دهید، اون رو خودکار کنید 🤖! شما اغلب…
#ام_دی_کورس
تبدیل shell noscript به bash noscript
گیج شدید؟ نگران نباشید. من همه چیز رو براتون توضیح خواهم داد :)
پوسته Bash که مخفف Bourne-Again shell هستش، فقط یکی از انواع پوسته(Shell) های موجود در لینوکسه.
پوسته(Shell) یک مفسر خط فرمان(command line interpreter) هست که دستورات را میگیره و اجرا می کنه. اگر تا به حال دستوری را در لینوکس اجرا کرده باشید، از پوسته استفاده کردید. هنگامی که یک ترمینال را در لینوکس باز می کنید، در حال اجرای پوسته پیش فرض سیستمتون هستید.
بش اغلب پوسته پیش فرض در اکثر توزیع های لینوکسیه. به همین دلیله که bash اغلب مترادف با Shell هستش.
اسکریپت های پوسته(shell noscripts) اغلب تقریباً سینتکس یکسانی دارن، اما گاهی اوقات نیز متفاوت هستن. به عنوان مثال، ایندکس آرایه در Zsh از 1 شروع میشه در حالی که در bash از 0 شروع میشه. اسکریپتی که برای پوسته Zsh نوشته شده، در صورتی که آرایه داشته باشه، در bash به درستی کار نمی کنه.
برای جلوگیری از سوپرایزهای ناخوشایند، باید به مفسر بگویید که shell noscript شما برای پوسته bash نوشته شده. چگونه این کار را انجام میدید؟
با استفاده از shebang !
ادامه در پست بعدی...
🆔 @MdDaily
تبدیل shell noscript به bash noscript
گیج شدید؟ نگران نباشید. من همه چیز رو براتون توضیح خواهم داد :)
پوسته Bash که مخفف Bourne-Again shell هستش، فقط یکی از انواع پوسته(Shell) های موجود در لینوکسه.
پوسته(Shell) یک مفسر خط فرمان(command line interpreter) هست که دستورات را میگیره و اجرا می کنه. اگر تا به حال دستوری را در لینوکس اجرا کرده باشید، از پوسته استفاده کردید. هنگامی که یک ترمینال را در لینوکس باز می کنید، در حال اجرای پوسته پیش فرض سیستمتون هستید.
بش اغلب پوسته پیش فرض در اکثر توزیع های لینوکسیه. به همین دلیله که bash اغلب مترادف با Shell هستش.
اسکریپت های پوسته(shell noscripts) اغلب تقریباً سینتکس یکسانی دارن، اما گاهی اوقات نیز متفاوت هستن. به عنوان مثال، ایندکس آرایه در Zsh از 1 شروع میشه در حالی که در bash از 0 شروع میشه. اسکریپتی که برای پوسته Zsh نوشته شده، در صورتی که آرایه داشته باشه، در bash به درستی کار نمی کنه.
برای جلوگیری از سوپرایزهای ناخوشایند، باید به مفسر بگویید که shell noscript شما برای پوسته bash نوشته شده. چگونه این کار را انجام میدید؟
با استفاده از shebang !
ادامه در پست بعدی...
🆔 @MdDaily
❤🔥3🔥1
#ام_دی_کورس
خط SheBang در ابتدای shell noscript
خط
وقتی شما خط
ادامه در پست بعدی...
🆔 @MdDaily
خط SheBang در ابتدای shell noscript
خط
#!/bin/bashبه خط شهبنگ (shebang) معروف است و در برخی از متون به عنوان خط هشبنگ (hashbang) هم بهش اشاره میشه، چون که با دو کاراکتر هش '#' و بنگ '!' شروع میشه
#! /bin/bash
echo 'Hello, World!'
وقتی شما خط
#!/bin/bashرا در بالاترین قسمت اسکریپتتون قرار میدید، سیستم میفهمه که شما می خواهید از bash به عنوان مفسر برای اسکریپت استفاده کنید. بنابراین، شما میتونید اکنون اسکریپت hello.sh را بدون قرار دادن bash در ابتدای اون اجرا کنید.
ادامه در پست بعدی...
🆔 @MdDaily
❤🔥2🔥1
Md Daily
#ام_دی_کورس خط SheBang در ابتدای shell noscript خط #!/bin/bash به خط شهبنگ (shebang) معروف است و در برخی از متون به عنوان خط هشبنگ (hashbang) هم بهش اشاره میشه، چون که با دو کاراکتر هش '#' و بنگ '!' شروع میشه #! /bin/bash echo 'Hello, World!' وقتی…
#ام_دی_کورس
افزودن shell noscript به PATH (به طوری که بشه را از هر دایرکتوری اسکریپت رو اجرا کرد)
از
میتونید از دستور
دستورات لینوکس مانند
اگه می خواهید اسکریپت bash خود را از هر کجا، مانند یک دستور لینوکس معمولی اجرا کنید، مکان اسکریپت shell خود را به متغیر PATH اضافه کنید.
ابتدا با استفاده از دستور PWD، مکان دایرکتوری اسکریپت خود را بدست آورید (با فرض اینکه در همان دایرکتوری هستید):
حالا میتونید اسکریپت bash رو از هر کجا اجرا کنید، مثل یک دستور معمولی در لینوکس.
ادامه در پست بعدی...
🆔 @MdDaily
افزودن shell noscript به PATH (به طوری که بشه را از هر دایرکتوری اسکریپت رو اجرا کرد)
از
./hello.shبرای اجرای اسکریپت استفاده کردم؛ اگر نقطه ابتدایی (
./) را حذف کنیم، با خطای زیر مواجه میشیم:hello.sh: command not foundبش فکر میکنه شما در حال تلاش برای اجرای یک دستور به نام hello.sh هستید. هنگامی که هر دستوری را در ترمینال خود اجرا میکنید، پوسته اون دستور رو در مجموعه ای از دایرکتوریها که در متغیر PATH ذخیره شدن، جستجو میکنه.
میتونید از دستور
echo برای مشاهده محتوای متغیر PATH استفاده کنید:echo $PATHنمونه خروجی دستور:
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/binدو نقطه (:) مسیر هر یک از دایرکتوریهایی رو که پوسته هنگام اجرای هر دستوری اسکن میکنه رو جدا میکنه.
دستورات لینوکس مانند
echo، cat و غیره میتونند از هر جایی اجرا شوند، چونکه فایلهای اجرایی آنها در دایرکتوریهای bin ذخیره میشن. دایرکتوریهای bin در PATH قرار دارن. وقتی که یه دستور را اجرا میکنید، سیستم PATH را برای همه مکانهای احتمالی که باید برای یافتن فایل اجرایی آن دستور جستجو کنه، بررسی میکنه.اگه می خواهید اسکریپت bash خود را از هر کجا، مانند یک دستور لینوکس معمولی اجرا کنید، مکان اسکریپت shell خود را به متغیر PATH اضافه کنید.
ابتدا با استفاده از دستور PWD، مکان دایرکتوری اسکریپت خود را بدست آورید (با فرض اینکه در همان دایرکتوری هستید):
pwdنمونه خروجی دستور:
/home/user/noscripts
از دستور export برای اضافه کردن دایرکتوری اسکریپت های خود به متغیر PATH استفاده کنید:export PATH=$PATH:/home/user/noscripts💡 با این کار پوشه
noscripts به انتهای متغیر PATH اضافه میشه. بنابراین مسیر سفارشی پس از مسیرهای استاندارد جستجو میشه.حالا میتونید اسکریپت bash رو از هر کجا اجرا کنید، مثل یک دستور معمولی در لینوکس.
ادامه در پست بعدی...
🆔 @MdDaily
❤🔥1❤1👍1🔥1
#ام_دی_کورس
خب تا اینجای کار از shell noscript استفاده کردیم و با مفاهیم پایه آشنا شدیم و در نهایت مثل تصویر پست با قرار دادن مسیر دایرکتوری noscripts در PATH تونستیم از هر جایی اسکریپتمون رو اجرا کنیم
خب این بود از بخش اول از آموزش و در ادامه قرار با متغیر ها در Bash Shell Scripting آشنا بشیم و کار کنیم
ادامه در پست بعدی...
🆔 @MdDaily
خب تا اینجای کار از shell noscript استفاده کردیم و با مفاهیم پایه آشنا شدیم و در نهایت مثل تصویر پست با قرار دادن مسیر دایرکتوری noscripts در PATH تونستیم از هر جایی اسکریپتمون رو اجرا کنیم
خب این بود از بخش اول از آموزش و در ادامه قرار با متغیر ها در Bash Shell Scripting آشنا بشیم و کار کنیم
ادامه در پست بعدی...
🆔 @MdDaily
❤🔥1❤1🔥1
Bash_Chapter_1_Practice_Questions_Linux_Handbook.pdf
26 KB
#ام_دی_کورس
میتونید با حل چالش های این PDF برای تمرین چیزی هایی که یادگرفتید استفاده کنید. راه حل هاشونم به همراه نکات تکمیلی در انتهای پی دی اف قرار دارن
🆔 @MdDaily
میتونید با حل چالش های این PDF برای تمرین چیزی هایی که یادگرفتید استفاده کنید. راه حل هاشونم به همراه نکات تکمیلی در انتهای پی دی اف قرار دارن
🆔 @MdDaily
✍1❤🔥1❤1🔥1
#ام_دی_کورس
متغیرها در Bash Shell Script
اگه با بقیه ی زبان های برنامه نویسی کار کرده باشید، با متغیر ها آشنایی دارید.
اگه تا به حال با متغیرها کار نکردید، میتونید اونها رو مخزنی در نظر بگیرید که اطلاعاتی رو که ممکنه تغییر کنن، ذخیره میکنه.
متغیرها همیشه موقع نوشتن Bash Shell Script مفید هستن و بریم که در این آموزش، نحوه استفاده از متغیرها در Bash Shell Script را یاد بگیریم.
💻 استفاده از متغیرها bash shell noscripts
💡در آموزش قبلی این مجموعه، نوشتن یک برنامه hello world در bash را یاد گرفتیم. اون یک اسکریپت ساده Hello World بود. بیایید اون رو به یک Hello World بهتر تبدیل کنیم.
برنامه ی قبلی:
ادامه در پست بعدی...
🆔 @MdDaily
متغیرها در Bash Shell Script
اگه با بقیه ی زبان های برنامه نویسی کار کرده باشید، با متغیر ها آشنایی دارید.
اگه تا به حال با متغیرها کار نکردید، میتونید اونها رو مخزنی در نظر بگیرید که اطلاعاتی رو که ممکنه تغییر کنن، ذخیره میکنه.
متغیرها همیشه موقع نوشتن Bash Shell Script مفید هستن و بریم که در این آموزش، نحوه استفاده از متغیرها در Bash Shell Script را یاد بگیریم.
💻 استفاده از متغیرها bash shell noscripts
💡در آموزش قبلی این مجموعه، نوشتن یک برنامه hello world در bash را یاد گرفتیم. اون یک اسکریپت ساده Hello World بود. بیایید اون رو به یک Hello World بهتر تبدیل کنیم.
برنامه ی قبلی:
#! /bin/bashبیایید این اسکریپت رو با استفاده از متغیرهای shell بهبود بدیم تا کاربران رو با اسمشون صدا کنیم. اسکریپت hello.sh رو ویرایش میکنیم تا از دستور read برای دریافت ورودی از کاربر استفاده بشه:
echo 'Hello, World!'
#! /bin/bashحال اگر اسکریپت hello.sh رو اجرا کنید، از شما اسمتون رو میپرسه و بعد با هر اسمی که بهش ارائه بدید، به شما سلام می کنه:
echo "What's your name, stranger?"
read name
echo "Hello, $name"
linux@ubuntu:~/noscripts$ ./hello.sh
What's your name, stranger?
MdDaily
Hello, MdDaily
💡 در مثال بالا، من MdDaily رو به عنوان اسم وارد کردم و بعدش اسکریپت از من با "Hello, MdDaily" استقبال کرد. این قطعاً بسیار بهتر از یک برنامه عمومی "Hello, World" هست. موافقید؟ ادامه در پست بعدی...
🆔 @MdDaily
❤🔥1❤1🔥1
Md Daily
#ام_دی_کورس متغیرها در Bash Shell Script اگه با بقیه ی زبان های برنامه نویسی کار کرده باشید، با متغیر ها آشنایی دارید. اگه تا به حال با متغیرها کار نکردید، میتونید اونها رو مخزنی در نظر بگیرید که اطلاعاتی رو که ممکنه تغییر کنن، ذخیره میکنه. متغیرها…
#ام_دی_کورس
توضیح مرحله به مرحله اسکریپت shell فوق
حالا بیایید خط به خط اسکریپت را مرور کنیم تا ببینیم دقیقا داره چه اتفاقی میوفته.
ابتدای خط shebang قرار داره تا صراحتاً بیان کنیم که ما می خواهیم از پوسته bash برای اجرای این اسکریپت استفاده کنیم:
حالا اینجا خطی است که همه جادوها در اون اتفاق می افته:
در نهایت، اسکریپت با اسم کاربر بهش سلام میکنه:
"این علامت دلار به عنوان عملگر dereference در اسکریپت bash شناخته میشه."
ادامه در پست بعدی...
🆔 @MdDaily
توضیح مرحله به مرحله اسکریپت shell فوق
حالا بیایید خط به خط اسکریپت را مرور کنیم تا ببینیم دقیقا داره چه اتفاقی میوفته.
ابتدای خط shebang قرار داره تا صراحتاً بیان کنیم که ما می خواهیم از پوسته bash برای اجرای این اسکریپت استفاده کنیم:
#!/bin/bashسپس، از کاربر میخواهیم اسمش رو وارد کنه:
echo "What's your name, stranger?"این فقط یک دستور echo ساده برای چاپ یک خط در ترمیناله و نیاز به توضیح نداره.
حالا اینجا خطی است که همه جادوها در اون اتفاق می افته:
read nameدر اینجا، از دستور read برای انتقال کنترل از اجرای اسکریپت به کاربر استفاده شده، بنابراین کاربر میتونه اسمی رو وارد کنه و بعد هرچی رو که کاربر وارد کرده ، در متغیر 'name' ذخیره کنه.
در نهایت، اسکریپت با اسم کاربر بهش سلام میکنه:
echo “Hello, $name”توجه داشته باشید که در اینجا، باید نام متغیر را پیشوند علامت دلار بنویسید تا مقداری که در نام متغیر ذخیره شده رو دریافت کنه. اگر علامت دلار را حذف کنید، به جاش "Hello name" نمایش داده میشه.
"این علامت دلار به عنوان عملگر dereference در اسکریپت bash شناخته میشه."
ادامه در پست بعدی...
🆔 @MdDaily
❤🔥1❤1🔥1
Md Daily
#ام_دی_کورس توضیح مرحله به مرحله اسکریپت shell فوق حالا بیایید خط به خط اسکریپت را مرور کنیم تا ببینیم دقیقا داره چه اتفاقی میوفته. ابتدای خط shebang قرار داره تا صراحتاً بیان کنیم که ما می خواهیم از پوسته bash برای اجرای این اسکریپت استفاده کنیم: …
#ام_دی_کورس
اعداد صحیح، رشته ها یا کاراکترها؟ چگونه انواع داده های متغیر مختلف را در bash shell ایجاد کنیم؟
بیایید کمی بیشتر با متغیرها کار کنیم.
میتونید از علامت مساوی برای ایجاد و تنظیم مقدار متغیر استفاده کنید. برای مثال، خط زیر یک متغیر به نام age ایجاد میکنه و مقدارش رو برابر 27 قرار میده.
همچنین میتونید یک متغیر ثابت ایجاد کنید، یعنی متغیری که مقدار آن هرگز تغییر نمی کنه! این کار را می توان با قرار دادن دستور readonly در ابتدای نام متغیر انجام داد:
جانشینی فرمان (Command Substitution)
به ذخیره خروجی یک دستور در یک متغیر Command Substitution گفته میشه
دستور date یک نمونه کلاسیک برای نشان دادنه Command Substitution:
همچنین میتونید دستور را درون یک جفت back quotes (') قرار بدید:
الان که نحوه Command Substitution رو یاد گرفتید، منطقیه که یک بار دیگه بریم سراغ اسکریپت Hello World و کاملش کنیم!
آخرین بار، از کاربر خواستیم نامش را وارد کنه تا اسکریپت بهش سلام بده. این بار، شما نمی پرسید، اسکریپت شما از قبل نام کاربر رو میدونه!
برای سلام به هر کسی که اسکریپت را اجرا می کنه، از دستور
ادامه در پست بعدی...
🆔 @MdDaily
اعداد صحیح، رشته ها یا کاراکترها؟ چگونه انواع داده های متغیر مختلف را در bash shell ایجاد کنیم؟
بیایید کمی بیشتر با متغیرها کار کنیم.
میتونید از علامت مساوی برای ایجاد و تنظیم مقدار متغیر استفاده کنید. برای مثال، خط زیر یک متغیر به نام age ایجاد میکنه و مقدارش رو برابر 27 قرار میده.
age=27پس از ایجاد متغیر age، میتونید مقدارش رو به هر اندازه که می خواهید تغییر بدید.
age=3متغیرها میتونند انواع مختلفی از داده ها رو نگه دارن که شامل اعداد صحیح، رشته ها و کاراکترها میشه:
letter=’c’متغیرهای ثابت در bash shell
color=’blue’
year=2020
همچنین میتونید یک متغیر ثابت ایجاد کنید، یعنی متغیری که مقدار آن هرگز تغییر نمی کنه! این کار را می توان با قرار دادن دستور readonly در ابتدای نام متغیر انجام داد:
readonly PI=3.14159کامند بالا یک متغیر ثابت به نام PI ایجاد می کنه و مقدارش رو برابر 3.14159 قرار میده. دیگه نمیشه مقدار متغیر ثابت را تغییر داد، اگر این کارا بکنید خطایی مشابه خطای زیر رو میگیرید:
bash: PI: readonly variableهمانطور که می بینید، فقط میشه مقدار متغیر ثابت را خوند، ولی پس از ایجادش، هیچ وقت نمیشه مقدارش رو تغییر داد.
جانشینی فرمان (Command Substitution)
به ذخیره خروجی یک دستور در یک متغیر Command Substitution گفته میشه
دستور date یک نمونه کلاسیک برای نشان دادنه Command Substitution:
TODAY=$(date)کامند بالا خروجی دستور date را در متغیر TODAY ذخیره می کنه. توجه داشته باشید که چگونه باید دستور date را درون یک جفت پرانتز و یک علامت دلار (در سمت چپ) قرار بدید.
همچنین میتونید دستور را درون یک جفت back quotes (') قرار بدید:
TODAY=`date`روش بالا روش قدیمی انجام Command Substitution هستش، بنابراین من به شدت توصیه می کنم که از آن اجتناب کنید و به رویکرد مدرن پایبند باشید:
variable=$(command)سعی کنید اسکریپت Hello World را به یک اسکریپت هوشمند HelloWorld تبدیل کنید
الان که نحوه Command Substitution رو یاد گرفتید، منطقیه که یک بار دیگه بریم سراغ اسکریپت Hello World و کاملش کنیم!
آخرین بار، از کاربر خواستیم نامش را وارد کنه تا اسکریپت بهش سلام بده. این بار، شما نمی پرسید، اسکریپت شما از قبل نام کاربر رو میدونه!
برای سلام به هر کسی که اسکریپت را اجرا می کنه، از دستور
whoami همراه با Command Substitution استفاده میکنیم:#! /bin/bashهمانطور که می بینید، فقط به دو خط نیاز داشتید! اکنون اسکریپت را اجرا کنید:
echo "Hello, $(whoami)"
$ ./hello.shو بوم :)
Hello, MdDaily!
ادامه در پست بعدی...
🆔 @MdDaily
🔥2❤🔥1❤1
#ام_دی_کورس
ارسال آرگومانها(Passing Arguments) به Bash Scripts
بریم ببینیم که چطوری میشه آرگومانها را به bash shell noscript ارسال کنیم. همچنین قرار با متغیرهای ویژه پوسته بش آشنا بشیم.
آرگومانها میتونند مفید باشند، به ویژه با استفاده از بش!
تا اینجا، یاد گرفتیم که چطوری از متغیرها برای ایجاد اسکریپتهای بش پویا و کلی استفاده کنید تا به دادههای مختلف و ورودیهای متفاوت کاربران واکنش نشون بده. حالا وقتشه که بریم برای ادامه ی آموزش
اسکریپت زیر با نام
ادامه در پست بعدی...
🆔 @MdDaily
ارسال آرگومانها(Passing Arguments) به Bash Scripts
بریم ببینیم که چطوری میشه آرگومانها را به bash shell noscript ارسال کنیم. همچنین قرار با متغیرهای ویژه پوسته بش آشنا بشیم.
آرگومانها میتونند مفید باشند، به ویژه با استفاده از بش!
تا اینجا، یاد گرفتیم که چطوری از متغیرها برای ایجاد اسکریپتهای بش پویا و کلی استفاده کنید تا به دادههای مختلف و ورودیهای متفاوت کاربران واکنش نشون بده. حالا وقتشه که بریم برای ادامه ی آموزش
اسکریپت زیر با نام
count_lines.sh تعداد کل خطوط موجود در هر فایلی که کاربر وارد می کنه را نشون میده:#!/bin/bash
echo -n "Please enter a filename: "
read filename
nlines=$(wc -l < $filename)
echo "There are $nlines lines in $filename"
برای مثال، کاربر میتونه فایل /etc/passwd رو وارد کنه و اسکریپت تعداد خطوط را به عنوان نتیجه خروجی بده (تصویر پست)ادامه در پست بعدی...
🆔 @MdDaily
❤🔥1❤1🔥1
Md Daily
#ام_دی_کورس ارسال آرگومانها(Passing Arguments) به Bash Scripts بریم ببینیم که چطوری میشه آرگومانها را به bash shell noscript ارسال کنیم. همچنین قرار با متغیرهای ویژه پوسته بش آشنا بشیم. آرگومانها میتونند مفید باشند، به ویژه با استفاده از بش! تا اینجا،…
#ام_دی_کورس
این اسکریپت به خوبی کار می کنه؛ با این حال، یک جایگزین بسیار بهتر وجود داره!
به جای اینکه از کاربر برای نام فایل سوال بشه، میتونیم این کار را به سادگی با pass نام فایل به عنوان یک آرگومان خط فرمان در هنگام اجرای اسکریپت مثل زیر انجام بدیم:
بنابراین در اسکریپت count_lines.sh ، میشه متغیر نام فایل را با $1 جایگزین کرد:
در نهایت، می توانید اسکریپت را اجرا کرده و هر فایلی را به عنوان آرگومان پاس بدید:
شما می توانید بیش از یک آرگومان را به اسکریپت بفرستید. به طور کلی، نحو انتقال چندین آرگومان به هر اسکریپت bash به شرح زیر هست:
💡متغیر $0 نام اسکریپت bash شما هستش
حالا میتونیم اسکریپت count_lines.sh رو به طوری ویرایش کنیم که بتونه خطوط بیش از یک فایل را بشماره:
ادامه در پست بعدی...
🆔 @MdDaily
این اسکریپت به خوبی کار می کنه؛ با این حال، یک جایگزین بسیار بهتر وجود داره!
به جای اینکه از کاربر برای نام فایل سوال بشه، میتونیم این کار را به سادگی با pass نام فایل به عنوان یک آرگومان خط فرمان در هنگام اجرای اسکریپت مثل زیر انجام بدیم:
./count_lines.sh /etc/passwd
می توان به اولین آرگومان bash (همچنین به عنوان positional parameter شناخته میشه) در اسکریپت با استفاده از متغیر $1 دسترسی داشت.بنابراین در اسکریپت count_lines.sh ، میشه متغیر نام فایل را با $1 جایگزین کرد:
#!/bin/bash💡 توجه داشته باشید که من همچنین دستور read و اولین دستور echo را حذف کردم زیرا دیگر مورد نیاز نیستند!
nlines=$(wc -l < $1)
echo "There are $nlines lines in $1"
در نهایت، می توانید اسکریپت را اجرا کرده و هر فایلی را به عنوان آرگومان پاس بدید:
./count_lines.sh /etc/groupارسال چندین آرگومان به bash shell noscript
There are 73 lines in /etc/group
شما می توانید بیش از یک آرگومان را به اسکریپت بفرستید. به طور کلی، نحو انتقال چندین آرگومان به هر اسکریپت bash به شرح زیر هست:
noscript.sh arg1 arg2 arg3 …دومین آرگومان با متغیر $2، سومین آرگومان با $3 و ... ارجاع داده میشن.
💡متغیر $0 نام اسکریپت bash شما هستش
حالا میتونیم اسکریپت count_lines.sh رو به طوری ویرایش کنیم که بتونه خطوط بیش از یک فایل را بشماره:
#!/bin/bashدرنهایت با اجرای اسکریپت و pass سه فایل به عنوان آرگومان به اسکریپت:
n1=$(wc -l < $1)
n2=$(wc -l < $2)
n3=$(wc -l < $3)
echo "There are $n1 lines in $1"
echo "There are $n2 lines in $2"
echo "There are $n3 lines in $3"
./count_lines.sh file1 file2 file3میتونیم تعداد خطوط هر کدوم از فایل ها را ببینیم
ادامه در پست بعدی...
🆔 @MdDaily
❤2❤🔥1🔥1
#ام_دی_کورس
استفاده خلاقانه از آرگومان ها در Bash Shell
دستورات زیادی در لینوکس وجود دارد.
برخی از آنها کمی پیچیده هستند، زیرا ممکن است سینتکس طولانی یا مجموعه ای طولانی از آپشن هایی داشته باشند که میتونید ازشون استفاده کنید.
خوشبختانه، میتونید از آرگومان های bash برای تبدیل یک دستور سخت به یک کار بسیار آسان استفاده کنید!
برای نشان دادن این مورد در عمل، به اسکریپت
ببینید که چطوری این کار اکنون بسیار ساده تر از تایپ کل دستور find هستش! این اثباتیه که میتونید از آرگومان ها برای تبدیل هر دستور پیچیده طولانی در لینوکس به یک اسکریپت bash ساده استفاده کنید.
اگر در مورد
ادامه در پست بعدی...
🆔 @MdDaily
استفاده خلاقانه از آرگومان ها در Bash Shell
دستورات زیادی در لینوکس وجود دارد.
برخی از آنها کمی پیچیده هستند، زیرا ممکن است سینتکس طولانی یا مجموعه ای طولانی از آپشن هایی داشته باشند که میتونید ازشون استفاده کنید.
خوشبختانه، میتونید از آرگومان های bash برای تبدیل یک دستور سخت به یک کار بسیار آسان استفاده کنید!
برای نشان دادن این مورد در عمل، به اسکریپت
find.sh زیر نگاه کنید:#!/bin/bash
find / -iname $1 2> /dev/null
این یه اسکریپت بسیار سادس که میتونه بسیار مفید باشه! هر نام فایلی را به عنوان آرگومان به اسکریپت بدید مکان فایل را برای شما پیدا میکنه (تصویر پست)ببینید که چطوری این کار اکنون بسیار ساده تر از تایپ کل دستور find هستش! این اثباتیه که میتونید از آرگومان ها برای تبدیل هر دستور پیچیده طولانی در لینوکس به یک اسکریپت bash ساده استفاده کنید.
اگر در مورد
2> /dev/null کنجکاو هستید، به این معنیه که هر پیام خطایی (مانند عدم دسترسی به فایل) روی صفحه نمایش داده نمیشهادامه در پست بعدی...
🆔 @MdDaily
❤🔥1❤1🔥1
#ام_دی_کورس
نکته مهم: متغیرهای ویژه در Bash shell
بش دارای بسیاری از متغیرهای ویژه است که خیلی مفید هستند
جدولی که توی تصویر پست هست رایج ترین متغیرهای ویژه داخلی bash را نشون میده
ادامه در پست بعدی...
🆔 @MdDaily
نکته مهم: متغیرهای ویژه در Bash shell
بش دارای بسیاری از متغیرهای ویژه است که خیلی مفید هستند
جدولی که توی تصویر پست هست رایج ترین متغیرهای ویژه داخلی bash را نشون میده
ادامه در پست بعدی...
🆔 @MdDaily
❤🔥1❤1⚡1🔥1
#ام_دی_کورس
استفاده از آرایه ها در Bash
آیا بیش از حد متغیر برای مدیریت دارید؟ استفاده از آرایه ها راه حل شماست
تا اینجای کار، شما از تعداد محدودی متغیر در اسکریپت bash خود استفاده کردید مثلا چند متغیر برای نگهداری یک یا دو نام فایل و نام کاربری ایجاد کردید.
اما اگر به بیش از چند متغیر در اسکریپت های bash نیاز داشته باشید چی میشه؟ برای مثال، فرض کنید میخواهید یک اسکریپت bash ایجاد کنید که صد ورودی مختلف را از کاربر میخونه، آیا میخواهید 100 متغیر ایجاد کنید؟
خوشبختانه، نیازی به این کار ندارید، چونکه آرایه ها راه حل بسیار بهتری ارائه میدن.
ایجاد اولین آرایه خود در یک اسکریپت bash
فرض کنید میخواهید یک اسکریپت bash به نام
راه حل سادش اینکه بیایم پنج متغیر تعریف کنیم :
دسترسی به عناصر آرایه در bash
اولین عنصر یک آرایه از شاخص 0 شروع میشه. بنابراین برای دسترسی به عنصر n ام آرایه از شاخص n-1 استفاده کنید.
برای مثال، برای چاپ مقدار عنصر دوم آرایه files، میتونید از دستور echo زیر استفاده کنید:
اسکریپت bash زیر
همچنین میتونید همه عناصر آرایه را یکجا چاپ کنید:
🆔 @MdDaily
استفاده از آرایه ها در Bash
آیا بیش از حد متغیر برای مدیریت دارید؟ استفاده از آرایه ها راه حل شماست
تا اینجای کار، شما از تعداد محدودی متغیر در اسکریپت bash خود استفاده کردید مثلا چند متغیر برای نگهداری یک یا دو نام فایل و نام کاربری ایجاد کردید.
اما اگر به بیش از چند متغیر در اسکریپت های bash نیاز داشته باشید چی میشه؟ برای مثال، فرض کنید میخواهید یک اسکریپت bash ایجاد کنید که صد ورودی مختلف را از کاربر میخونه، آیا میخواهید 100 متغیر ایجاد کنید؟
خوشبختانه، نیازی به این کار ندارید، چونکه آرایه ها راه حل بسیار بهتری ارائه میدن.
ایجاد اولین آرایه خود در یک اسکریپت bash
فرض کنید میخواهید یک اسکریپت bash به نام
timestamp.sh ایجاد کنید که زمانبندی پنج فایل مختلف رو بهروزرسانی میکنه.راه حل سادش اینکه بیایم پنج متغیر تعریف کنیم :
#!/bin/bashحالا به جای استفاده از پنج متغیر برای ذخیره مقدار پنج نام فایل، یک آرایه ایجاد میکنیم که همه نام فایل ها رو نگه داره، در اینجا نحو کلی یک آرایه در bash اومده:
file1="f1.txt"
file2="f2.txt"
file3="f3.txt"
file4="f4.txt"
file5="f5.txt"
touch $file1
touch $file2
touch $file3
touch $file4
touch $file5
array_name=(value1 value2 value3 … )
بنابراین الان میتونید یک آرایه به نام files ایجاد کنید که همه پنج نام فایلی که در اسکریپت timestamp.sh استفاده شده رو به صورت زیر ذخیره کنه:files=("f1.txt" "f2.txt" "f3.txt" "f4.txt" "f5.txt")
همانطور که می بینید، این بسیار تمیزتر و کارآمدتره چونکه پنج متغیر را فقط با یک آرایه جایگزین کردیم!دسترسی به عناصر آرایه در bash
اولین عنصر یک آرایه از شاخص 0 شروع میشه. بنابراین برای دسترسی به عنصر n ام آرایه از شاخص n-1 استفاده کنید.
برای مثال، برای چاپ مقدار عنصر دوم آرایه files، میتونید از دستور echo زیر استفاده کنید:
echo ${files[1]}
و برای چاپ مقدار عنصر سوم آرایه files، میتونید از دستور زیر استفاده کنید:echo ${files[2]}
و به همین ترتیب.اسکریپت bash زیر
reverse.sh همه پنج مقدار موجود در آرایه files رو به ترتیب معکوس، از آخرین عنصر آرایه شروع می کنه:#!/bin/bash💡 میدونم که ممکنه تعجب کنید که چرا این همه دستور echo و چرا از حلقه در اینجا استفاده نمی کنم. این به این دلیل است که قصد دارم مفاهیم حلقه bash را بعداً در این مجموعه معرفی کنم.
files=("f1.txt" "f2.txt" "f3.txt" "f4.txt" "f5.txt")
echo ${files[4]}
echo ${files[3]}
echo ${files[2]}
echo ${files[1]}
echo ${files[0]}
همچنین میتونید همه عناصر آرایه را یکجا چاپ کنید:
echo ${files[*]}
خروجی:f1.txt f2.txt f3.txt f4.txt f5.txtمیتونید تعداد کل عناصر آرایه files رو چاپ کنید، یعنی اندازه آرایه:
echo ${#files[@]}
خروجی:5و برای آپدیت کردن مقدار عنصر یک آرایه میتونید مثل مثال زیر عمل کنید:
files[0]="a.txt"ادامه در پست بعدی...
🆔 @MdDaily
❤🔥1❤1👍1🔥1
Md Daily
#ام_دی_کورس استفاده از آرایه ها در Bash آیا بیش از حد متغیر برای مدیریت دارید؟ استفاده از آرایه ها راه حل شماست تا اینجای کار، شما از تعداد محدودی متغیر در اسکریپت bash خود استفاده کردید مثلا چند متغیر برای نگهداری یک یا دو نام فایل و نام کاربری ایجاد…
#ام_دی_کورس
اضافه کردن عناصر آرایه در bash
بیایید یک آرایه ایجاد کنیم که حاوی نام توزیع های لینوکسه:
به عنوان مثال، برای اضافه کردن Kali به آرایه distros:
حذف عناصر آرایه در bash
ابتدا بیایید یک آرایه num ایجاد کنیم که اعداد از 1 تا 5 را ذخیره کنه:
حتی میتونید کل آرایه num را به همین شکل حذف کنید:
در bash، برخلاف بسیاری از زبان های برنامه نویسی دیگر، میتونید یک آرایه ایجاد کنید که حاوی انواع داده های مختلف باشه. به اسکریپت
"John" ----> String Data Type
122 ---> Integer Data Type
"sudo,developers" ---> String Data Type
"bash" ---> String Data Type
بنابراین، ذخیره انواع داده های مختلف در یک آرایه اشکالی نداره. آیا این عالی نیست؟
ادامه در پست بعدی...
🆔 @MdDaily
اضافه کردن عناصر آرایه در bash
بیایید یک آرایه ایجاد کنیم که حاوی نام توزیع های لینوکسه:
distros=("Ubuntu" "Red Hat" "Fedora")
آرایه distros در حال حاضر حاوی سه عنصره. از عملگر += برای اضافه کردن (افزودن) یک عنصر به انتهای آرایه استفاده میشه.به عنوان مثال، برای اضافه کردن Kali به آرایه distros:
distros+=("Kali")
حالا آرایه distros دقیقاً حاوی چهار عنصره، با Kali به عنوان آخرین عنصر آرایه.حذف عناصر آرایه در bash
ابتدا بیایید یک آرایه num ایجاد کنیم که اعداد از 1 تا 5 را ذخیره کنه:
num=(1 2 3 4 5)میتونید همه مقادیر موجود در آرایه num رو چاپ کنید:
echo ${num[*]}
1 2 3 4 5
میتونیم عنصر سوم آرایه num را با استفاده از کلمه کلیدی unset حذف کنیم:unset num[2]
حالا اگه همه مقادیر آرایه num را چاپ کنیم:echo ${num[*]}
1 2 4 5
همانطور که می بینید، عنصر سوم آرایه num حذف شده.حتی میتونید کل آرایه num را به همین شکل حذف کنید:
unset numایجاد آرایه های ترکیبی با انواع داده های مختلف
در bash، برخلاف بسیاری از زبان های برنامه نویسی دیگر، میتونید یک آرایه ایجاد کنید که حاوی انواع داده های مختلف باشه. به اسکریپت
user.sh زیر نگاه کنید:#!/bin/bashتوجه داشته باشید که آرایه user حاوی چهار عنصره:
user=("john" 122 "sudo,developers" "bash")
echo "User Name: ${user[0]}"
echo "User ID: ${user[1]}"
echo "User Groups: ${user[2]}"
echo "User Shell: ${user[3]}"
"John" ----> String Data Type
122 ---> Integer Data Type
"sudo,developers" ---> String Data Type
"bash" ---> String Data Type
بنابراین، ذخیره انواع داده های مختلف در یک آرایه اشکالی نداره. آیا این عالی نیست؟
ادامه در پست بعدی...
🆔 @MdDaily
❤1🔥1
Md Daily
#ام_دی_کورس اضافه کردن عناصر آرایه در bash بیایید یک آرایه ایجاد کنیم که حاوی نام توزیع های لینوکسه: distros=("Ubuntu" "Red Hat" "Fedora") آرایه distros در حال حاضر حاوی سه عنصره. از عملگر += برای اضافه کردن (افزودن) یک عنصر به انتهای آرایه استفاده…
#ام_دی_کورس
استفاده از عملگرهای ریاضی در اسکریپتنویسی Bash
بریم ببینیم که چطوری عملیات حسابی مانند جمع، تفریق، ضرب و تقسیم را در اسکریپت های Bash انجام بدیم.
بیایید کمی ریاضی Bash انجام بدیم!
موقع نوشتن اسکریپت های Bash، متوجه میشید که نیاز دارید نتیجه یک محاسبه حسابی رو برای تعیین فضای دیسک باقی مانده، اندازه فایل ها، تاریخ انقضای رمز عبور، تعداد هاست ها، پهنای باند شبکه و غیره رو بدونید.
عملگرهای حسابی در bash:
- جمع (+)
- تفریق (-)
- ضرب (*)
- تقسیم (/)
- باقی مانده (%)
- توان (**)
انجام جمع و تفریق در اسکریپت های bash
بیایید یک اسکریپت bash به نام
شما باید تا اینجای کار با آرگومان ها در اسکریپت های bash آشنا شده باشید. اینجا قرار از دستورات cut و du استفاده کنیم .
دستور du اندازه فایل را به شما میده. خروجیش شامل اندازه و نام فایل هم هست. این جایی است که دستور cut برای استخراج ستون اول (یعنی اندازه فایل) از خروجی استفاده میشه. خروجی دستور du با استفاده از pipe redirection به دستور cut منتقل میشه.
اسکریپت:
بیایید یک اسکریپت bash به نام
همچنین میتونید از عملگر تقسیم (/) برای تقسیم دو عدد استفاده کنید. برای مثال، مقدار متغیر div در عبارت زیر برابر پنج میشه:
ادامه در پست بعدی...
🆔 @MdDaily
استفاده از عملگرهای ریاضی در اسکریپتنویسی Bash
بریم ببینیم که چطوری عملیات حسابی مانند جمع، تفریق، ضرب و تقسیم را در اسکریپت های Bash انجام بدیم.
بیایید کمی ریاضی Bash انجام بدیم!
موقع نوشتن اسکریپت های Bash، متوجه میشید که نیاز دارید نتیجه یک محاسبه حسابی رو برای تعیین فضای دیسک باقی مانده، اندازه فایل ها، تاریخ انقضای رمز عبور، تعداد هاست ها، پهنای باند شبکه و غیره رو بدونید.
عملگرهای حسابی در bash:
- جمع (+)
- تفریق (-)
- ضرب (*)
- تقسیم (/)
- باقی مانده (%)
- توان (**)
انجام جمع و تفریق در اسکریپت های bash
بیایید یک اسکریپت bash به نام
addition.sh ایجاد کنیم که به سادگی دو اندازه فایل (بر حسب بایت) را جمع میکنه و خروجی را نشون میده.شما باید تا اینجای کار با آرگومان ها در اسکریپت های bash آشنا شده باشید. اینجا قرار از دستورات cut و du استفاده کنیم .
دستور du اندازه فایل را به شما میده. خروجیش شامل اندازه و نام فایل هم هست. این جایی است که دستور cut برای استخراج ستون اول (یعنی اندازه فایل) از خروجی استفاده میشه. خروجی دستور du با استفاده از pipe redirection به دستور cut منتقل میشه.
اسکریپت:
#!/bin/bashتوجه داشته باشید که شما دو نام فایل را به عنوان آرگومان به اسکریپت منتقل خواهید کرد. برای مثال، در اینجا من اسکریپت را اجرا کردم و دو فایل /etc/passwd و /etc/group را به عنوان آرگومان پاس دادم:
fs1=$(du -b $1 | cut -f1)
fs2=$(du -b $2 | cut -f1)
echo "File size of $1 is: $fs1"
echo "File size of $2 is: $fs2"
total=$(($fs1 + $fs2))
echo "Total size is: $total"
linux@ubuntu:~/noscripts$ ./addition.sh /etc/passwd /etc/groupمهمترین خط در اسکریپت
File size of /etc/passwd is: 2795
File size of /etc/group is: 1065
Total size is: 3860
addition.sh :total=$(($fs1 + $fs2))که در این خط از عملگر + برای جمع دو عدد $fs1 و $fs2 استفاده شده. توجه داشته باشید که برای ارزیابی هر عبارت حسابی باید آن را در بین دو پرانتز دوتایی قرار بدید:
$((arithmetic-expression))همچنین میتونید از عملگر (-) برای تفریق استفاده کنید. برای مثال، مقدار متغیر sub در عبارت زیر هفت خواهد بود:
sub=$((10-3))انجام ضرب و تقسیم در اسکریپت های bash
بیایید یک اسکریپت bash به نام
giga2mega.sh ایجاد کنیم که گیگابایت (GB) را به مگابایت (MB) تبدیل میکنه:#!/bin/bashاکنون بیایید اسکریپت را اجرا کنیم تا بفهمیم در چهار گیگابایت چند مگابایت وجود داره:
GIGA=$1
MEGA=$(($GIGA * 1024))
echo "$GIGA GB is equal to $MEGA MB"
linux@ubuntu:~/noscripts$ ./giga2mega.sh 4در اینجا من از عملگر ضرب (*) برای ضرب تعداد گیگابایت در 1024 استفاده کردم تا مگابایت معادلش رو بدست بیارم:
4 GB is equal to 4096 MB
MEGA=$(($GIGA * 1024))اضافه کردن عملکرد بیشتر برای تبدیل گیگابایت به کیلوبایت هم آسونه:
KILO=$(($GIGA * 1024 * 1024))✏️ تبدیل گیگابایت به بایت را به عنوان تمرین انجام بدید!
همچنین میتونید از عملگر تقسیم (/) برای تقسیم دو عدد استفاده کنید. برای مثال، مقدار متغیر div در عبارت زیر برابر پنج میشه:
div=$((20 / 4))توجه داشته باشید که این یک تقسیم صحیح است و کسرها حذف میشن. برای مثال، اگر 5 را بر 2 تقسیم کنید، عدد 2 به دست میآید که البته اشتباهه:
linux@ubuntu:~/noscripts$ div=$((5 / 2))برای دریافت خروجی اعشاری، میتونید از دستور bc استفاده کنید. برای مثال، برای تقسیم 5 بر 2 با دستور bc:
linux@ubuntu:~/noscripts$ echo $div
2
echo "5/2" | bc -l💡 توجه داشته باشید که میتونید عملگرهای دیگه رو هم با دستور bc هنگام کار با اعداد اعشاری استفاده کنید
2.50000000000000000000
ادامه در پست بعدی...
🆔 @MdDaily
❤1👍1🔥1
Md Daily
#ام_دی_کورس استفاده از عملگرهای ریاضی در اسکریپتنویسی Bash بریم ببینیم که چطوری عملیات حسابی مانند جمع، تفریق، ضرب و تقسیم را در اسکریپت های Bash انجام بدیم. بیایید کمی ریاضی Bash انجام بدیم! موقع نوشتن اسکریپت های Bash، متوجه میشید که نیاز دارید نتیجه…
#ام_دی_کورس
استفاده از توان و باقیمانده (modulo)
بیایید یه ماشین حساب توان بسازیم! قرار یه اسکریپت به نام
بیایید چند بار اسکریپت رو اجرا کنیم تا مطمئن بشیم که پاسخ های صحیح رو میده:
تمرین: یه اسکریپت bash مبدل درجه بسازید
بیایید این مبحث از آموزش رو با ایجاد یک اسکریپت به نام
#!/bin/bash
C=$1
F=$(echo "scale=2; $C * (9/5) + 32" | bc -l)
echo " $C degrees Celsius is equal to $F degrees Fahrenheit."
از دستور bc استفاده کردم چون که با اعداد اعشاری سروکار داریم و همچنین از "scale=2" برای نمایش خروجی در دو رقم اعشاری استفاده کردم.
ادامه در پست بعدی...
🆔 @MdDaily
استفاده از توان و باقیمانده (modulo)
بیایید یه ماشین حساب توان بسازیم! قرار یه اسکریپت به نام
power.sh ایجاد کنیم که دو عدد a و b را بگیره (به عنوان آرگومان) و نتیجه a به توان b را نمایش بده:#!/bin/bash💡 توجه داشته باشید که از عملگر توان (**) برای محاسبه نتیجه a به توان b استفاده شده.
a=$1
b=$2
result=$((a**b))
echo "$1^$2=$result"
بیایید چند بار اسکریپت رو اجرا کنیم تا مطمئن بشیم که پاسخ های صحیح رو میده:
linux@ubuntu:~/noscripts$ ./power.sh 2 3همچنین میتونید از عملگر modulo (%) برای محاسبه باقیمانده های صحیح استفاده کنید. به عنوان مثال، مقدار متغیر rem در عبارت زیر برابر با 2 خواهد بود:
2^3=8
linux@ubuntu:~/noscripts$ ./power.sh 3 2
3^2=9
linux@ubuntu:~/noscripts$ ./power.sh 5 2
5^2=25
linux@ubuntu:~/noscripts$ ./power.sh 4 2
4^2=16
rem=$((17%5))✏️ خب وقت وقته تمرینه :)
تمرین: یه اسکریپت bash مبدل درجه بسازید
بیایید این مبحث از آموزش رو با ایجاد یک اسکریپت به نام
c2f.sh که درجه سانتیگراد را به درجه فارنهایت با استفاده از معادله زیر تبدیل می کنه، به پایان برسانیم:F = C x (9/5) + 32راه حل (هر راه حلی که به جواب نهایی برسه درسته من اینجا راه حل خودم رو میگم):
C=$1
F=$(echo "scale=2;
echo "
از دستور bc استفاده کردم چون که با اعداد اعشاری سروکار داریم و همچنین از "scale=2" برای نمایش خروجی در دو رقم اعشاری استفاده کردم.
🆔 @MdDaily
🔥2❤1
Md Daily
#ام_دی_کورس استفاده از توان و باقیمانده (modulo) بیایید یه ماشین حساب توان بسازیم! قرار یه اسکریپت به نام power.sh ایجاد کنیم که دو عدد a و b را بگیره (به عنوان آرگومان) و نتیجه a به توان b را نمایش بده: #!/bin/bash a=$1 b=$2 result=$((a**b)) echo "$1^$2=$result"…
#ام_دی_کورس
عملیات رشته ای (String Operations) در Bash
خب حالا وقشته که بریم سراغ string ها و ببینیم که چطوری میتونیم توی Bash باهاشون کار و دستکاریشون کنیم
دریافت طول String
با به دست آوردن طول یک رشته در بش شروع میکنیم.
یک رشته چیزی نیست جز دنباله ای (آرایه) از کاراکترها. حالا یک رشته بنام distro ایجاد میکنیم و مقدارش رو روی “Ubuntu” مقداردهی اولیه میکنیم:
الحاق دو String
میتونید یک رشته رو به انتهای رشته دیگه ای اضافه کنید که به این فرآیند الحاق(Concatenating) رشته میگن .
برای نشون دادن این مورد، ابتدا دو رشته str1 و str2 را به صورت زیر ایجاد می کنیم:
پیداکردن زیررشته ها(Finding substrings)
میتونید موقعیت (اندیس) یک حرف یا کلمه خاص را در یک رشته پیدا کنید. برای نشون دادن این مورد، ابتدا یک رشته به نام str به صورت زیر ایجاد می کنیم:
استخراج زیررشتهها (Extracting substrings)
شما همچنین میتونید زیررشتههایی را از یک رشته استخراج کنید؛ به عبارت دیگه، شما میتونید یک حرف، کلمه یا چند کلمه را از یک رشته استخراج کنید.
ابتدا یک رشته به نام foss رو ایجاد می کنیم:
بنابراین، برای استخراج زیر رشته “Fedora”، از 0 به عنوان موقعیت شروع استفاده خواهید کرد و 6 کاراکتر را از موقعیت شروع استخراج خواهید کرد:
به عنوان مثال، برای استخراج زیر رشته “free operating system” از رشته foss؛ ما فقط باید موقعیت شروع 12 را مشخص کنیم:
🆔 @MdDaily
عملیات رشته ای (String Operations) در Bash
خب حالا وقشته که بریم سراغ string ها و ببینیم که چطوری میتونیم توی Bash باهاشون کار و دستکاریشون کنیم
دریافت طول String
با به دست آوردن طول یک رشته در بش شروع میکنیم.
یک رشته چیزی نیست جز دنباله ای (آرایه) از کاراکترها. حالا یک رشته بنام distro ایجاد میکنیم و مقدارش رو روی “Ubuntu” مقداردهی اولیه میکنیم:
distro="Ubuntu"و حالا برای بدست آوردن طول رشته distro، فقط باید # رو قبل از نام متغیر اضافه کنیم. برای نمایش خرووجی هم از دستور echo استفاده میکنیم:
linux@ubuntu:~/noscripts$ echo ${#distro}
6
توجه داشته باشید که دستور echo برای چاپ مقدار است. {#string} چیزیه که طول رشته را میده.الحاق دو String
میتونید یک رشته رو به انتهای رشته دیگه ای اضافه کنید که به این فرآیند الحاق(Concatenating) رشته میگن .
برای نشون دادن این مورد، ابتدا دو رشته str1 و str2 را به صورت زیر ایجاد می کنیم:
str1="md"
str2="Daily"
حالا میتونید هر دو رشته را پیوند بدید و نتیجه را تو یه رشته جدید به نام str3 ذخیره کنید:str3=$str1$str2آسون بود نه ؟
پیداکردن زیررشته ها(Finding substrings)
میتونید موقعیت (اندیس) یک حرف یا کلمه خاص را در یک رشته پیدا کنید. برای نشون دادن این مورد، ابتدا یک رشته به نام str به صورت زیر ایجاد می کنیم:
str="Bash is Cool"حالا میتونید موقعیت خاص (اندیسی) زیر رشته cool را بدست بیارید. برای انجام این کار، از دستور
expr استفاده کنید:linux@ubuntu:
~/noscripts$ word="Cool"
linux@ubuntu:
~/noscripts$ expr index "$str" "$word"
9
نتیجه 9 اندیسی است که کلمه "Cool" در رشته str شروع می شود.استخراج زیررشتهها (Extracting substrings)
شما همچنین میتونید زیررشتههایی را از یک رشته استخراج کنید؛ به عبارت دیگه، شما میتونید یک حرف، کلمه یا چند کلمه را از یک رشته استخراج کنید.
ابتدا یک رشته به نام foss رو ایجاد می کنیم:
foss="Fedora is a free operating system"حال فرض کنید می خواهید اولین کلمه "Fedora" را در رشته foss استخراج کنید. شما نیاز دارید موقعیت (اندیس) شروع زیررشته مورد نظر و تعداد کاراکترهایی که نیاز دارید استخراج کنید را مشخص کنید.
بنابراین، برای استخراج زیر رشته “Fedora”، از 0 به عنوان موقعیت شروع استفاده خواهید کرد و 6 کاراکتر را از موقعیت شروع استخراج خواهید کرد:
linux@ubuntu:~/noscripts$ echo ${foss:0:6}
Fedora
توجه داشته باشید که اولین موقعیت در یک رشته صفره درست مثله آرایه ها در bash. شما همچنین ممکنه فقط موقعیت شروع یک زیر رشته را مشخص کنید و تعداد کاراکترها را حذف کنید. در این حالت، همه چیز از موقعیت شروع تا انتهای رشته استخراج میشه.به عنوان مثال، برای استخراج زیر رشته “free operating system” از رشته foss؛ ما فقط باید موقعیت شروع 12 را مشخص کنیم:
linux@ubuntu:~/noscripts$ echo ${foss:12}
free operating system
ادامه در پست بعدی...🆔 @MdDaily
❤1🔥1