Forwarded from PhiloLearn | فیلولرن
Shell و Bash دو مفهوم کلیدی در دنیای سیستمهای عامل یونیکس و لینوکس هستن که نقش مهمی در تعامل کاربر با سیستم ایفا میکنن.
Shell در واقع یک برنامهی واسط هستش که بین کاربر و هستهی سیستم عامل قرار میگیره. این برنامه دستورات کاربر رو دریافت میکنه، اونها رو تفسیر میکنه و به زبانی که هستهی سیستم عامل بفهمه ترجمه میکنه. Shellهای مختلفی وجود دارن که هر کدوم ویژگیهای خاص خودشون رو دارن، مثل sh (Bourne Shell)، csh (C Shell)، ksh (Korn Shell) و البته Bash.
Bash که مخفف "Bourne Again Shell" هستش، یکی از محبوبترین و قدرتمندترین Shellهایی هستش که امروزه استفاده میشه. این Shell توسط Brian Fox در سال ۱۹۸۹ به عنوان جایگزینی برای Bourne Shell (sh) ساخته شد و از اون زمان به طور مداوم در حال توسعه و بهبود بوده. Bash به عنوان Shell پیشفرض در اکثر توزیعهای لینوکس و macOS استفاده میشه.
یکی از ویژگیهای مهم Bash، قابلیت اسکریپتنویسی اون هستش. با استفاده از Bash scripting، میشه مجموعهای از دستورات رو در یک فایل ذخیره کرد و اونها رو به صورت خودکار اجرا کرد. این قابلیت برای اتوماسیون تسکهای تکراری و مدیریت سیستم بسیار مفید هستش.
Bash از ویژگیهای پیشرفتهای مثل تکمیل خودکار دستورات (command completion)، تاریخچهی دستورات (command history)، و ویرایش خط فرمان (command-line editing) پشتیبانی میکنه. این ویژگیها کار با خط فرمان رو بسیار راحتتر و کارآمدتر میکنن.
یکی از قابلیتهای جالب Bash، استفاده از عبارات منظم (regular expressions) هستش. این قابلیت به کاربران اجازه میده تا الگوهای پیچیدهی متنی رو جستجو و دستکاری کنن. مثلاً، با استفاده از دستور grep همراه با عبارات منظم، میشه به راحتی در فایلها دنبال الگوهای خاصی گشت.
Bash از مفهومی به نام "pipe" پشتیبانی میکنه که امکان ترکیب چندین دستور رو فراهم میکنه. با استفاده از کاراکتر |، خروجی یک دستور به عنوان ورودی دستور بعدی استفاده میشه. این قابلیت باعث میشه بشه عملیات پیچیده رو با ترکیب دستورات ساده انجام داد.
یکی از ویژگیهای قدرتمند Bash، قابلیت تعریف و استفاده از متغیرهای محیطی (environment variables) هستش. این متغیرها میتونن برای ذخیرهی اطلاعات مهم سیستم یا کانفیگهای برنامهها استفاده بشن. مثلاً، متغیر PATH مسیرهایی رو مشخص میکنه که سیستم باید برای پیدا کردن برنامههای اجرایی جستجو کنه.
Bash از توابع (functions) هم پشتیبانی میکنه که به کاربران اجازه میده بخشهای تکراری کد رو در قالب توابع قابل فراخوانی سازماندهی کنن. این قابلیت باعث میشه کدها خواناتر و قابل نگهداریتر بشن.
یکی از نکات جالب در مورد Bash اینه که میتونه از عملگرهای شرطی مثل && (و) و || (یا) استفاده کنه. این عملگرها امکان اجرای شرطی دستورات رو فراهم میکنن. مثلاً، با استفاده از command1 && command2، دستور دوم فقط در صورتی اجرا میشه که دستور اول با موفقیت اجرا شده باشه.
Bash همچنین از حلقههای تکرار مثل for، while و until پشتیبانی میکنه که برای انجام عملیات تکراری بسیار مفید هستن. این حلقهها میتونن برای پردازش فایلها، اجرای دستورات برای مجموعهای از آیتمها، یا انجام عملیات در فواصل زمانی مشخص استفاده بشن.
یکی از قابلیتهای پیشرفتهی Bash، امکان ایجاد و استفاده از آرایهها هستش. آرایهها در Bash میتونن برای ذخیره و دستکاری مجموعهای از مقادیر استفاده بشن، که در اسکریپتهای پیچیدهتر بسیار کاربردی هستن.
در نهایت، باید اشاره کرد که Bash یک زبان اسکریپتنویسی کامل هستش که میتونه برای نوشتن برنامههای پیچیده استفاده بشه. با این حال، برای تسکهای پردازشی سنگین یا برنامههای با منطق پیچیده، معمولاً استفاده از زبانهای برنامهنویسی سطح بالاتر مثل Python یا Perl توصیه میشه.
#linux #shell #bash #لینوکس #بش #شل
————————————————————————
میتونید برای حمایت از فعالیت این کانال، انتقادات و پیشنهادات خودتون رو کامنت کنید.
————————————————————————
💙💙 @PhiloLearn 💙💙
Shell در واقع یک برنامهی واسط هستش که بین کاربر و هستهی سیستم عامل قرار میگیره. این برنامه دستورات کاربر رو دریافت میکنه، اونها رو تفسیر میکنه و به زبانی که هستهی سیستم عامل بفهمه ترجمه میکنه. Shellهای مختلفی وجود دارن که هر کدوم ویژگیهای خاص خودشون رو دارن، مثل sh (Bourne Shell)، csh (C Shell)، ksh (Korn Shell) و البته Bash.
Bash که مخفف "Bourne Again Shell" هستش، یکی از محبوبترین و قدرتمندترین Shellهایی هستش که امروزه استفاده میشه. این Shell توسط Brian Fox در سال ۱۹۸۹ به عنوان جایگزینی برای Bourne Shell (sh) ساخته شد و از اون زمان به طور مداوم در حال توسعه و بهبود بوده. Bash به عنوان Shell پیشفرض در اکثر توزیعهای لینوکس و macOS استفاده میشه.
یکی از ویژگیهای مهم Bash، قابلیت اسکریپتنویسی اون هستش. با استفاده از Bash scripting، میشه مجموعهای از دستورات رو در یک فایل ذخیره کرد و اونها رو به صورت خودکار اجرا کرد. این قابلیت برای اتوماسیون تسکهای تکراری و مدیریت سیستم بسیار مفید هستش.
Bash از ویژگیهای پیشرفتهای مثل تکمیل خودکار دستورات (command completion)، تاریخچهی دستورات (command history)، و ویرایش خط فرمان (command-line editing) پشتیبانی میکنه. این ویژگیها کار با خط فرمان رو بسیار راحتتر و کارآمدتر میکنن.
یکی از قابلیتهای جالب Bash، استفاده از عبارات منظم (regular expressions) هستش. این قابلیت به کاربران اجازه میده تا الگوهای پیچیدهی متنی رو جستجو و دستکاری کنن. مثلاً، با استفاده از دستور grep همراه با عبارات منظم، میشه به راحتی در فایلها دنبال الگوهای خاصی گشت.
Bash از مفهومی به نام "pipe" پشتیبانی میکنه که امکان ترکیب چندین دستور رو فراهم میکنه. با استفاده از کاراکتر |، خروجی یک دستور به عنوان ورودی دستور بعدی استفاده میشه. این قابلیت باعث میشه بشه عملیات پیچیده رو با ترکیب دستورات ساده انجام داد.
یکی از ویژگیهای قدرتمند Bash، قابلیت تعریف و استفاده از متغیرهای محیطی (environment variables) هستش. این متغیرها میتونن برای ذخیرهی اطلاعات مهم سیستم یا کانفیگهای برنامهها استفاده بشن. مثلاً، متغیر PATH مسیرهایی رو مشخص میکنه که سیستم باید برای پیدا کردن برنامههای اجرایی جستجو کنه.
Bash از توابع (functions) هم پشتیبانی میکنه که به کاربران اجازه میده بخشهای تکراری کد رو در قالب توابع قابل فراخوانی سازماندهی کنن. این قابلیت باعث میشه کدها خواناتر و قابل نگهداریتر بشن.
یکی از نکات جالب در مورد Bash اینه که میتونه از عملگرهای شرطی مثل && (و) و || (یا) استفاده کنه. این عملگرها امکان اجرای شرطی دستورات رو فراهم میکنن. مثلاً، با استفاده از command1 && command2، دستور دوم فقط در صورتی اجرا میشه که دستور اول با موفقیت اجرا شده باشه.
Bash همچنین از حلقههای تکرار مثل for، while و until پشتیبانی میکنه که برای انجام عملیات تکراری بسیار مفید هستن. این حلقهها میتونن برای پردازش فایلها، اجرای دستورات برای مجموعهای از آیتمها، یا انجام عملیات در فواصل زمانی مشخص استفاده بشن.
یکی از قابلیتهای پیشرفتهی Bash، امکان ایجاد و استفاده از آرایهها هستش. آرایهها در Bash میتونن برای ذخیره و دستکاری مجموعهای از مقادیر استفاده بشن، که در اسکریپتهای پیچیدهتر بسیار کاربردی هستن.
در نهایت، باید اشاره کرد که Bash یک زبان اسکریپتنویسی کامل هستش که میتونه برای نوشتن برنامههای پیچیده استفاده بشه. با این حال، برای تسکهای پردازشی سنگین یا برنامههای با منطق پیچیده، معمولاً استفاده از زبانهای برنامهنویسی سطح بالاتر مثل Python یا Perl توصیه میشه.
#linux #shell #bash #لینوکس #بش #شل
————————————————————————
میتونید برای حمایت از فعالیت این کانال، انتقادات و پیشنهادات خودتون رو کامنت کنید.
————————————————————————
💙💙 @PhiloLearn 💙💙
Forwarded from LinFAQ (Reza)
#روزی_یک_نکته با دلاتو
دستهبندی: #آموزشی #کاربردی
#fzf #bash
خب بریم 5 تا فانکشن bash ردیف شده با fzf که به کار میاد ببینیم
این بخش رو به bashrc اضافه کنید تا با Ctrl r بتونید هیستوری بش رو ببینید یا...:
لیست فایل ها (از جمله فایل های پنهان به جز فایل های داخل .git)
ترکیب cd و fzf(از جمله دایرکتوری های پنهان به جز .git):
لیست فایل ها و باز کردنشون با fzf:
دستورات جهت حذف و نصب پکیج ها:
@LinAcademy | @LinFAQ
دستهبندی: #آموزشی #کاربردی
#fzf #bash
خب بریم 5 تا فانکشن bash ردیف شده با fzf که به کار میاد ببینیم
این بخش رو به bashrc اضافه کنید تا با Ctrl r بتونید هیستوری بش رو ببینید یا...:
eval "$(fzf --bash)"
لیست فایل ها (از جمله فایل های پنهان به جز فایل های داخل .git)
function ff() {
vim "$(fd --type f --hidden --exclude .git | fzf --preview 'cat {}' --select-1 --exit-0)"
}ترکیب cd و fzf(از جمله دایرکتوری های پنهان به جز .git):
function fcd() {
cd "$(fd --type d --hidden --exclude .git | fzf --preview 'ls -la {}' --select-1 --exit-0)" || exit
}لیست فایل ها و باز کردنشون با fzf:
open() {
xdg-open "$(fd --type f | fzf)"
}دستورات جهت حذف و نصب پکیج ها:
( البته در pacman )
install() {
pacman -Slq | fzf --multi --preview 'pacman -Si {1}' | xargs -ro sudo pacman -S
}
uninstall() {
pacman -Qq | fzf --multi --preview 'pacman -Qi {1}' | xargs -ro sudo pacman -Rns
}Source
@LinAcademy | @LinFAQ
Forwarded from Woland's Linux Journal (Woland)
💠 وبدرایور سلنیوم برای بش
شلنیوم عملکرد سلنیوم در پایتون رو برای کاربران بش فراهم میکند.
برای استفاده از آن فقط به کرومدرایور و شل bash یا zsh احتیاج دارید.
🔷 برای نصب کافیست مخزن رو کلون کنید و فایل selenium.sh رو در ابتدای اسکریپت سورس کنید.
و یا استفاده از متدهای فراهم شده توسط شلنیوم، کارتون رو انجام بدین.
♦️ نمونه یک اسکریپت سادهی دمو:
نکته: پیش از اجرای اسکریپت باید chromedriver رو اجرا کنید.
🔶 لینکها:
👉 🔗 GitHub
👉 🔗 Docs
مستندات بسیار گویا و شفافی داره و کار باهاش خیلی راحته و برای کسانی که پایتون کار نیستن یا از پایتون خوششون نمیاد خیلی بهدردبخوره.
#bash #معرفی #لینوکس
شلنیوم عملکرد سلنیوم در پایتون رو برای کاربران بش فراهم میکند.
برای استفاده از آن فقط به کرومدرایور و شل bash یا zsh احتیاج دارید.
🔷 برای نصب کافیست مخزن رو کلون کنید و فایل selenium.sh رو در ابتدای اسکریپت سورس کنید.
و یا استفاده از متدهای فراهم شده توسط شلنیوم، کارتون رو انجام بدین.
♦️ نمونه یک اسکریپت سادهی دمو:
#!/usr/bin/env bash
source ./selenium.sh
main() {
# Open the URL
navigate_to 'https://google.com'
# Get the search box
local searchBox=$(find_element 'name' 'q')
# send keys
send_keys $searchBox "panda\n"
}
main
نکته: پیش از اجرای اسکریپت باید chromedriver رو اجرا کنید.
🔶 لینکها:
👉 🔗 GitHub
👉 🔗 Docs
#bash #معرفی #لینوکس
Forwarded from Woland's Linux Journal (Woland)
This media is not supported in your browser
VIEW IN TELEGRAM
آیا زیبا نیست؟
باران دیجیتال ماتریکس در ۸۰ خط کد بش.
توی این اسکریپت از قابلیت Alt Screen ترمینال استفاده کردم تا بعد از اجرای اسکریپت، محتوای قبلی ترمینال حفظ شده باشه.
این همون چیزیه که برنامههای ترمینالی مثل Vim و HTop استفاده میکنند.
همچنین با استفاده از یک اسکریپت کمکی رنگهای قبلی ترمینال رو برمیگردونیم.
این اسکریپت هیج وابستگی خاصی نداره و کافیه توی یک ترمینال خوب ( ترمینال خوب یعنی XTerm ) باشید و فونتی داشته باشین که کاراکترهای ژاپنی کاتاکانا رو پشتیبانی کنه، مثل IBM Plex یا Roboto.
👉🔗 Github
#بش
#ماتریکس
#bash #matrix
باران دیجیتال ماتریکس در ۸۰ خط کد بش.
توی این اسکریپت از قابلیت Alt Screen ترمینال استفاده کردم تا بعد از اجرای اسکریپت، محتوای قبلی ترمینال حفظ شده باشه.
این همون چیزیه که برنامههای ترمینالی مثل Vim و HTop استفاده میکنند.
همچنین با استفاده از یک اسکریپت کمکی رنگهای قبلی ترمینال رو برمیگردونیم.
این اسکریپت هیج وابستگی خاصی نداره و کافیه توی یک ترمینال خوب ( ترمینال خوب یعنی XTerm ) باشید و فونتی داشته باشین که کاراکترهای ژاپنی کاتاکانا رو پشتیبانی کنه، مثل IBM Plex یا Roboto.
با استفاده از یک کلک هوشمندانه،نیاز به tput رو از بین بردم و از متغیرهای LINES و COLUMNS استفاده کردم. این متغیرها هنگام تعامل کاربر با ترمینال ست میشن و به همین خاطر استفاده ازشون توی اسکریپت کمی زیرکی میخواد.
با استفاده از یک No Op ترمینال رو گول میزنیم تا توهم تعامل بزنه (😂) و متغیرها رو ست کنه.
میتونستیم از
`/usr/bin/true`
هم استفاده کنیم ولی خیلی کار جالبی نیست!
👉🔗 Github
#بش
#ماتریکس
#bash #matrix
Forwarded from Woland's Linux Journal (Woland)
💠کنترل کردن ترمینال💠
مطلبی درباره شروع کار با کدهای انسی و بش برای ساختن برنامههای ترمینالی نوشتم که در سایت بارگذاری شده.
توی این اسکریپت یک Hello World را در ترمینال حرکت میدهیم.
قبلاً هم فرستهای درباره خلاقیت در Hello World نوشته بودم.
چون پرسیده بودین چطور میشه نوشتن چنین کدهایی رو شروع کرد، بسیار سادهاست! اینطور شروع میکنند!
توی این سایت منبعد مطالب زیادی از این دست خواهم گذاشت.
👉🔗 Bash-Notes
#آموزش #بش
#bash
مطلبی درباره شروع کار با کدهای انسی و بش برای ساختن برنامههای ترمینالی نوشتم که در سایت بارگذاری شده.
توی این اسکریپت یک Hello World را در ترمینال حرکت میدهیم.
قبلاً هم فرستهای درباره خلاقیت در Hello World نوشته بودم.
چون پرسیده بودین چطور میشه نوشتن چنین کدهایی رو شروع کرد، بسیار سادهاست! اینطور شروع میکنند!
توی این سایت منبعد مطالب زیادی از این دست خواهم گذاشت.
👉🔗 Bash-Notes
#آموزش #بش
#bash
Forwarded from Woland's Linux Journal (Woland)
💠چگونه بیدار شویم؟💠
چرخههای خواب و بیداری شامل چندین مرحله میباشند که هر کدام نقش مهمی در سلامت و عملکرد بدن دارند. یکی از این مراحل، خواب REM است که مخفف Rapid Eye Movement (حرکت سریع چشم) میباشد. در این مرحله، چشمها زیر پلکها به سرعت حرکت میکنند و مغز فعال است، به طوری که فرد اغلب رویا میبیند.
محاسبه چرخههای REM برای تعیین بهترین زمان بیدار شدن بسیار مهم است. یک چرخه کامل خواب حدود 90 دقیقه طول میکشد و شامل چندین مرحله از جمله خواب REM میباشد. برای اطمینان از بیدار شدن در انتهای یک چرخه خواب، که فرد تازهتر و آمادهتر احساس میکند، باید زمان بیدار شدن را با توجه به چرخههای 90 دقیقهای برنامهریزی کرد.
برای محاسبه REM برنامهها و سایتهای بسیاری وجود داره. بش اسکریپت زیر خیلی ساده بهترین زمان بیدار شدن رو محاسبه میکنه. این اسکریپت در صورتی که بدون آرگومان اجرا بشه، زمان فعلی را به عنوان زمان خواب در نظر میگیره و در غیر این صورت، زمان خواب را به عنوان آرگومان اول دریافت میکنه.
نمونه:
خروجی:
Optimal wake-up times if you sleep at 21:47:
Best time to wake up after 1 cycle(s) is: 23:17
Best time to wake up after 2 cycle(s) is: 00:47
Best time to wake up after 3 cycle(s) is: 02:17
Best time to wake up after 4 cycle(s) is: 03:47
Best time to wake up after 5 cycle(s) is: 05:17
Best time to wake up after 6 cycle(s) is: 06:47
Best time to wake up after 7 cycle(s) is: 08:17
کد:
#آموزش #بش #bash
چرخههای خواب و بیداری شامل چندین مرحله میباشند که هر کدام نقش مهمی در سلامت و عملکرد بدن دارند. یکی از این مراحل، خواب REM است که مخفف Rapid Eye Movement (حرکت سریع چشم) میباشد. در این مرحله، چشمها زیر پلکها به سرعت حرکت میکنند و مغز فعال است، به طوری که فرد اغلب رویا میبیند.
محاسبه چرخههای REM برای تعیین بهترین زمان بیدار شدن بسیار مهم است. یک چرخه کامل خواب حدود 90 دقیقه طول میکشد و شامل چندین مرحله از جمله خواب REM میباشد. برای اطمینان از بیدار شدن در انتهای یک چرخه خواب، که فرد تازهتر و آمادهتر احساس میکند، باید زمان بیدار شدن را با توجه به چرخههای 90 دقیقهای برنامهریزی کرد.
برای محاسبه REM برنامهها و سایتهای بسیاری وجود داره. بش اسکریپت زیر خیلی ساده بهترین زمان بیدار شدن رو محاسبه میکنه. این اسکریپت در صورتی که بدون آرگومان اجرا بشه، زمان فعلی را به عنوان زمان خواب در نظر میگیره و در غیر این صورت، زمان خواب را به عنوان آرگومان اول دریافت میکنه.
نمونه:
$ ./REM.sh$ ./REM.sh 11:30خروجی:
Optimal wake-up times if you sleep at 21:47:
Best time to wake up after 1 cycle(s) is: 23:17
Best time to wake up after 2 cycle(s) is: 00:47
Best time to wake up after 3 cycle(s) is: 02:17
Best time to wake up after 4 cycle(s) is: 03:47
Best time to wake up after 5 cycle(s) is: 05:17
Best time to wake up after 6 cycle(s) is: 06:47
Best time to wake up after 7 cycle(s) is: 08:17
کد:
#!/usr/bin/env bash
RemCalc()
{
local SleepTime=$1
local CycleDuration=90
local CyclesNum=7
echo "Optimal wake-up times if you sleep at $SleepTime:"
for ((i=1; i<=CyclesNum; i++)); do
WakeUpTime=$(date -d "$SleepTime $((i * CycleDuration)) minutes" +"%H:%M")
echo "Best time to wake up after $i cycle(s) is: $WakeUpTime"
done
}
if [[ -z "$1" ]]; then
CurrentTime=$(date +"%H:%M")
RemCalc "$CurrentTime"
else
RemCalc "$1"
fi
#آموزش #بش #bash
Forwarded from CleverDevs (Mammad)
یه چند روزیه شروع کردم تایمای بیکاری bash script یاد میگیرم (که بنظرم اگه لینوکسی هستید حتما یاد بگیرید بدردتون میخوره) میخوام چیزای جالبش رو هم گاها اینجا شیر کنم
یه چیز باحالی که دیدم عملگر های مقایسهای تو بش بود
مثلا با عملگر های زیر میتونید مقایسه کنید متنی که دارید null هست یا نه
یا عملگر های مربوط به اعداد و فایل ها که تو تصاویر همشون هستن و یه مثال این پایین میزنم
مثلا اگه میخواید چک کنید یه عدد بزرگتر یا مساوی یه یه عدد دیگس میتونید از ge- استفاده کنید
*و اگه دقت کنید این عملگر ها حرف اول کلماتی هستن که نشون میدن مثل ge حروف اول great و equal هستش یا lt حروف اول less than هستش*
برای اینکه طولانی نشه دیگه برا بقیشون مثالی نمیزنم میتونید تو تصاویر پست بقیش رو ببینید
#bash
@CleverDevs - @CleverDevsGp
یه چیز باحالی که دیدم عملگر های مقایسهای تو بش بود
مثلا با عملگر های زیر میتونید مقایسه کنید متنی که دارید null هست یا نه
if [ -z "$str" ]; then
echo "It's null"
fi
if [ -n "$str" ]; then
echo "It isn't null"
fi
یا عملگر های مربوط به اعداد و فایل ها که تو تصاویر همشون هستن و یه مثال این پایین میزنم
مثلا اگه میخواید چک کنید یه عدد بزرگتر یا مساوی یه یه عدد دیگس میتونید از ge- استفاده کنید
if [[ 4 -ge 2 ]]; then
echo "It's greater than or equal to "
fi
*و اگه دقت کنید این عملگر ها حرف اول کلماتی هستن که نشون میدن مثل ge حروف اول great و equal هستش یا lt حروف اول less than هستش*
برای اینکه طولانی نشه دیگه برا بقیشون مثالی نمیزنم میتونید تو تصاویر پست بقیش رو ببینید
#bash
@CleverDevs - @CleverDevsGp
Forwarded from CleverDevs (Mammad)
یکی دیگه از بخشای جالب Bash حلقه هاشه . توی بش یه حلقه until هم داریم که خیلی شبیه به while هست با یه تفاوت کوچیک ، توی while حلقه تا زمانی که شرطمون درسته اجرا میشه و به محض اینکه شرطمون نقض بشه تموم میشه
مثلا تو کد زیر تا زمانی که متغیرمون از 5 کوچیکتر هست شرط درسته و حلقه اجرا میشه
ولی unitl برعکسه تا وقتی شرط اشتباهه حلقه اجرا میشه و به محض اینکه شرط حلقه درست بشه استپ میشه
مثلا تو کد زیر تا زمانی که شرط حلقه اشتباهه حلقه اجرا میشه ولی به محض اینکه شرط درست میشه حلقه متوقف میشه
البته با معکوس کردن شرط while کار همون until رو میکنه ولی در کل حلقه جالبی بود
#bash
@CleverDevs - @CleverDevsGp
مثلا تو کد زیر تا زمانی که متغیرمون از 5 کوچیکتر هست شرط درسته و حلقه اجرا میشه
i=1
while [[ $i -lt 5 ]]; do
echo "CleverDevs";
let i++
done
ولی unitl برعکسه تا وقتی شرط اشتباهه حلقه اجرا میشه و به محض اینکه شرط حلقه درست بشه استپ میشه
مثلا تو کد زیر تا زمانی که شرط حلقه اشتباهه حلقه اجرا میشه ولی به محض اینکه شرط درست میشه حلقه متوقف میشه
i=1
until [[ $i -gt 5 ]]; do
echo "CleverDevs";
let i++
done
البته با معکوس کردن شرط while کار همون until رو میکنه ولی در کل حلقه جالبی بود
#bash
@CleverDevs - @CleverDevsGp
Forwarded from Woland's Linux Journal (Woland)
This media is not supported in your browser
VIEW IN TELEGRAM
💠آموزش ساخت بازی ماینسوییپ با بش💠
توی این مقاله ساخت نسخهی سادهای از بازی ماینسوییپ رو یاد خواهید گرفت.
این مطلب مباحث مهمی ازجمله کار با کدهای انسی، مدیریت وضعیت (state)، دنبال کردن پوزیشن کاربر در ترمینال، گرفتن ورودی از کاربر و استفاده از لوپ برای ساخت و ترسیم شکلها در ترمینال رو پوشش میده.
پ.ن: من فکر میکردم که این مطلب رو خیلی وقت پیش آپلود کردم، ولی آپلود نشده بود.
گیفهای با کیفیتتری هم در سایت قرار گرفته.
👉🔗 Bash-Notes
#آموزش #bash #بش
توی این مقاله ساخت نسخهی سادهای از بازی ماینسوییپ رو یاد خواهید گرفت.
این مطلب مباحث مهمی ازجمله کار با کدهای انسی، مدیریت وضعیت (state)، دنبال کردن پوزیشن کاربر در ترمینال، گرفتن ورودی از کاربر و استفاده از لوپ برای ساخت و ترسیم شکلها در ترمینال رو پوشش میده.
👉🔗 Bash-Notes
#آموزش #bash #بش
Forwarded from Woland's Linux Journal (Woland)
Forwarded from CleverDevs (Mammad)
مدتی بود به کلا از برنامه نویسی دور بودم و وقت نمیشد پستی بزارم گفتم برای شروع کار بیام و یکی از بخش های بدرد بخور bash script که قابلیت select هست و کار ساخت منو هایی که کاربر باید چیزی انتخاب کنه رو راحت تر میکنه رو یه معرفی ریزی بکنم
سینتکس خاصی هم نداره و راحت میشه استفاده کرد
متغیر PS3 یه متغیره که اون سوالی که تو منو داریم رو باید تعریف کنید و خود منو رو هم تو خط های بعدی تعریف کنید
خروجی هم یه همچین چیزی میشه
چیز ساده ای بود که میشد به هرروشی نوشت ولی اینکه خود بش یه همچین قابلیتی داشت باحاله
#bash
@CleverDevs - @CleverDevsGp
سینتکس خاصی هم نداره و راحت میشه استفاده کرد
#!/bin/bash
PS3="Select one of the options ... :"
select opt in CleverDevs Mammad CleverDevsGp;do
echo $opt;
break;
done
متغیر PS3 یه متغیره که اون سوالی که تو منو داریم رو باید تعریف کنید و خود منو رو هم تو خط های بعدی تعریف کنید
خروجی هم یه همچین چیزی میشه
1) CleverDevs
2) Mammad
3) CleverDevsGp
Select one of the options ... :
چیز ساده ای بود که میشد به هرروشی نوشت ولی اینکه خود بش یه همچین قابلیتی داشت باحاله
#bash
@CleverDevs - @CleverDevsGp
Forwarded from hosein seilany https://seilany.ir/
آموزش شل اسکریپت نویسی:
اسکریپتی برای بررسی روت بودن کاربر جاری:
testroot.sh
######################
#!/bin/bash
if [ "$(whoami)" != 'root' ]; then
echo "You have no permission to run $0 as non-root user."
exit 1;
fi
#################################
#bash testroot.sh
اسکریپتی برای بررسی روت بودن کاربر جاری:
testroot.sh
######################
#!/bin/bash
if [ "$(whoami)" != 'root' ]; then
echo "You have no permission to run $0 as non-root user."
exit 1;
fi
#################################
#bash testroot.sh
Forwarded from Woland's Linux Journal (Woland)
چطور یک بش کامپلیشن بنویسیم؟
به همین سادگی:
احتمالا کامپلیشنهای بهتری هم برای گو وجود داره، اما همین برای من کافیه.
کد خواناست اگه مشکلی داشتین توی کامنت بپرسین.
#bash #بش
به همین سادگی:
#!/usr/bin/env bash
_generate_go_completions() {
local idx=$1; shift
local words=( "$@" )
local current_word=${words[idx]}
local array=(
build
run
bug
build
clean
doc
env
fix
fmt
generate
get
install
list
mod
work
run
telemetry
test
tool
version
vet
)
for i in "${array[@]}"; do
if [[ $i == "$current_word"* ]]; then echo "$i"; fi
done
}
_complete_go_bash() {
mapfile -t raw < <(_generate_go_completions "$COMP_CWORD" "${COMP_WORDS[@]}")
COMPREPLY=( "${raw[@]}" )
}
if [ -n "${BASH_VERSION:-}" ]; then
complete -F _complete_go_bash go
fi
احتمالا کامپلیشنهای بهتری هم برای گو وجود داره، اما همین برای من کافیه.
کد خواناست اگه مشکلی داشتین توی کامنت بپرسین.
#bash #بش
Forwarded from Woland's Linux Journal (Woland)
$@ در مقابل getopts در Bash تفاوت اصلی چیه؟
مثال با @$:
مثال با getopts:
اجرا:
کی از کدوم استفاده کنیم؟
@$ مناسبه وقتی:
- آرگومانها ساده و بدون flag هستند
- فقط میخوایم روی همه آرگومانها iterate کنیم
- اسکریپت ساده است
getopts مناسبه وقتی:
- نیاز به option های پیچیده داریم (-f file, -v, --help)
- میخوایم validation و error handling داشته باشیم
- اسکریپت professional تر باشه
-
توجه:
getopts vs getopt getopts (built-in bash):
فقط getopts پرتابله و همه جا کار میکنه، چون یک bash built-in هست اما getopt یک باینری مجزاست!
اجرا:
بهترین استفاده از @$ وقتیه که برای فراخوانی یک تابع درون اسکریپت ازش استفاده بشه.
اجرا:
# → Hello World
# → Hello, woland
# → The time is 14:37
#بش #bash #آموزش
@$ = تمام آرگومانهای اسکریپت رو به شکل فهرست برمیگردونه
getopts = ابزار قدرتمند برای پردازش flag ها و option های مختلفه
مثال با @$:
# script.sh arg1 arg2 arg3
for arg in "$@"; do
echo "Argument: $arg"
done
مثال با getopts:
while getopts "f:v" opt; do
case $opt in
f) filename="$OPTARG" ;;
v) verbose=true ;;
\?) echo "Invalid option" >&2 ;;
esac
done
اجرا:
script.sh -f myfile.txt -vکی از کدوم استفاده کنیم؟
@$ مناسبه وقتی:
- آرگومانها ساده و بدون flag هستند
- فقط میخوایم روی همه آرگومانها iterate کنیم
- اسکریپت ساده است
getopts مناسبه وقتی:
- نیاز به option های پیچیده داریم (-f file, -v, --help)
- میخوایم validation و error handling داشته باشیم
- اسکریپت professional تر باشه
-
توجه:
getopts vs getopt getopts (built-in bash):
فقط getopts پرتابله و همه جا کار میکنه، چون یک bash built-in هست اما getopt یک باینری مجزاست!
OPTS=$(getopt -o f:vh -l file:,verbose,help -n "$0" -- "$@")
if [ $? != 0 ]; then
echo "Try '$0 --help' for usage." >&2
exit 1
fi
eval set -- "$OPTS"
while true; do
case "$1" in
-f|--file)
filename="$2"
shift 2 ;;
-v|--verbose)
verbose=true
shift ;;
-h|--help)
echo "Usage: $0 [-f FILE] [-v] [-h]"
echo " -f, --file FILE specify a filename"
echo " -v, --verbose enable verbose mode"
echo " -h, --help show this help message"
exit 0 ;;
--)
shift
break ;;
*)
echo "Unknown option: $1"
exit 1 ;;
esac
done
if [[ $# -gt 0 ]]; then
echo "Filename = $filename"
echo "Verbose = $verbose"
fi
اجرا:
./script.sh -f foo.txt -v./script.sh --file foo.txt --verbose./script.sh -hبهترین استفاده از @$ وقتیه که برای فراخوانی یک تابع درون اسکریپت ازش استفاده بشه.
hello_world() { echo "Hello World"; }
hello_user() { echo "Hello, $USER"; }
hello_time() { echo "The time is $(date +%H:%M)"; }
hello_"$@"اجرا:
./script.sh world# → Hello World
./script.sh user# → Hello, woland
./script.sh time# → The time is 14:37
#بش #bash #آموزش
Forwarded from SoniaCircuit (SoniaCircuit Moderator)
توضیح Shell و Terminal
سلام بچه ها
تو این ویدیو میخوایم راجب شل و ترمینال
صحبت کنیم و راجب کاربردهاشون بگیم و با هم چند تا کامند کاربردی رو امتحان میکنیم برای اینکه توی ترمینال فایل بسازیم و …
این ویدیو پارت اول مجموعه شل و بش اسکریپتینگ هستش پس منتظر پارت های بعدی باشید🔥
امیدوارم از این قسمت خوشتون اومده باشه😉
لایک و ساب اسکرایب هم فراموششششششش نشه❤️ 😁
#linux #shell #bash #terminal
سلام بچه ها
تو این ویدیو میخوایم راجب شل و ترمینال
صحبت کنیم و راجب کاربردهاشون بگیم و با هم چند تا کامند کاربردی رو امتحان میکنیم برای اینکه توی ترمینال فایل بسازیم و …
این ویدیو پارت اول مجموعه شل و بش اسکریپتینگ هستش پس منتظر پارت های بعدی باشید
امیدوارم از این قسمت خوشتون اومده باشه
لایک و ساب اسکرایب هم فراموششششششش نشه
#linux #shell #bash #terminal
Please open Telegram to view this post
VIEW IN TELEGRAM