مروری بر دوره 102 LPIC-1
از هر چه بگذریم از دنیای زیبای لینوکس نمی شود گذشت، یک سیستم عامل فوق العاده از نظر کارایی و امنیت که در بیشتر سرورهای جهان مورد استفاده قرار می گیرد.
اکثر سخت افزارهای شبکه بر پایه لینوکس ایجاد شده اند که در ساده ترین آنها، سیستم عامل IOS دستگاه های سیسکو است که بر پایه لینوکس نوشته شده است یا سیستم عامل میکروتیک که بر پایه لینوکس است.
خب تا اینجا دو دوره از لینوکس را با در کنار هم گذراندیم حال در دوره سوم هستیم.
همان طور که داخل ویدئو معرفی دوره گفته شد این دوره دومین آزمون LPIC-1 است.
این آزمون علاوه بر سنجش مهارت شما در زمینه سفارشی سازی و استفاده از محیط پوسته، نوشتن و اجرای اسکریپت ها، مدیریت دیتابیس و اجرای فرمان های SQL، دانش شما را در زمینه آشنایی با چگونگی پیکربندی تنظیمات برای تعامل با کاربران دسکتاپ، انجام وظایف مدیریتی مربوطه، مدیریت خدمات سیستم، ایجاد ارتباطات شبکه و ایمن سازی سیستم لینوکس را نیز به آزمایش می گذارد.
شما در صورت قبولی در این آزمون و آزمون 101 موفق به دریافت مدرک lpic 1 خواهید شد.
حالا شما می توانید با اخذ این مدرک یعنی مدرک LPIC-1 و مهارت هایی که در طی دوره آن کسب کردید برای استفاده هر چه بیشتر و بهتر از سیستم های انعطاف پذیر اپن سورس استفاده کنید و میزان کارایی محیط های های کاری را که از الویت های هر کارفرمایی است را با استفاده از ویژگی های این سیستم بهبود بدهید.
گواهی LPIC-1 درک شما از هسته لینوکس را اندازه گیری می کند. همانطور که بازار سرور لینوکس به رشد خود ادامه می دهد، تقاضا برای مدیران لینوکس تایید شده نیز افزایش می یابد.
پیش نیاز: هیچ پیش نیازی برای این گواهی وجود ندارد.
شرایط قبولی در آزمون های 101 و 102 :
هر امتحان 90 دقیقه و تعداد سوالات هم 60 سوال چندگزینه ای می باشد.
مدت اعتبار: 5 سال مگر اینکه سطح مجدد یا بالاتر بدست آید.
سر فصل های دوره آموزشی Linux+ Exam 102 یا LPIC 1 Exam 102
-
پارت اول : معرفی دوره آموزشی
-
پارت دوم : دلخواه سازی و استفاده از محیط shell
قطعا دیگه شما با این محیط آشنا هستید ما به این محیط میگفتیم محیط شل، همون جایی که دستوراتمون رو میزدیم.
توی دوره LPIC 1 – Exam 101 زیاد با این محیط کار کردیم. حالا میخایم یه مقدار شخصی سازی بکیم.
انتظار میره در پایان این پارت بتونید: تنظیم بکنید بر اساس نیازهای شخصی خودتون یا کاربرهای دیگه به عنوان مدیر سیستم، متغییر PATH رو بدونید، function تعریف بکنید و همچنین میخایم با اسکلت و ساختار لینوکس آشنا بشیم.
منظور از اسکلت فایلی هستش به اسم skel مثل فولدر دیفالت ویندوزه برای پروفایل های کاربری، هر چیزی که داخلش بذارید، داخل پروفایل همه کاربرها میاد، اما چیزی که قرار هستش اینجا بگیم مفهوم login و non-login shellه.
ببینید ما دو جور شل داریم، یه شلی که شل های لاگین ن. وقتی شما وارد میشید باید یوزرنیم پسوردتون رو وارد کنید تا بتونید لاگین بکنید توش. اما یه چیزی ام داریم به اسم non-login shell.
خب اجازه بدید بریم داخل محیط عملی تا بهتر این موضوع براتون جا بیفته.
-
پارت سوم : دلخواه سازی یا نوشتن اسکریپت های ساده
در این پارت که عنوانش هستش نوشتن اسکریپت های ساده، شما در واقع نوشتن اسکریپت های مربوط به لینوکس رو یاد می گیرید.
البته خیلی مقدماتی، ما توی دوره لینوکس اسنشیال یه مقدار در مورد shell scripting صحبت کردیم. چند تا اسکریپت ساده هم با هم کار کردیم، حالا توی این قسمت میخایم یه مقدار بحث مون رو پیشرفته تر کنیم.
دقت کنید توی این قسمت قرار نیستش که شما اسکریپت های پیشرفته بنویسید بلکه هدف اینه که با ساختا شل اسکریپتینگ بیشتر آشنا بشید، بتونید تحلیلش بکنید و قالب بندی هاشو یاد بگیرید.
خب حالا ببینیم چه مواردی رو قرار هستش توی این قسمت کار بکنیم:
ما میایم ابتدا در مورد سینتکس یا روش نگارش یه اسکریپت صحبت میکنیم. هر اسکریپتی که نوشته میشه، یه قالبی داره، یه سینتکسی داره، همون جور که زبان C یه Syntax داره یا زبان ++C یه Syntax داره، زبان بش شل هم یه سینتکس داره.
ما توی این قسمت یاد میگیرم که از چه سینتکسی در زبان بش شل استفاده بکنیم.
راجب دستوراتی که داخل شل اسکریپت استفاده میشن و چه جوری استفاده میشن صحبت میکنیم.
راجب شرط ها صحبت میکنیم، خیلی مهمه که شما داخل شل اسکریپت تون شرط ها رو بشناسید.
بحث بعدی مون راجب حلقه ها هستش، حلقه یعنی ساختاری که قرار هستش تکرار بشه. این رو خیلی جاها داریم، لوپ یا حلقه یعنی چیزی که قراره تکرار بشه، حالا می تونه ترکیب بشه با یه شرط که اصطلاحا میگن کاندیشن، که از اون شرط خارج بشه یا وارد اون شرط بشه، که راجب اینا صحبت میکنیم.
و در نهایت در انتهای این پارت راجب دو تا موضوع یکی اینکه چه جوری ایمیل بزنیم به کاربر مدیر داخل اسکریپت مون، و بحث بعدی مون اینه که چطور اطلاعات رو از ورودی بخونیم، مثل گرفتن اطلاعات از کاربر و نمایش دادن شون، راجب این دو تا موضوع کامل صحبت میکنیم.
-
پارت چهارم : مدیریت داده ها با SQL
توی این قسمت میخایم راجب مدیریت داده ها با SQL صحبت بکنیم. ممکنه همین ابتدا این سوال براتون مطرح بشه که چرا SQL؟؟؟
چرا وارد این بحث شدیم؟
دلیل اینکه ما میخایم با sql کار بکنیم اینه که شما به عنوان یک ادمین لینوکس بایستی با دستورات مدیریتی sql آشنا باشید.
ما میخایم چند تا دستور کاربردی در sql رو توی این قسمت به شما یاد بدیم، شما بایستی حداقل چیزها رو در خصوص دیتابیس بدونید.
خیلی از نرم افزارهایی که داخل سیستم عامل لینوکس شما وجود دارند، از همین دیتابیس استفاده میکنند.
بعضا شرایطی پیش میاد که شما مجبورید یه سری تغییرات روی این دیتابیس بدید. بنابراین توانایی این کار رو باید به عنوان یک ادمین لینوکس داشته باشید.
sql یه زبانی هستش که در برنامه نویسی برای مدیریت اطلاعات در پایگاه داده های رابطه ای استفاده میشه.
در واقع sql یه زبان استاندارد برای دسترسی به پایگاه داده ها استفاده میشه. بسته به محیط برنامه نویسی شما، ممکنه شما مستقیما از sql استفاده بکنید یا دستورات sql رو در زبان دیگه ای که کدنویسی کردید، استفاده بکنید.
اگر علاقمند به این مبحث هستید، دعوت میکنم همراه من باشید تا بریم داخل محیط عملی مون و بیشتر در این مورد صحبت بکنیم.
-
پارت پنجم : نصب و پیکربندی محیط گرافیکی X11
در این قسمت میخایم در مورد نصب و پیکربندی محیط گرافیکی X11 صحبت بکنیم.
انتظار میره در پایان این پارت بتونید X11 رو نصب و کانفیگ بکنید.
معمولا کسی دیگه الان این کارها رو انجام نمیده، اما یه دلیل منطقی حکم میکنه که شما این رو یاد بگیرید چون ممکنه که شما در دنیای واقعی یه زمانی به سرورهای قدیمی برخورد بکنید، اون موقع لازم هستش که بتونید X11 رو نصب و کانفیگ بکنید.
X سرور در واقع اون رابط گرافیکی هستش که شما می بینید، هنوزم هستش اما این مدلی دیگه کانفیگ نمیشه.
اما مزیتش اینه که توی خیلی از کامپیوترها و حتی بسیاری از کارت گرافیک ها ران میشه.
تقریبا در حال حاضر تمام سیستم های لینوکسی از X11 استفاده میکنند.
خب اجازه بدید بریم داخل لینوکس مون تا مباحث مون رو بصورت عملی پیش ببریم.
-
پارت ششم : تنظیمات display manager
این پارت مون اختصاص داره به تنظیمات Display Manager.
انتظار میره که توی این پارت بدونید Display Manager چیه؟ و همچنین آشنا بشید با XDM ،GDM و KDM.
همین ابتدا ببینیم DM چیه؟ DM مخفف Display Manager ه.
همانطور که گفته شد لینوکس یه کرنل ه، سیستم رو بوت میکنه میده دست X، حالا X می تونه صفحه گرافیکی رو بفهمه. اون میده دست یکی از DMها یا Display Manager ها. اونجایی که به شما اجازه داده میشه لاگین بکنید. بعد میرید سراغ یکی از دسکتاپ های گنوم، KDE و یا هر چیزی که دوست دارید.
اون لایه وسط که به شما اجازه میده، لاگین گرافیکی انجام بدید، اسمش Display Manager هستش.
در واقع Display Manager های مختلفی وجود داره، که XDM خیلی سادشه. SDDM هم جدیده که KDE استفاده میکنه.
KDM برای لاگین کردن به KDE نوشته شده، و GDM برای لاگین کردن به گنوم هستش. و یکی هم lightdm هستش که خیلی ها ازش استفاده میکنند.
مزیتی که داره اینه سبکه،منابع زیادی استفاده نمیکنه فقط میخاد به شما بگه که یوزرتون چیه و لاگین بکنید و میزکارتون رو انتخاب بکند.
خب حالا ببینیم چه مواردی رو قرار هستش توی این قسمت یاد بگیریم:
ابتدا یاد میگیریم که چطور دسکتاپ منیجرها رو turn on و turn off بکنیم. چه جوری پیغام ورود لاگین بدیم و …
خب بریم داخل لینوکس مون تا بیشتر در مورد این موارد بحث کنیم.
-
پارت هفتم : Accessibility یا دسترسی پذیری
توی این قسمت میخایم راجب یه سری امکاناتی صحبت بکنیم که متاسفانه بعضی افراد بصورت فیزیکی امکان استفاده از کامپیوترهای معمولی رو ندارند.
گنوم بطور خاص از همون ابتدا یکی از اهداف بسیار بزرگش این بود که هر نسخه ای که میداد بیرون انتظار این رو داشت که همه بتونند با همه معلولیت های متنوع ازش استفاده بکنند. این شد که بخش درونی گنوم اختصاص پیدا کرد به تکنولوژی های دسترسی پذیری که توی سه قسمت ازش صحبت میکنیم.
قسمت اول AccessX هستش، به مردم با مشکلات فیزیکی اجازه میده که از کیبورد و موس استفاده بکنند.
آیتم دو visual settings هستش، کسانی که مشکل بینایی دارند توی visual settings می تونند مشکلاتشون رو حل بکنند.
و آیتم آخر assistive technology هستش، تکنولوژی های کمکی هستند مثلا هر چی روی صفحه میاد رو برای ما می خونه، که بهش اصطلاحا tts میگن.
خب بریم داخل لینوکس مون تا بصورت عملی این موارد رو بررسی کنیم.
-
پارت هشتم : مدیریت یوزرها ، گروهها و فایل های مرتبط
ما قرار هستش توی این پارت یاد بگیریم که user accountآمون و group accountآمون رو مدیریت بکنیم، یوزر ایجاد بکنیم و یه سری تغییرات روشون اعمال بکنیم و خلاصه کلی کار دیگه رو میخایم با هم انجام بدیم.
ابتدا ببینیم چه مواردی رو قرار هستش توی این قسمت یاد بگیریم:
با دستور passwd کارمون رو شروع میکنیم، البته قبلا با این دستور آشنا شدید. یاد میگیریم که چه جوری پسورد کاربر خودمون و کاربرهای دیگه رو عوض بکنیم.
دستور useradd رو داریم که باهاش یوزر درست میکنیم. با یه دستور دیگه به نام userdel یوزر رو دیلیت میکنیم. مادیفای میکنیم یه سری تغییر رو روی یوزرمون اعمال میکنیم.
گروه اضافه میکنیم با دستور groupadd، گروه رو حذف میکنیم و یه سری از پارامترهای گروپ رو تغییر میدیم.
با یه دستور دیگه به نام chage آشنا میشیم. توسط این دستور ما می تونیم روی یه یوزر محدودیت زمانی اعمال بکنیم.
راجب ساسپند کردن اکانت ها صحبت میکنیم. بحث اسپیشال اکانت ها رو داریم که چیز پیچیده ای نیستش.
در نهایت در مورد limited account یا service accountها صحبت میکنیم. یاد میگیریم که چه جوری یک اکانت رو service account بکنیم.
service account در واقع اکانتی هستش که قرار نیستش کسی باهاش لاگین بکنه. فقط قراره سرویس ها ازش استفاده بکنند.
و خیلی از موارد دیگه رو در این پارت مورد بحث و بررسی خواهیم داد. پس تا انتها همراه من باشید.
-
پارت نهم : اتوماتیک کردن وظایف سیستم
-
پارت دهم : بومی سازی و تنظیمات منطقه ای
-
پارت یازدهم : مدیریت زمان
-
پارت دوازدهم : نحوه log برداری از سیستم
-
پارت سیزدهم : Mail Transfer Agent
-
پارت چهاردهم : مدیریت پرینت و پرینترها
-
پارت پانزدهم : مبانی پروتکل های اینترنت
-
پارت شانزدهم : مبانی تنظیمات شبکه
-
پارت هفدهم : مبانی رفع اشکال شبکه
-
پارت هجدهم : تنظیمات DNS سمت کلاینت
-
پارت نوزدهم : تنظیمات مقدماتی امنیت
-
پارت بیستم : تنظیمات امنیتی Host
-
پارت بیست و یکم : مبانی رمزنگاری
Course Title 102 LPIC-1
System Architecture
Linux Installation and Package Management
GNU and Unix Commands
Devices, Linux Filesystems, Filesystem Hierarchy Standard
Shells, Scripting and Data Management
User Interfaces and Desktops
Administrative Tasks
Essential System Services
Networking Fundamentals
Security
سر فصل دوره :
1. معرفی دوره آموزشی LPIC 1 – Exam 102
4. راه اندازی سرویس MySQL و همچنین نحوه یاخت DataBase , Table و کار با آنها
سرفصل دوره
معرفی کلی دوره آموزشی LPIC-1 (Linux Professional Institute Certification - Exam 102) ویدئو
توضیحات کامل
دوره LPIC-1 Exam 102 بخشی از اولین سطح از گواهینامههای حرفهای لینوکس است که توسط موسسه Linux Professional Institute (LPI) ارائه میشود. این آزمون برای کسانی طراحی شده است که میخواهند مهارتهای کاربردی خود در مدیریت لینوکس را گسترش داده و در حوزه مدیریت سیستمهای لینوکسی تخصص بیشتری کسب کنند.
محتوای آموزشی آزمون 102
آزمون 102 به بخشهایی از مدیریت سیستم میپردازد که مکمل مفاهیم ارائهشده در Exam 101 است. موضوعات اصلی این دوره شامل موارد زیر میشوند:
- پوستهها (Shells)، اسکریپتنویسی و مدیریت دادهها
- کار با پوستههای مختلف لینوکس (مانند Bash).
- نوشتن اسکریپتهای پایه و استفاده از دستورات شرطی و حلقهها.
- مدیریت دادهها و تغییر آنها با ابزارهایی مانند
sed
وawk
.
- رابطهای کاربری و دسکتاپ
- نصب و پیکربندی محیطهای گرافیکی لینوکس.
- مدیریت تنظیمات کاربر در محیطهای گرافیکی.
- وظایف اداری سیستم
- مدیریت کاربران و گروهها.
- اتوماتیکسازی وظایف با استفاده از
cron
وat
. - مدیریت زمان سیستم.
- خدمات اساسی سیستم
- پیکربندی خدمات شبکهای مانند DNS، SSH و ایمیل.
- مدیریت فایلها و پرینترها در شبکه.
- شبکه و امنیت
- مفاهیم پایه شبکه، تنظیمات IP و مدیریت روترها.
- امنیت سیستم از طریق فایروالها و ابزارهایی مانند
iptables
وfirewalld
.
پیشنیازها
برای شرکت در آزمون LPIC-1 Exam 102، باید آزمون 101 را نیز بگذرانید. این دو آزمون مکمل یکدیگر هستند و به شما کمک میکنند مدرک LPIC-1 را دریافت کنید.
مزایای شرکت در این دوره
- یادگیری مفاهیم پیشرفته مدیریت سیستم لینوکس.
- آمادگی برای شغلهایی مانند مدیر سیستم یا مهندس شبکه.
- دریافت مدرکی معتبر که در سطح بینالمللی شناخته شده است.
این دوره برای علاقهمندان به سیستمعامل لینوکس که میخواهند مسیر حرفهای خود را در این حوزه بسازند، یک انتخاب ایدهآل است.
راهنمای جامع شلها، اسکریپتها و مدیریت دادهها در لینوکس مقاله
توضیحات کامل
شل (Shell) چیست؟
شل، واسطی بین کاربر و سیستمعامل است که دستورات را دریافت و اجرا میکند. در لینوکس، شلها به دو دسته متنمحور (Command-Line Shells) و گرافیکی (Graphical Shells) تقسیم میشوند.
انواع شلهای محبوب در لینوکس:
- Bash (Bourne Again Shell):
- رایجترین شل در توزیعهای لینوکسی.
- پشتیبانی از تاریخچه دستورات (Command History) و اسکریپتنویسی پیشرفته.
- Zsh (Z Shell):
- قابلیت سفارشیسازی بیشتر نسبت به Bash.
- تکمیل خودکار دستورات پیشرفته.
- Ksh (Korn Shell):
- مناسب برای اسکریپتنویسی و عملکرد بالا در سرورها.
- Fish (Friendly Interactive Shell):
- طراحی مدرن با قابلیتهای بصری بیشتر.
اسکریپتنویسی در شل
اسکریپتهای شل فایلهایی متنی هستند که شامل مجموعهای از دستورات برای خودکارسازی وظایف مختلف در سیستم میباشند. این اسکریپتها میتوانند وظایفی مانند پشتیبانگیری، مدیریت فایلها یا نصب برنامهها را به صورت خودکار انجام دهند.
ساختار یک اسکریپت شل:
- Shebang (#!):
- اولین خط هر اسکریپت شل با
#!/bin/bash
شروع میشود. این خط مشخص میکند که کدام شل برای اجرای اسکریپت استفاده شود.
#!/bin/bash echo "Hello, World!"
- اولین خط هر اسکریپت شل با
- دستورات شرطی و حلقهها:
- استفاده از شرطها (if, case) و حلقهها (for, while) برای مدیریت جریان اجرای برنامه.
دستور شرطی if [ -d /home/user ]; then echo "Directory exists." else echo "Directory does not exist." fi
- متغیرها:
- تعریف و استفاده از متغیرها برای ذخیره دادهها.
name="Linux" echo "Welcome to $name!"
- توابع:
- استفاده از توابع برای سازماندهی کد و استفاده مجدد از دستورات.
function greet { echo "Hello, $1!" } greet "User"
مدیریت دادهها در لینوکس
مدیریت دادهها شامل پردازش و مدیریت فایلها و اطلاعات متنی است. لینوکس ابزارهای قدرتمندی برای این منظور ارائه میدهد.
ابزارهای پردازش دادهها:
- grep:
- جستجو در فایلها بر اساس الگوهای متنی.
grep "error" logfile.txt
- awk:
- پردازش و فرمت دادهها.
awk '{print $1, $3}' data.txt
- sed:
- ویرایش متون به صورت خط به خط.
sed 's/old/new/g' file.txt
- cut:
- استخراج قسمتهای مشخصی از خطوط فایل.
cut -d',' -f1 data.csv
- sort و uniq:
- مرتبسازی دادهها و حذف خطوط تکراری.
sort file.txt | uniq
- tr:
- جایگزینی کاراکترها.
echo "HELLO" | tr 'A-Z' 'a-z'
چرا شلها و اسکریپتها اهمیت دارند؟
- اتوماتیکسازی وظایف:
- صرفهجویی در زمان با خودکارسازی وظایف تکراری.
- مدیریت سرورها:
- اجرای دستورات و اسکریپتها روی سرورهای راه دور از طریق SSH.
- پشتیبانگیری و بازیابی اطلاعات:
- نوشتن اسکریپتهای سفارشی برای مدیریت پشتیبانگیری.
- سفارشیسازی محیط کاری:
- تغییر و تنظیم متغیرهای محیطی و تنظیمات سیستم.
نتیجهگیری
درک شلها، اسکریپتنویسی و ابزارهای مدیریت دادهها، کلیدی برای افزایش بهرهوری در لینوکس است. یادگیری این مهارتها به شما اجازه میدهد تا سیستمهای پیچیده را با کارآمدی بیشتری مدیریت کنید. برای شروع، از ابزارهای ساده مانند grep
و sed
استفاده کنید و سپس به سمت اسکریپتنویسی پیشرفته حرکت کنید.
راهنمای جامع سفارشیسازی محیط شل در لینوکس مقاله
توضیحات کامل
شل چیست و چرا سفارشیسازی مهم است؟
شل (Shell) واسطی بین کاربر و سیستمعامل است که دستورات شما را دریافت کرده و آنها را اجرا میکند. سفارشیسازی محیط شل به شما این امکان را میدهد که:
- بهرهوری خود را افزایش دهید.
- محیط کاری راحتتر و جذابتری داشته باشید.
- دسترسی سریعتری به ابزارهای پرکاربرد داشته باشید.
متغیرهای محیطی و شل
متغیرهای محیطی، مقادیری هستند که بر رفتار شل و برنامههای اجراشده در آن تأثیر میگذارند. این متغیرها به راحتی قابل تنظیم هستند.
مثالهایی از متغیرهای محیطی مهم:
- PATH:
- مشخص میکند که شل از کدام مسیرها برای پیدا کردن فایلهای اجرایی استفاده کند.
echo $PATH export PATH=$PATH:/custom/path
- HOME:
- مسیر دایرکتوری خانه کاربر.
echo $HOME
- PS1:
- قالب نمایش خط فرمان.
export PS1="[\u@\h \W]\$ "
- LANG:
- تنظیمات مربوط به زبان و منطقه زمانی.
export LANG=en_US.UTF-8
مدیریت فایلهای تنظیمات شل
هر شل در لینوکس فایلهای خاصی برای تنظیمات دارد. در اینجا به فایلهای تنظیماتی پرکاربرد میپردازیم:
1. Bash (Bourne Again Shell):
.bashrc
:- فایل تنظیماتی برای جلسات تعاملی (Interactive).
- مناسب برای تعریف متغیرها، aliasها، و تنظیمات سفارشی.
alias ll='ls -la' export EDITOR=vim
.bash_profile
یا.bash_login
:- برای تنظیمات مربوط به جلسات ورود (Login Sessions).
2. Zsh (Z Shell):
.zshrc
:- مشابه
.bashrc
در Bash.
alias gs='git status' PROMPT='%n@%m:%~$ '
- مشابه
.zprofile
:- برای تنظیمات مربوط به جلسات ورود.
ابزارها و افزونههای سفارشیسازی شل
برای افزایش قابلیتها و زیبایی محیط شل، میتوانید از ابزارها و افزونههای زیر استفاده کنید:
1. Oh My Zsh:
- فریمورکی برای مدیریت و سفارشیسازی Zsh.
- شامل پلاگینها و تمهای متعدد.نصب:
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
2. Powerlevel10k:
- یک تم قدرتمند و زیبا برای Zsh.
- قابلیت نمایش وضعیت گیت، زمان و موارد دیگر.نصب:
git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ~/.oh-my-zsh/custom/themes/powerlevel10k
3. Bash-it:
- ابزاری برای سفارشیسازی Bash.
- مشابه Oh My Zsh ولی برای Bash.نصب:
git clone --depth=1 https://github.com/Bash-it/bash-it.git ~/.bash_it ~/.bash_it/install.sh
اضافه کردن alias و توابع سفارشی
alias:
Aliasها دستورات کوتاهی هستند که جایگزین دستورات طولانیتر میشوند.
alias ll='ls -la'
alias gs='git status'
توابع سفارشی:
توابع به شما اجازه میدهند دستورات پیچیدهتر را بستهبندی کنید.
function mkcd() {
mkdir -p "$1" && cd "$1"
}
سفارشیسازی PS1 (خط فرمان)
متغیر PS1 تعیین میکند که خط فرمان شما چگونه نمایش داده شود. میتوانید از مقادیر زیر برای سفارشیسازی استفاده کنید:
\u
: نام کاربر.\h
: نام میزبان.\w
: مسیر جاری.
مثال:
export PS1="[\u@\h \w]\$ "
نتیجهگیری
سفارشیسازی محیط شل، تجربه کار با لینوکس را جذابتر و کارآمدتر میکند. با تغییر متغیرهای محیطی، تنظیم aliasها و استفاده از ابزارهایی مانند Oh My Zsh، میتوانید محیط شل خود را متناسب با نیازهای شخصیتان تغییر دهید. این تنظیمات ساده میتوانند بهرهوری شما را به طور چشمگیری افزایش دهند.
راهنمای جامع تنظیم متغیرهای محیطی (Environment Variables) در لینوکس مقاله
توضیحات کامل
متغیر محیطی چیست؟
متغیر محیطی، جفتی از کلید و مقدار (Key-Value) است که اطلاعاتی را به سیستم و برنامهها ارائه میدهد. برای مثال:
- PATH: مسیرهایی که سیستم از آنها برای یافتن فایلهای اجرایی استفاده میکند.
- HOME: مسیر دایرکتوری خانه کاربر.
- LANG: زبان پیشفرض سیستم.
مشاهده متغیرهای محیطی
برای مشاهده متغیرهای محیطی در لینوکس میتوانید از دستورات زیر استفاده کنید:
- لیست همه متغیرهای محیطی:
printenv
یا:
env
- نمایش مقدار یک متغیر خاص:
echo $VARIABLE_NAME
مثال:
echo $PATH
متغیرهای محیطی پرکاربرد
1. PATH:
- مشخصکننده مسیرهایی است که سیستم در آنها به دنبال فایلهای اجرایی میگردد.
echo $PATH
2. HOME:
- مسیر دایرکتوری خانه کاربر.
echo $HOME
3. LANG:
- تنظیمات مربوط به زبان و منطقه زمانی.
echo $LANG
4. USER:
- نام کاربر فعلی.
echo $USER
5. SHELL:
- مسیر شل پیشفرض.
echo $SHELL
تنظیم متغیرهای محیطی
تنظیم موقت متغیرهای محیطی
برای تنظیم متغیرهای محیطی به صورت موقت (فقط برای جلسه جاری ترمینال):
export VARIABLE_NAME="value"
مثال:
export MY_VAR="Hello, Linux!"
echo $MY_VAR
این مقدار پس از بستن ترمینال از بین خواهد رفت.
تنظیم دائم متغیرهای محیطی
برای تنظیم متغیرها به صورت دائمی، باید آنها را در یکی از فایلهای تنظیماتی ذخیره کنید.
- فایلهای تنظیماتی شل:
- Bash:
- فایل
~/.bashrc
برای جلسات تعاملی. - فایل
~/.bash_profile
برای جلسات ورود (Login Sessions).
- فایل
- Zsh:
- فایل
~/.zshrc
.
- فایل
مثال:
echo 'export MY_VAR="Persistent Value"' >> ~/.bashrc source ~/.bashrc
- Bash:
- فایلهای سیستمی: برای تنظیم متغیرهای محیطی برای تمام کاربران، میتوانید از فایلهای زیر استفاده کنید:
/etc/environment
/etc/profile
- فایلهای داخل
/etc/profile.d/
مثال:
echo 'MY_VAR="System Wide Value"' | sudo tee -a /etc/environment source /etc/environment
ویرایش متغیرهای موجود
برای ویرایش متغیرهای موجود، میتوانید مقادیر جدید را به متغیر اضافه کنید.
ویرایش PATH:
مثال: اضافه کردن مسیر /custom/path
به PATH.
export PATH=$PATH:/custom/path
echo $PATH
حذف متغیرهای محیطی
برای حذف متغیرهای محیطی، از دستور unset
استفاده کنید:
unset VARIABLE_NAME
مثال:
unset MY_VAR
کاربردهای متغیرهای محیطی در لینوکس
- مدیریت مسیرهای فایلهای اجرایی:
- متغیر PATH مشخص میکند که سیستم از کجا فایلهای اجرایی را پیدا کند.
- تنظیمات زبان و منطقه زمانی:
- با تغییر متغیر LANG، میتوانید زبان و فرمت منطقه زمانی را تنظیم کنید.
export LANG=en_US.UTF-8
- سفارشیسازی محیط کاری:
- میتوانید متغیرهایی برای تنظیمات شخصی یا ابزارهای مورد استفادهتان تعریف کنید.
- استفاده در اسکریپتها:
- اسکریپتها میتوانند از متغیرهای محیطی برای اجرای وظایف پویا استفاده کنند.
#!/bin/bash echo "The value of MY_VAR is: $MY_VAR"
امنیت متغیرهای محیطی
متغیرهای محیطی میتوانند حاوی اطلاعات حساس باشند (مانند رمزهای عبور). برای ایمن نگه داشتن آنها:
- از ذخیره اطلاعات حساس در فایلهای عمومی پرهیز کنید.
- از ابزارهای مدیریت رمز عبور مانند
pass
یاvault
استفاده کنید.
نتیجهگیری
متغیرهای محیطی یکی از ابزارهای قدرتمند لینوکس برای سفارشیسازی محیط و افزایش بهرهوری هستند. با تنظیم صحیح آنها، میتوانید فرآیندهای کاری خود را بهینه کرده و محیطی متناسب با نیازهایتان ایجاد کنید.
راهنمای جامع تنظیم متغیرهای شل (Shell Variables) در لینوکس مقاله
توضیحات کامل
متغیر شل چیست؟
متغیرهای شل در واقع مقادیر متنی یا عددی هستند که توسط شل مدیریت میشوند و میتوانند در دستورات یا اسکریپتهای شل استفاده شوند. این متغیرها به صورت پویا تعریف و ویرایش میشوند و شامل موارد زیر هستند:
- متغیرهای محلی: فقط در جلسه جاری یا اسکریپت فعال هستند.
- متغیرهای جهانی: به تمام جلسات و فرایندهای زیرمجموعه ارث میرسند (معمولاً متغیرهای محیطی).
تفاوت بین متغیرهای شل و محیطی
- متغیر شل:
- درون جلسه شل تعریف میشود و فقط در همان جلسه معتبر است.
- برای انتقال به فرآیندهای دیگر نیاز به استفاده از
export
دارد.
- متغیر محیطی:
- متغیرهایی هستند که توسط سیستم تعریف شده و در تمام فرآیندهای جاری و زیرمجموعه قابل دسترسیاند.
مثال:
تعریف متغیر شل
MY_VAR="Hello"
echo $MY_VAR # خروجی: Hello
# تبدیل به متغیر محیطی
export MY_VAR
ایجاد و تنظیم متغیرهای شل
تعریف متغیر شل
برای تعریف یک متغیر شل، کافی است یک نام برای آن انتخاب کرده و مقدار آن را تعیین کنید.
MY_VAR="Hello, Linux!"
echo $MY_VAR
نکات:
- نام متغیر باید با حروف یا
_
شروع شود و نمیتواند شامل فاصله یا کاراکترهای خاص باشد. - مقدار متغیر میتواند رشتهای، عددی یا حتی خالی باشد.
استفاده از متغیرها در دستورات
متغیرها را با قرار دادن $
قبل از نام آنها استفاده میکنیم:
NAME="Alice"
echo "Hello, $NAME!"
خروجی:
Hello, Alice!
تنظیم دائمی متغیرهای شل
برای تنظیم دائمی متغیرهای شل، آنها را در یکی از فایلهای تنظیماتی زیر اضافه کنید:
- فایلهای کاربر:
~/.bashrc
یا~/.zshrc
(برای تنظیمات شخصی).
export MY_VAR="Persistent Value"
- فایلهای سیستمی:
/etc/profile
یا فایلهای داخل/etc/profile.d/
(برای تمام کاربران).
export SYSTEM_VAR="System Value"
انواع متغیرهای شل
- متغیرهای تعریفشده توسط کاربر:
- متغیرهایی که کاربر تعریف کرده و معمولاً در اسکریپتها استفاده میشوند.
FILE_PATH="/home/user/docs"
- متغیرهای پیشفرض شل:
- متغیرهایی که توسط خود شل تعریف شدهاند و اطلاعاتی درباره محیط شل ارائه میدهند.
- مثالها:
$PWD
: دایرکتوری فعلی.$USER
: نام کاربر جاری.$HOME
: مسیر دایرکتوری خانه.$SHELL
: مسیر شل جاری.
- متغیرهای موقعیتی (Positional Variables):
- متغیرهایی که به آرگومانهای ورودی اسکریپت ارجاع میدهند.
#!/bin/bash echo "First argument: $1" echo "Second argument: $2"
- متغیرهای ویژه (Special Variables):
- متغیرهایی با کاربرد خاص:
$?
: وضعیت خروج دستور قبلی.$$
: شناسه فرآیند (PID) شل جاری.$#
: تعداد آرگومانهای ورودی.$@
یا$*
: تمام آرگومانهای ورودی.
- متغیرهایی با کاربرد خاص:
ویرایش متغیرهای شل
برای تغییر مقدار یک متغیر، کافی است مقدار جدیدی به آن اختصاص دهید:
MY_VAR="Initial Value"
echo $MY_VAR # خروجی: Initial Value
MY_VAR="Updated Value"
echo $MY_VAR # خروجی: Updated Value
حذف متغیرهای شل
برای حذف یک متغیر، از دستور unset
استفاده کنید:
unset MY_VAR
echo $MY_VAR # خروجی خالی خواهد بود
استفاده از متغیرها در اسکریپتهای شل
متغیرها ابزار قدرتمندی در اسکریپتنویسی هستند. به مثال زیر توجه کنید:
#!/bin/bash
# تعریف متغیرها
NAME="Linux"
VERSION="5.0"
# استفاده از متغیرها
echo "Welcome to $NAME version $VERSION!"
# محاسبات ساده
NUM1=10
NUM2=20
SUM=$((NUM1 + NUM2))
echo "Sum: $SUM"
نکات و بهترین شیوهها
- استفاده از نامگذاری معنادار:
- نام متغیرها را به گونهای انتخاب کنید که هدف آنها مشخص باشد.
BACKUP_PATH="/home/user/backups"
- استفاده از نقلقولها:
- برای جلوگیری از مشکلات با کاراکترهای خاص.
MESSAGE="Hello, World!" echo "$MESSAGE"
- پیشگیری از بازنویسی تصادفی:
- متغیرها را فقط در محدوده موردنیاز تعریف کنید.
- مدیریت خطاها:
- استفاده از
$?
برای بررسی موفقیت یا شکست دستورات.
mkdir /newdir if [ $? -eq 0 ]; then echo "Directory created successfully!" else echo "Failed to create directory." fi
- استفاده از
نتیجهگیری
متغیرهای شل ابزارهای انعطافپذیری هستند که میتوانند وظایف مختلف را سادهتر و خودکار کنند. یادگیری و مدیریت این متغیرها، به ویژه در اسکریپتنویسی، یکی از مهارتهای ضروری برای هر کاربر لینوکس است.
راهنمای جامع مدیریت فایلهای تنظیماتی شل: .bashrc، .profile و موارد مشابه مقاله
توضیحات کامل
.bashrc
و .profile
نقش کلیدی در شخصیسازی و پیکربندی محیط شل دارند. این فایلها به کاربران اجازه میدهند تا تنظیمات پیشفرض شل را تغییر داده، متغیرهای محیطی را تعریف کرده و دستورات خودکار اجرا کنند. در این مقاله به بررسی کامل این فایلها و نحوه استفاده از آنها میپردازیم.
فایلهای تنظیماتی شل: چرا اهمیت دارند؟
فایلهای تنظیماتی شل به شما این امکان را میدهند که:
- متغیرهای محیطی مانند
PATH
وLANG
را تنظیم کنید. - aliasها و توابع شل را تعریف کنید.
- اسکریپتهایی برای اجرا در هنگام ورود به سیستم یا باز کردن شل تعاملی بنویسید.
آشنایی با فایلهای تنظیماتی اصلی
1. .bashrc
- محل قرارگیری:
~/.bashrc
- کاربرد:
- مخصوص شلهای تعاملی غیر ورود (Non-login Interactive Shells) است.
- معمولاً برای تعریف aliasها، توابع شل و متغیرهای محلی استفاده میشود.
- مثالهایی از تنظیمات رایج در
.bashrc
:# تعریف alias alias ll='ls -la' # تنظیم متغیر محیطی export EDITOR=vim # پیام خوشآمدگویی سفارشی echo "Welcome to your Bash Shell!"
2. .profile
- محل قرارگیری:
~/.profile
- کاربرد:
- مخصوص شلهای ورود (Login Shells) است.
- برای تنظیمات عمومی مانند متغیرهای محیطی یا اجرای اسکریپتهای دیگر استفاده میشود.
- مثال:
تنظیم متغیر PATH export PATH="$HOME/bin:$PATH" # اجرای فایلهای دیگر if [ -f ~/.bashrc ]; then . ~/.bashrc fi
3. .bash_profile
- محل قرارگیری:
~/.bash_profile
- کاربرد:
- مشابه
.profile
، اما مخصوص شل Bash است. - اگر
.bash_profile
موجود باشد، Bash به جای.profile
از آن استفاده میکند.
- مشابه
- مثال:
# تنظیمات اولیه شل export PATH="$HOME/scripts:$PATH"
4. .bash_logout
- محل قرارگیری:
~/.bash_logout
- کاربرد:
- برای اجرای دستورات هنگام خروج از شل (Logout).
- مثال:
# پاکسازی ترمینال هنگام خروج clear
تفاوت بین .bashrc
و .profile
ویژگی | .bashrc |
.profile |
---|---|---|
مورد استفاده | شل تعاملی غیر ورود | شل ورود |
هدف | سفارشیسازی محیط کاری | تنظیم متغیرهای محیطی و اجرای اولیه |
اجرا توسط Bash | فقط برای جلسات غیر ورود | برای جلسات ورود |
ویرایش و مدیریت فایلهای تنظیماتی
1. باز کردن فایلها برای ویرایش
برای ویرایش این فایلها، میتوانید از یک ویرایشگر متن مانند vim
یا nano
استفاده کنید.
nano ~/.bashrc
2. ذخیره تغییرات و اعمال آنها
پس از ویرایش فایلهای تنظیماتی، تغییرات با باز کردن یک جلسه جدید اعمال میشوند. اگر بخواهید فوراً تغییرات را اعمال کنید:
source ~/.bashrc
نمونه تنظیمات کاربردی در فایلهای تنظیماتی
تنظیم aliasها
Aliasها میانبرهایی برای دستورات پیچیده هستند.
alias gs='git status'
alias ll='ls -la --color=auto'
تعریف توابع شل
توابع به شما اجازه میدهند مجموعهای از دستورات را در قالب یک تابع بستهبندی کنید.
function mkcd() {
mkdir -p "$1" && cd "$1"
}
تنظیم متغیرهای محیطی
میتوانید متغیرهای محیطی را برای استفاده در شل و برنامهها تعریف کنید.
export JAVA_HOME="/usr/lib/jvm/java-11-openjdk-amd64"
export PATH="$JAVA_HOME/bin:$PATH"
سفارشیسازی خط فرمان (PS1)
با تنظیم متغیر PS1
، میتوانید قالب خط فرمان خود را تغییر دهید.
export PS1="[\u@\h \W]\$ "
نکات پیشرفته برای مدیریت فایلهای تنظیماتی
1. اجرای شرطی تنظیمات
میتوانید تنظیمات خاصی را بر اساس شرایط مشخص اجرا کنید.
if [ "$(uname)" = "Linux" ]; then
alias ls='ls --color=auto'
else
alias ls='ls -G'
fi
2. بارگذاری فایلهای دیگر
برای تقسیمبندی تنظیمات، میتوانید فایلهای تنظیماتی جداگانه ایجاد کنید و آنها را بارگذاری کنید.
if [ -f ~/.aliases ]; then
. ~/.aliases
fi
3. جلوگیری از اجرای چندباره تنظیمات
برای جلوگیری از اجرای چندباره تنظیمات:
if [ -z "$MY_CUSTOM_VAR" ]; then
export MY_CUSTOM_VAR="configured"
echo "Custom settings loaded."
fi
رفع مشکلات رایج در فایلهای تنظیماتی
- عدم اعمال تغییرات:
- اطمینان حاصل کنید که فایل مربوطه بارگذاری شده است. از
source
استفاده کنید:source ~/.bashrc
- اطمینان حاصل کنید که فایل مربوطه بارگذاری شده است. از
- خطاهای نحوی:
- از دستورات
bash -n
یاsource
برای بررسی خطاهای نحوی استفاده کنید:bash -n ~/.bashrc
- از دستورات
- بارگذاری فایل اشتباه:
- اگر از Bash استفاده میکنید، مطمئن شوید که
.bashrc
یا.bash_profile
به درستی تنظیم شدهاند.
- اگر از Bash استفاده میکنید، مطمئن شوید که
نتیجهگیری
فایلهای تنظیماتی مانند .bashrc
و .profile
ابزارهای قدرتمندی برای سفارشیسازی محیط شل هستند. با استفاده از این فایلها میتوانید محیط کاری خود را متناسب با نیازهایتان پیکربندی کنید و کارایی خود را افزایش دهید.
پارت2: دلخواه سازی و استفاده از محیط shell ویدئو
توضیحات کامل
توی دوره LPIC 1 – Exam 101 زیاد با این محیط کار کردیم. حالا میخایم یه مقدار شخصی سازی بکیم.
انتظار میره در پایان این پارت بتونید: تنظیم بکنید بر اساس نیازهای شخصی خودتون یا کاربرهای دیگه به عنوان مدیر سیستم، متغییر PATH رو بدونید، function تعریف بکنید و همچنین میخایم با اسکلت و ساختار لینوکس آشنا بشیم.
منظور از اسکلت فایلی هستش به اسم skel مثل فولدر دیفالت ویندوزه برای پروفایل های کاربری، هر چیزی که داخلش بذارید، داخل پروفایل همه کاربرها میاد، اما چیزی که قرار هستش اینجا بگیم مفهوم login و non-login shellه.
ببینید ما دو جور شل داریم، یه شلی که شل های لاگین ن. وقتی شما وارد میشید باید یوزرنیم پسوردتون رو وارد کنید تا بتونید لاگین بکنید توش. اما یه چیزی ام داریم به اسم non-login shell.
خب اجازه بدید بریم داخل محیط عملی تا بهتر این موضوع براتون جا بیفته.
راهنمای جامع اصول نوشتن اسکریپتهای شل (Shell Scripts) در لینوکس مقاله
توضیحات کامل
اسکریپت شل چیست؟
اسکریپت شل یک فایل متنی است که شامل دستورات شل (Shell) است و میتواند مانند یک برنامه اجرایی اجرا شود. این اسکریپتها معمولاً با استفاده از شل Bash، Zsh یا دیگر شلها نوشته میشوند.
دلایل استفاده از اسکریپتهای شل
- خودکارسازی وظایف تکراری: اجرای خودکار دستورات پیچیده.
- مدیریت آسان سیستم: تسریع در اجرای وظایف سیستمی.
- انعطافپذیری بالا: قابلیت ترکیب دستورات مختلف.
- کاهش خطا: با اسکریپتنویسی، احتمال اشتباه در اجرای دستی کاهش مییابد.
مراحل نوشتن اسکریپت شل
1. انتخاب و ایجاد فایل اسکریپت
ابتدا یک فایل متنی با پسوند .sh
ایجاد کنید:
touch my_script.sh
2. تعریف شِبانگ (Shebang)
شِبانگ مشخص میکند که اسکریپت باید با کدام شل اجرا شود. برای Bash، از خط زیر در ابتدای فایل استفاده کنید:
#!/bin/bash
3. اضافه کردن دستورات شل
دستورات شل را به فایل اضافه کنید. به عنوان مثال:
#!/bin/bash
echo "Hello, World!"
4. تنظیم مجوز اجرا
برای اجرای اسکریپت، باید به آن مجوز اجرا بدهید:
chmod +x my_script.sh
5. اجرای اسکریپت
اسکریپت را با استفاده از دستور زیر اجرا کنید:
./my_script.sh
اصول نوشتن اسکریپتهای شل حرفهای
1. مستندسازی کد با نظرات
برای خوانایی بیشتر، از نظرات استفاده کنید:
!/bin/bash
# این اسکریپت برای نمایش پیام خوشآمدگویی استفاده میشود
echo "Welcome to Shell Scripting!"
2. استفاده از متغیرها
برای ذخیره مقادیر و استفاده مجدد:
#!/bin/bash
NAME="Ali"
echo "Hello, $NAME!"
3. استفاده از شرطها (Conditionals)
برای تصمیمگیری:
#!/bin/bash
if [ -f /etc/passwd ]; then
echo "File exists."
else
echo "File does not exist."
fi
4. استفاده از حلقهها (Loops)
برای تکرار دستورات:
#!/bin/bash
for i in {1..5}; do
echo "Iteration $i"
done
5. مدیریت ورودی و خروجی
- دریافت ورودی از کاربر:
#!/bin/bash read -p "Enter your name: " NAME echo "Hello, $NAME!"
- ذخیره خروجی یک دستور:
DATE=$(date) echo "Today is $DATE"
6. توابع شل
برای استفاده مجدد از کد:
#!/bin/bash
function greet() {
echo "Hello, $1!"
}
greet "Ali"
7. مدیریت خطاها
- بررسی وضعیت خروجی دستورات:
mkdir /newdir if [ $? -eq 0 ]; then echo "Directory created successfully." else echo "Failed to create directory." fi
ساختارهای پرکاربرد در اسکریپتهای شل
ساختار شرطی if-else
if [ شرط ]; then
دستورات
else
دستورات دیگر
fi
حلقه for
for var in list; do
دستورات
done
حلقه while
while [ شرط ]; do
دستورات
done
سوئیچ case
case $var in
pattern1)
دستورات ;;
pattern2)
دستورات ;;
*)
دستورات پیشفرض ;;
esac
بهترین شیوهها در اسکریپتنویسی شل
- نامگذاری معنادار: از نامهای معنادار برای فایلها، متغیرها و توابع استفاده کنید.
- استفاده از نظرات: توضیح واضح برای بخشهای مختلف اسکریپت.
- مدیریت خطاها: همیشه خطاهای احتمالی را مدیریت کنید.
- سازگاری با شلهای مختلف: از دستورات استاندارد برای سازگاری بیشتر استفاده کنید.
- تست اسکریپت: قبل از استفاده در محیط واقعی، اسکریپت را در محیط آزمایشی اجرا کنید.
نمونه اسکریپت: پشتیبانگیری خودکار
!/bin/bash
# تنظیم متغیرها
SOURCE_DIR="/home/user/documents"
BACKUP_DIR="/home/user/backups"
DATE=$(date +%Y%m%d_%H%M%S)
BACKUP_FILE="$BACKUP_DIR/backup_$DATE.tar.gz"
# بررسی وجود دایرکتوری پشتیبان
if [ ! -d "$BACKUP_DIR" ]; then
mkdir -p "$BACKUP_DIR"
fi
# ایجاد پشتیبان
tar -czf "$BACKUP_FILE" "$SOURCE_DIR"
# بررسی موفقیت عملیات
if [ $? -eq 0 ]; then
echo "Backup created successfully: $BACKUP_FILE"
else
echo "Backup failed."
fi
اشتباهات رایج در اسکریپتنویسی شل
- عدم استفاده از شِبانگ: باعث میشود شل پیشفرض سیستم انتخاب شود که ممکن است ناخواسته باشد.
- مدیریت نکردن خطاها: اجرای دستورات بدون بررسی نتیجه آنها.
- استفاده از نامهای عمومی برای متغیرها: ممکن است با متغیرهای دیگر تداخل ایجاد کند.
- عدم مستندسازی: سخت شدن نگهداری و ویرایش کد.
نتیجهگیری
نوشتن اسکریپتهای شل یکی از مهارتهای ضروری برای مدیریت لینوکس و خودکارسازی وظایف است. با تسلط بر اصول معرفیشده در این مقاله، میتوانید اسکریپتهای حرفهای و کارآمدی ایجاد کنید. اگر تازهکار هستید، از پروژههای کوچک شروع کنید و به تدریج به موضوعات پیچیدهتر بپردازید.
مفاهیم استاندارد ورودی، خروجی و مدیریت خطاها در لینوکس (stdin, stdout, stderr) مقاله
توضیحات کامل
- استاندارد ورودی (Standard Input یا stdin)
- استاندارد خروجی (Standard Output یا stdout)
- استاندارد خطا (Standard Error یا stderr)
این مفاهیم برای ارتباط بین برنامهها و مدیریت دادهها ضروری هستند. در این مقاله، به بررسی کامل این جریانها، کاربرد آنها و نحوه مدیریتشان با دستورات و اسکریپتهای شل میپردازیم.
تعریف جریانهای استاندارد
1. استاندارد ورودی (stdin)
جریانی است که دادهها را به برنامه ارسال میکند.
- ورودی پیشفرض معمولاً صفحهکلید است.
- فایل توصیفی آن مقدار 0 دارد.
- نمونه کاربرد: استفاده از دستور
read
برای دریافت داده از کاربر.read name echo "Your name is $name"
2. استاندارد خروجی (stdout)
جریانی است که خروجی عادی یک برنامه را ارسال میکند.
- خروجی پیشفرض معمولاً ترمینال است.
- فایل توصیفی آن مقدار 1 دارد.
- نمونه کاربرد:
echo "Hello, World!"
3. استاندارد خطا (stderr)
جریانی است که پیامهای خطای برنامه را ارسال میکند.
- خروجی پیشفرض نیز ترمینال است.
- فایل توصیفی آن مقدار 2 دارد.
- نمونه کاربرد:
ls /nonexistent_directory
مدیریت جریانها: تغییر مسیر (Redirection)
در لینوکس، میتوانید جریانهای دادهای را به فایلها یا دستورات دیگر هدایت کنید.
1. تغییر مسیر stdout
برای ذخیره خروجی عادی در یک فایل:
echo "This is stdout" > output.txt
2. تغییر مسیر stderr
برای ذخیره پیامهای خطا در یک فایل:
ls /nonexistent_directory 2> error.log
3. ترکیب stdout و stderr
برای ذخیره همزمان خروجی و خطاها:
command > all_output.txt 2>&1
4. ارسال ورودی به stdin
برای ارسال دادهها به stdin از فایل یا دستور:
cat < input.txt
عملیات پیشرفته با جریانهای دادهای
1. استفاده از tee
برای همزمانی خروجی
دستور tee
خروجی stdout را در یک فایل ذخیره میکند و همزمان در ترمینال نمایش میدهد.
echo "Hello, Linux!" | tee output.txt
2. فیلتر کردن خروجی با دستورات دیگر
میتوانید خروجی یک دستور را به ورودی دستور دیگر هدایت کنید.
ls | grep "file"
3. نادیده گرفتن stdout یا stderr
- نادیده گرفتن stdout:
command > /dev/null
- نادیده گرفتن stderr:
command 2> /dev/null
- نادیده گرفتن هر دو:
command &> /dev/null
4. ارسال جریانها به فایلها
- ذخیره stdout و stderr در فایلهای جداگانه:
command > output.log 2> error.log
- ادغام و ذخیره در یک فایل:
command > combined.log 2>&1
مدیریت خطاها در اسکریپتهای شل
1. بررسی وضعیت خروجی (Exit Status)
هر دستور در لینوکس یک کد خروجی تولید میکند:
- 0: موفقیتآمیز.
- غیر از 0: خطا.
مثال:
mkdir /new_directory
if [ $? -eq 0 ]; then
echo "Directory created successfully."
else
echo "Failed to create directory." >&2
fi
2. استفاده از set -e
برای توقف اجرای اسکریپت در صورت خطا
با فعال کردن set -e
، اسکریپت در اولین خطا متوقف میشود.
#!/bin/bash
set -e
cp file1.txt file2.txt
rm file1.txt
3. مدیریت خطاها با trap
برای اجرای دستورات خاص در هنگام وقوع خطا:
#!/bin/bash
trap 'echo "An error occurred!"' ERR
cp non_existent_file.txt /backup/
تفاوت stdin، stdout و stderr در یک نگاه
ویژگی | stdin | stdout | stderr |
---|---|---|---|
نوع جریان | ورودی | خروجی عادی | خروجی خطا |
فایل توصیفی | 0 | 1 | 2 |
خروجی پیشفرض | صفحهکلید | ترمینال | ترمینال |
تغییر مسیر | < |
> |
2> |
نمونه اسکریپت عملی برای مدیریت جریانها
اسکریپت: شمارش خطوط یک فایل و مدیریت خطاها
!/bin/bash
# بررسی وجود فایل ورودی
if [ ! -f "$1" ]; then
echo "Error: File not found!" >&2
exit 1
fi
# شمارش خطوط فایل
LINE_COUNT=$(wc -l < "$1")
echo "The file $1 has $LINE_COUNT lines."
نحوه اجرا
chmod +x count_lines.sh
./count_lines.sh myfile.txt
بهترین شیوهها در مدیریت stdin، stdout و stderr
- از تغییر مسیر برای ذخیره یا فیلتر کردن دادهها استفاده کنید.
- همواره پیامهای خطا را به stderr هدایت کنید:
echo "Error: Something went wrong!" >&2
- کدهای خروجی را بررسی کنید تا از موفقیت یا شکست دستورات مطمئن شوید.
- خروجیهای مهم را مستندسازی و ذخیره کنید.
- از
/dev/null
برای حذف خروجیهای غیرضروری استفاده کنید.
نتیجهگیری
مفاهیم stdin، stdout و stderr ابزارهایی قدرتمند برای مدیریت جریانهای دادهای در لینوکس هستند. با درک و استفاده صحیح از این مفاهیم، میتوانید اسکریپتهای شل حرفهای بنویسید و وظایف پیچیده را به راحتی خودکار کنید.
پارت 3: دلخواه سازی یا نوشتن اسکریپت های ساده ویدئو
توضیحات کامل
مقاله مقاله
توضیحات کامل
درخواست مشاوره
برای کسب اطلاعات بیشتر درباره این دوره درخواست مشاوره خود را ارسال کنید و یا با ما در تماس باشید.
درخواست مشاورهدوره های مرتبط
کارگاه آموزشی لینوکس (Essentials, LPIC-1)
دوره 100% عملی و کاربردی تدریس شده
پک آموزشی FreeNAS
دوره 100% عملی و کاربردی تدریس شده
دوره آموزشی امنیت سرورهای لینوکسی lpic 3-303
دوره 100% عملی و کاربردی تدریس شده
دوره آموزشی 202 Linux LPIC-2
دوره 100% عملی و کاربردی تدریس شده
امتیاز دانشجویان دوره
نظرات
تنها اشخاصی که این محصول را خریداری کرده اند و وارد سایت شده اند می توانند در مورد این محصول بازبینی ارسال کنند.
1,000,000 تومان قیمت اصلی 1,000,000 تومان بود.475,000 تومانقیمت فعلی 475,000 تومان است.
pedram.sima1988( دانشجوی دوره )
فایل ها قابل دانلود نیستند
eisa(مدیریت)
سلام مهندس اصلاح شد