مریم حیات رمضانی
کارشناس شبکه های مایکروسافت و پایگاه داده

کاملترین مرجع آموزش دستورات لینوکس با راهنما و مثالهای کاربردی

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

دوره های شبکه، برنامه نویسی، مجازی سازی، امنیت، نفوذ و ... با برترین های ایران

اگر بخواهیم این را با یک مثال به شما نشان دهیم به حالتی فکر کنید که شما می خواهید با یک فرد خارجی صحبت کنید ، اما قادر به صحبت کردن به زبان وی نمی باشد ، به همین دلیل از یک فرد آشنا به هر دو زبان استفاده می کنید این فرد درست است که کار شما را راحت می کند اما از طرفی سرعت ارتباط شما را با طرف مقابل پایین می آورد. این دقیقا مانند همان کاری است که محیط گرافیکی برای ما انجام می دهد ، شما با استفاده از دستورات خط فرمان می توانید سریعتر و بهتر با سیستم عامل ارتباط برقرار کنید.

در دستورات لینوکس تعریف شل (Shell) چیست؟

اگر کمی با مفاهیم سیستم عامل لینوکس آشنایی داشته باشید حتما با واژه Shell روبرو شده اید ، اما این Shell چیست که عالم همه دیوانه اوست ؟ در تمامی مقالات و کتابهایی که در خصوص لینوکس خواندم صرفا به بررسی انواع Shell پرداخته شده و به ماهیت اصلی آن اشاره ای نشده است  به زبان ساده Shell نرم افزاری است که دستورات وارد شده توسط کاربر را برای سیستم عامل ترجمه می کند. shell یک نوع رابط کاربری با نرم افزارهای سیستمی و Kernel است . نرم افزارها انواع مختلفی دارند و به همین تناسب Shell ها نیز انواع مختلفی دارند

آموزش لینوکس

در هر یک از انواع Shell دستوراتی تعبیه شده است که برای سیستم عامل دارای مفاهیم خاصی می باشند ، برای مثال ممکن است دستور cd در یکی از Shell ها برای تغییر دایرکتوری و در یکی دیگر از Shell ها به معنای دیگری تفسیر شود.Shell ها یک روش برقراری ارتباط است ، اگر فرض کنیم Shell لهجه در زبان فارسی باشد و Command Line زبان فارسی باشد ، هر کسی با هر لهجه ( نه گویش ) کردی یا لری یا قزوینی با یک نفر فارس صحبت کند ، می توانند حرف های هم را درک کنند. اما طبیعی است که هر چقدر لهجه مورد نظر به زبان فارسی نزدیک تر باشد

درک شخص فارسی زبان نیز بهتر خواهد بود. هر چقدر زبان Shell مورد استفاده توسط کاربر برای وی آسانتر و ساده تر باشد ، شخص می تواند بصورت ساده تر و راحت تری با سیستم عامل ارتباط برقرار کند.در لینوکس ده ها و یا بیشتر از آن Shell وجود دارد ، اما مهمترین این Shell ها به شکل زیر طبقه بندی شده اند که بر اساس اولویت در ادامه تشریح می شوند:


  1. bash : این نوع Shell مخفف کلمه Bourne Again Shell یا همان bash می باشد ، در سیستم عامل UNIX یک Shell به نام Bourne Shell وجود داشته است که این Shell جدید بهبود یافته همین Shell می باشد. این Shell به عنوان Shell پیش فرض بیشتر توزیع های لینوکس مورد استفاده قرار می گیرد. شما و اکثر دوستانی که می خواهند لینوکس را یاد بگیرند از این نوع Shell استفاده می کنند.

  2. bsh : این نوع Shell که مخفف کلمه Bourne Shell می باشد ، همانطور که در قسمت قبلی اشاره شد در سیستم عامل UNIX بیشتر مورد استفاده قرار می گیرد و کمتر دیده شده است که در لینوکس از این نوع Shell استفاده شود. اگر از این نوع Shell در لینوکس استفاده شود ، بیشتر به عنوان یک لینک به Shell اصلی و پیشفرض لینوکس که bash می باشد اشاره می کند.

  3. tcsh : این shell بر اساس یک shell قدیمی به نام C shell یا csh نوشته شده است این نوع shell در برخی از نسخه های در پیت لینوکس به عنوان shell پیشفرض وجود دارد، اما در هیچ یک از توزیع های اصلی لینوکس به عنوان shell پیشفرض قرار ندارد. همچنین این نوع shell شباهت زیادی به bash دارد. اما برخی از جزئیات عملیاتی آنها با یکدیگر تفاوت دارد برای مثال شما همانطوری که در :tcsh متغیر های محیطی یا environment variables تعریف می کنید در bash این کارا انجام نمی دهید.

  4. csh : این shell همانطور که از نامش پیداست بر اساس ساختار زبان برنامه نویسی C ایجاد شده است و کاربرد بسیار کمی در لینوکس دارد اگر کاربری با shell های csh و tcsh آشنایی داشته باشد می تواند استفاده بهینه ای از لینوکس بکند، این shell محبوب ترین shell برای برنامه نویسان و کسانی می باشد که shell scripting انجام می دهند.

  5. ksh : این shell بر وپایه و اساس Bourne shell به وجود آمده است و در واقع بهبود یافته bsh می باشد. یکی از مهمترین امکاناتی که در این shell استفاده شده است ، قدرت برنامه نویسی بهتر نسبت به bsh می باشد ،ن البته در برخی مطالب آمده است که ksh بهبود یافته دو shell می باشد ، یعنی Cshell و bsh ، به همین دلیل بر cshell در برخی اوقات ترجیح داده می شود.

  6. zsh : این shell از ksh هم پیشرفته تر بوده و قابلیت های اسکریپت نویسی خیلی خوبی را به کاربران ارائه می دهد. سازگاری و هماهنگی خیلی خوب این shell با bash یکی دیگر از ویژگیهای این shell می باشد . از دیگر قابلیت های این shell می توان به سرعت بهتر ، قدرت تکمیل کردن دستورات بهتر یا TAB Completion و دلخواه سازی بهتر برای کاربر اشاره کرد.

اینها برخی از انواع Shell های موجود در لینوکس هستند و تنوع زیادی در این رابط کاربری در لینوکس وجود دارد. همانطوری که اشاره شد بصورت پیشفرض bash به عنوان shell در لینوکس های معمول مورد استفاده قرار می گیرد ، البته با توجه به توزیع های متنوعی که از لینوکس وجود دارد این مورد ممکن است تغییر کند ، شما همه چیز را در لینوکس می توانید دستکاری کنید ، همه چیز در این سیستم عامل قابل دسترسی و دستکاری است .

از جمله اینکه می توانید Shell پیشفرض را عوض کرده و Shell مورد نظر خودتان را جایگزین آن کنید و یا حتی خود یک Shell جدید برای لینوکس بنویسید !!! در ادامه مقالات اگر عمری باقی باشد روش عوض کردن Shell پیشفرض لینوکس را به شما آموزش خواهیم داد ، اما تا اینجا فراموش نکنید که کلیه مطالب و دستوراتی که ما در این سری مقالات استفاده می کنیم از نوع دستورات bash خواهد بود.

روش استفاده از دستورات لینوکس در Shell لینوکس چیست؟

تا اینجا با مفهوم Shell و انواع آن آشنایی پیدا کردید ، اما چگونه از این Shell ها استفاده کنیم ؟ اگر با سیستم عامل های دیگری که از دستورات خط فرمان به عنوان رابط کاربری استفاده می کنند مانند DOS یا MAC استفاده کرده باشید ، استفاده از Shell های لینوکس برای شما ساده تر خواهد بود.

در اینجا جا دارد یادی بکنیم از دوران هنرستان که در هنرستان فنی و حرفه ای شهدای سایپای کرج من و آقای احمدی در یک کلاس بودیم و سیستم عامل بروزی که در آنجا وجود داشت DOS 6 بود ، بعد ها با تلاش بسیار و در قالب استفاده از حداقل 15 عدد فلاپی دیسک موفق شدیم سیستم عامل جالب و زیبای ویندوز 3 و یک را بر روی DOS نصب کنیم . ای جوانی کجایی که یادت به خیر . خوب زیاد ناستالوجیک نشویم و به سراغ ادامه درس برویم.

آموزش LPIC 1

طبیعی است کسانی که با DOS کار کرده اند بهتر می توانند از لینوکس استفاده کنند زیرا بسیاری از دستوراتی که در این دو نوع سیستم عامل وجود دارد از یک الگو طبعیت می کنند.برای استفاده از Shell در لینوکس بعد از ورود به سیستم عامل کافیست قسمتی به نام Terminal را باز کرده تا بتوانید دستورات خود را در آن وارد کنید .

دستوراتی که در ادامه مشاهده خواهید کرد در همین قسمت Terminal اجرا خواهند شد. دستورات در لینوکس بصورت کلی به دو قسمت طبقه بندی می شوند ، دستورات داخلی و دستورات خارجی ، دستورات داخلی ، دستوراتی هستند که در خود Shell وجود دارند و با نصب سیستم عامل لینوکس این دستورات قابل اجرا می باشند اما دستورات خارجی دستوراتی هستند که مثل برنامه هایی می باشند که بر روی سیستم عامل نصب می شوند ، این دستورات بر روی سیستم عامل نصب شده و بعد از آن قابل اجرا می باشند.

وارد شدن به Terminal در لینوکس

برای اینکه درک بهتری از این قضیه داشته باشید مثالی از ویندوز را برای شما مطرح می کنم ، قبل از اینکه شما سیستم عامل ویندوز سرور را تبدیل به دامین کنترلر کنید قادر به استفاده از دستور ntdsutil نخواهید بود ، این دستور یک دستور خارجی محسوب می شود ، اما در همین حین شما همیشه قادر به استفاده از دستور ping یا ipconfig خواهید بود 

این دستورات را می توان دستورات داخلی نامید. استفاده از دستورات در لینوکس دارای یک سری ترفند ها و ظرافت ها می باشد . برای مثال برای نوشتن دستورات بسیار طولانی روش های میانبری وجود دارد که کار شما را ساده می کنید ، در ادامه در خصوص این ترفند ها با هم صحبت خواهیم کرد.

در این سری مقالات تا حدود زیادی با دستورات موجود در لینوکس آشنا خواهید شد ، اما در ابتدا با چند دستور رایج و البته داخلی Shell آشنابشوید تا بتوانید درک بهتری از روش کارکرد سیستم عامل لینوکس داشته باشید ، توجه کنید که اکثر دستورات داخلی در لینوکس و بیشتر Shell های آن یکسان است

اما خوب ، در برخی از توزیع ها ممکن است تفاوت هایی با هم داشته باشد ، برای شروع چند دستور معروف و شناخته شده لینوکس را با هم بررسی و کار می کنیم ، شما می توانید در همین لحظه یک Terminal در لینوکس باز کنید و دستورات را پشت سر هم تست کنید :

  • تعویض دایرکتوری در حال کار  همانطور که اشاره کردیم همه چیز در لینوکس در قالب فایل می باشد و هر فایل هم طبیعتا در داخل یک پوشه قرار دارد ، زمانیکه شما از یک Shell استفاده می کنید ، در واقع شما با در یک پوشه قرار دارید . اگر شما در حالت عادی در Shell فایلی را باز کنید این فایل در همان پوشه قرار دارد و Shell در آن پوشه به دنبال فایل مورد نظر می گردد. با استفاده از دستوری به نام cd که مخفف دو کلمه change directory می باشد ، شما می توانید دایرکتوری مورد نظر خود را با وارد کردن مسیر آن باز کنید. همچنین اگر می خواهید به home directory برگردید می توانید از یک shortcut به نام تیلدا یا ~ استفاده کنید ، با وارد کردن (~ ) در خط فرمان ، پوشه شما به home directory تغییر خواهد کرد ، به مثال زیر که در shell اجرا شده است توجه کنید :
دستورات مقدماتی لینوکس

تصویر اجرای دستور cd و علامت تیلدا ~

  • مشاهده آدرس دایرکتوری در حال کار : با استفاده از دستور pwd شما مسیری که در آن قرار دارید را مطابق نتیجه زیر مشاهده می کنید :
دستورات مقدماتی لینوکس

تصویر اجرای دستور pwd و نتیجه آن

  • نمایش یک خط متن : با استفاده از دستوری به نام echo شما می توانید به سیستم بگویید که یک پیغام مشخص را نمایش دهد ، برای مثال با اجرای دستور echo chetori پیام chetori در صفحه به شما نمایش داده خواهد شد ، خوب ممکن است با خود بگویید مگه آدم خل و چله که دستور رو وارد کنه که یک پیغام به خودش بده سیستم ؟ در حقیقت کاربرد این دستور بیشتر در بحث اسکریپت نویسی ها استفاده می شود که شما می خواهید در صورت بروز یک نتیجه خاص در اسکریپت ، پیامی در صفحه نمایش نشان داده شود . مشابه همین دستور در ویندوز هم وجود دارد که بیشتر در بحث نوشتن batch file ها کاربرد دارد.
دستورات مقدماتی لینوکس

تصویر اجرای دستور echo chettori

  • اجرای یک برنامه : با استفاده از دستور exec شما می توانید برنامه مورد نظر خود را توسط سیستم عامل اجرا کنید. قالب اجرای این دستور به این شکل است که دستور exec و در جلوی آن نام برنامه مورد نظر قرار می گیرد. برای مثال برای اجرا برنامه ای به نام unity شما باید در خط فرمان دستور exec unity را وارد کنید.
  • نمایش زمان اجرای یک دستور : با استفاده از دستور time و وارد کردن دستور مورد نظر خود ، شما می توانید مدت زمانی که اجرای دستور شما توسط سیستم استفاده می شود را مشاهده کنید. برای مثال با وارد کردن دستور time ls شما می توانید مدت زمانی که اجرای دستور ls زمان می برد را مشاهده کنید. نتیجه اجرا این دستور دارای 3 خروجی زمان می باشد . real یا total مجموعه زمانی هستند که CPU و سیستم برای اجرای دستور استفاده کرده است. دو تای بعدی که user و system می باشند زمانی اجرای فرآیند بصورت تفکیک شده توسط CPU و system می باشد که معمولا این زمان از زمان real کمتر است.
دستورات مقدماتی لینوکس

تصویر اجرا دستور time ls

خارج شدن از محیط Shell : برای خارج شدن از محیط shell شما می توانید از دو دستور exit و logout استفاده کنید. با وارد کردن دستور exit تمامی shell های باز سیستم بسته خواهند شد ، اما با وارد کردن دستور logout تنها shell هایی بسته خواهند شد که در هنگام ورود به سیستم یا login توسط کاربر باز شده اند .

شما با استفاده از terminal لینوکس می توانید shell هایی را با نام های کاربری دیگر باز کنید ، چیزی که تقریبا شبیه مفهوم secondary logon service در ویندوز است . این سرویس در ویندوز امکان اجرا نرم افزار با دسترسی های سایر کاربران بدون نیاز به logoff شدن و login شدن به سیستم را می دهد.

برخی اوقات پیش می آید که دستورات داخلی و دستورات خارجی یکسانی در سیستم عامل موجود هستند که باعث بروز تداخل در بین این دستورات که کاربرد یکسانی هم دارند می شوند. توجه کنید که این دستورات خارجی بر روی همه سیستم عامل ها نصب نشده اند و در برخی وجود دارند.

نکته مهم در اینجاست که اگر در این حالت دستوری با نام یکسان وجود داشته باشد و شما آن را اجرا کنید ،اولویت سیستم با دستورات داخلی است و دستوری در نهایت اجرا می شود که برای shell به عنوان دستور داخلی معرفی شده باشد.

اگر می خواهید دستور خارجی را اجرا کنید بایستی آدرس دقیق محل قرار گیری دستور خارجی را وارد کنید تا دستور خارجی به جای داخلی اجرا شود ، برای مثال اگر دستور خارجی به شکل pwd دارید ، با اجرای pwd دستور داخلی اجرا می شود اما اگر دقیقا می خواهید دستور خارجی اجرا شود بایستی آن را به شکل binpwd وارد کنید.

زمانیکه شما دستوری را وارد می کنید که توسط سیستم عامل ناشناخته است ، سیستم عامل بصورت خودکار به دنبال نرم افزاری می گردد که در پوشه هایی که موجود است قرار داشته باشد و همنام دستوری باشد که شما آن را اجرا کرده اید.

به محض وارد شدن هر دستور در shell سیستم عامل در PATH یا مسیرهایی که برای جستجوی دستورات برای آن تعیین شده است به دنبال دستور می گردد

این PATH را شما می توانید بصورت دلخواه تغییر دهید ، در اصطلاح به این PATH که قابل تنظیم می باشد که قابل تنظیم می باشد PATH Environment Variable گفته می شود.

در ادامه این سری مقالات به امید خدا در خصوص اعمال تغییرات بر روی shell لینوکس و همچنین environment variables صحبت خواهیم کرد.

در لینوکس هر برنامه ای که بخواهد اجرا شود بایستی توسط سیستم یا برنامه نویس به عنوان فایل اجرایی یا executable معرفی شود. این کار آنقدرها هم سخت نیست ، همانطور که گفتیم همه چیز در لینوکس فایل است ،

برای اینکه یک فایل را به عنوان یک فایل اجرایی به سیستم عامل معرفی کنید کافیست یک بیت در فایل به نام execute bit را تغییر بدهید. بصورت پیشفرض برنامه های install ای بر روی سیستم به عنوان executable شناخته می شوند اما اگر می خواهید فایلی را بصورت دستی executable کنید کافیست آن را با استفاده از دستور chmod که بعدها در خصوص آن توضیحاتی ارائه می کنیم ، تغییر دهید.

ترفند های استفاده از دستورات Shell در لینوکس

تا اینجا متوجه شدید که هدف اصلی ما از استفاده و آموزش لینوکس استفاده از امکاناتی است که توسط دستورات خط فرمان اجرا می شوند، اما خوب طبیعی است که هر کاربری توانایی حفظ کردن کلیه دستورات موجود در سیستم عامل لینوکس را ندارد و یا ممکن است در هنگام وارد کردن دستور دارای اشتباه تایپی باشد و دستور به درستی اجرا نشود

برای اینکه چنین مشکلاتی در استفاده از این سیستم عامل پیش نیاید ، در بیشتر Shell ها ترفند هایی برای استفاده درست از دستورات تعبیه شده است که کار شما را به عنوان کاربر آسان می کند ، در ادامه برخی از مهمترین این ترفند ها را معرفی می کنیم :

  • تکمیل کردن دستور یا Command Completion : با استفاده از وارد کردن قسمتی از دستور و فشردن کلید TAB لینوکس بصورت خودکار دستور مورد نظر را تکمیل می کند ، اگر تعداد دستوراتی که فسمت اول آنها با دستور شما مشابه است زیاد باشد ، دستورات را به شما نمایش می دهد تا خودتان آنها را انتخاب کنید. ممکن است برخی از توزیع ها در هنگام پیدا کردن دستور مورد نظر از خود صدای beep در بیاورند. توجه کنید که در برخی از توزیع های قدیمی لینوکس امکان command completion وجود نداشته است. در سیستم عامل ویندوز نیز ، بعد از معرفی PowerShell چنین امکانی در shell ویندوز دیده شده است که اصلا تابلو نیست از کجا گرفته شده است.

  • سابقه دستورات یا Shell History : هر دستوری که در Terminal لینوکس وارد کنید در حافظه موقت آن در قالب یک فایل temp نگهداری می شود ، اگر چندین دستور را پشت سر هم وارد کرده اید و می خواهید یکی از دستوارتی که قبلا اجرا کرده اید را مجددا اجرا کنید ، کافیست با استفاده از کلید های جهت دار بالا و پایین دستوراتی که در shell وارد شده اند را مشاهده کنید و آن را اجرا کنید. با استفاده از کلید های Ctrl+P و Ctrl+N می توانید دستورات را دو تا دوتا بالا و پایین بروید.

  • جستجو در دستورات وارد شده : با استفاده از کلید های ترکیبی Ctrl+R شما می توانید در دستوراتی که قبلا وارد شده است جستجو کرده و کلمه کلیدی که مد نظر خود می باشد و در دستورات قبلی وجود داشته است را پیدا کرده و از آن استفاده کنید. مهم نیست این کلمه در ابتدای دستور یا در انتها یا در وسط آن باشد ، در هر صورت جستجو در کل دستورات صورت می گیرد.

  • حرکت در بین خطوط دستورات : با استفاده از کلید های ترکیبی Ctrl+A می توانید به ابتدای دستور بیایید ، با استفاده از کلیدهای ترکیبی Ctrl+E می توانید به انتهای متن وارد شده بروید . بسته به نوع Shell دستورات زیادی برای جابجایی در بین خطوط متن وارد شده وجود دارد.

  • حذف قسمتی از متن دستور : با استفاده از کلید ترکیبی Ctrl+D یا کلید Delete شما می توانید یک کاراکتری که کرسر زیر آن قرار گرفته است را حذف کنید. طبیعی است که با استفاده از کلید Backspace می توانید کاراکتر قبل از کرسر را حذف کنید. با استفاده از فشردن کلید ترکیبی Ctrl+K از محلی که کرسر قرار دارد تا انتهای متن حذف خواهد شد و همچنین ترکیب کلیدهای Ctrl+Backspace می تواند از محل فعلی کرسر تا ابتدای دستور را حذف کند.

توجه کنید که دستوراتی که ذکر کردیم برای استفاده اولیه از امکانات لینوکس می باشد و هر کدام ممکن است دارای امکانات مختلفی باشند که با استفاده از سویچ هایی که در آنها تعبیه شده اند کار می کنند

اما باید توجه کنید که کار کردن با این سویج ها در وهله اول کار درستی نیست ، بهتر است به مرور زمان و بر حسب استفاده موردی این سویچ ها را یاد بگیرید .دستورات همانطور که اشاره کردیم ممکن است از یک نوع Shell تا نوع دیگی متفاوت باشند بنابراین برای یادگیری این دستورات بایستی از راهنماهایی که برای shell وجود دارند استفاده کنید

که با استفاده از دستور man که مخفف کلمه manual است می توانید اینکار را انجام دهید. فراموش نکنید که کلیه ساختار دستورات در لینوکس بر خلاف سیستم عامل ویندوز در اصطلاح Case Sensitive هستند ، یعنی به حروف بزرگ و کوچک حساس هستند.

در لینوکس GUI هایی (رابط های گرافیکی کاربری ) وجود دارند که در آن می توان به فایل مورد نظر به وسیله ی موس اشاره کرده ، کلیک و درگ کنیم والبته می توانیم بدون خواندن تعداد زیادی از داکیومنت ها کار مورد نظر خود را انجام دهیم .اما محیط لینوکس سنتی، CLI یا رابط خط فرمانی نامیده می شود و در اینجا باید با تایپ دستورات ، آنچه که قصد انجام آن را داریم به اطلاع کامپیوتر برسانیم .

این روش سریعتر و قدرتمند تر است اما نیازمند به دریافتن دستورات مورد نظرمان است .باوجوداینکه تنوع بسیاری در لینوکس وجود دارد ، تقریبا همه ی آنها از دستورات پ مشابهی استفاده می کنند که می توانند از طریق رابط خط فرمانی Terminal به کار گرفته شوند. همچنین رابط های کاربری گرافیکی(GUI) بسیاری نیز موجود است اما هر یک از آنها متفاوت از دیگری کار می کنند و استاندارد کمی بین آنها وجود دارد . کاربران با تجربه ای که با انواع مختلف لینوکس کار کرده اند در یافتند که بهترین راه یادگیری دستورات است که می توانند در تمامی انواع لینوکس مورد استفاده قرار گیرند.

مسلما برای تمامی کاربران تازه کاری که قصد استفاده از لینوکس را دارند به کار بستن این دستورات ، غیر ملموس است با این حال باید به این نکته هم اشاره کنیم که حتی کاربران با تجربه ی لینوکس هم اغلب اوقات دستورات را به خاطر نداشته و آنها را در Terminal کپی می کنند . مهم است که بدانیم چگونه از خط فرمان ترمینال استفاده کنیم و هر شخصی که بتواند تایپ کردن ، پاک کردن ، Cut وPaste کردن را به گونه ای منظم و مدیریت شده انجام دهد قطعا قادر به استفاده از خط فرمان Terminal نیز خواهد بود . یکی از راههای دسترسی به terminal استفاده از shortcut کیبورد Ctrl+Alt+T است (آسان ترین راه :D).با زدن این کلید ترکیبی خط فرمان ترمینال همانند تصویر زیر روی صفحه دسکتاپ نمایش داده خواهد شد.

وب سایت توسینسو

در این مرحله به توضیح command های مورد استفاده می پردازیم :

دستور لینوکس برای بالا بردن سطح دسترسی sudo

بسیاری از دستوراتی که در اینجا به توضیح آنها خواهیم پرداخت نیاز دارند که sudo به اول آنها اضافه شود .این دستور سطح دسترسی مدیریتی کاربر Root را به طور موقت برای ما فراهم می آورد که این سطح از دسترسی برای زمانی لازم است که ما که با دایرکتوری ها و یا فایل هایی که متعلق به حساب کاربری ما نیست کار می کنیم . به طور کلی در لینوکس یک کاربر مدیر به نام Root وجود دارد که معادل Root در ویندوز گروه administrator می باشد .این کاربر مدیر یا به عبارتی Super User قادر به انجام هر کاری می باشد

در نتیجه انجام کارهای معمول روزانه بواسطه ی آن ممکن است خطر ناک باشد چرا که تایپ یک دستور اشتباه به وسیله ی این کاربر ممکن است منجر به بوجود آمدن خرابی و مشکل در سیستم شود . در حالت ایده آل یک کاربر تنها نیازمند دسترسی برای کار در دست اجرا می باشد .در برخی موارد استفاده از Root ضروری است اما در بیشتر اوقات کارها با استفاده از یوزر عادی پیش خواهد رفت .استفاده از Sudo با هر دستوری نیازمند وارد کردن پسورد کاربر است.تنها کاربرانی با دسترسی sudo یا administrative قادر به استفاده از این دستور می باشند .

دستورات لینوکس مربوط به فایل و دایرکتوری

  • نماد تیلدا یا همان (~) برای دایرکتوری home در نظر گرفته شده است . اگر شما یک کاربر هستید پس ~ بیانگر مسیر home//user// برای حساب کاربری شما می باشد .
  • Pwd: این دستور باعث می شود که دریابیم در حال حاضر در کدام دایرکتوری یا پوشه قرار داریم بنابراین اگر در سیستم گم شدیم و ندانیم در کدام بخش قرار داریم تایپ این دستور ما را از مکان فعلیمان مطلع خواهد ساخت .به عنوان مثال زمانی که در دایرکتوری desktop باشیم دستور pwd خروجی "Desktop/~" را برای ما نمایش خواهد داد. pwd مخفف عبارت Print Working Directory می باشد .
  • Ls: این دستور لیست فایل های دایرکتوری جاری را نمایش می دهد . با استفاده از این اپشن می توان سایز فایل ها ، زمانی که فایل ساخته شده و سطوح دسترسی فایل را مشاهده کرد . یک نمونه از این دستور ls ~ می باشد که فایل هایی را که در دایرکتوری home قرار دارند نمایش می دهد.
  • Cd: دستور cd اجازه تعویض دایرکتوری را به ما خواهد داد وقتی که یک ترمینال را باز کرده ایم در واقع در دایرکتوری home قرار داریم برای جابه جایی میان فایل سیستم ها باید از دستور cd استفاده کنیم بعنوان مثال :
    1. برای رفتن به دایرکتوری یا پوشه root از دستور "/cd"استفاده می کنیم .
    2. برای رفتن به پوشه ی home خود از دستور “cd” و یا “~ cd” استفاده می کنیم .
    3. بر ای حرکت در سطوح دایرکتوری ها از دستور “.. cd” استفاده می کنیم .
    4. برای برگشتن به دایرکتوری یا پوشه ی قبلی از دستور “cd -“ استفاده می کنیم .
    5. برای رفتن به سطوح مختلفی از دایرکتوری به یکباره ، ابتدا باید مسیر کامل دایرکتوری را که قصد رجوع به آن را داریم ، مشخص کنیم .به عنوان مثال دستور “cd ~/Desktop” موجب انتقال کاربر ما به زیر پوشه ی Desktop که دورن پوشه ی home قرار دارد ، می شود .
  • Cp: دستور cp یک کپی از فایل برای ما می سازد به عنوان مثال دستور “cp file itpro” دقیقا یک کپی از محتوای فایل با نام itpro ایجاد کرده اما فایل "file" همچنان وجود خواهد داشت . برای کپی کردن دایرکتوری ها نیز باید از دستور “cp -r” استفاده کرد برای نمونه دستور “cp -r devhandler itpro” یک کپی از پوشه ی devhandler با تمامی محتوایش را با نام itpro ایجاد خواهد کرد . باید در نظر داشته باشیم که کپی دایرکتوری ها به گونه ای است که از پوشه و تمامی فایلها و زیر پوشه و همچنین ار تمامی محتویات زیر پوشه ها کپی می گیرد و این سلسله مراتب کپی برداری از محتوای دایرکتوری ها در استفاده از این دستور حفظ خواهد شد.اصطلاحا در زبان انگلیسی این ساختار از دایرکتوری را recursively یا بازگشتی گویند که r نیز در دستور ذکر شده به این کلمه اشاره می کند.

  • Mv:

    دستور mv یک فایل را به مکانی دیگر منتقل کرده و یا یک فایل را تغییر نام می دهد .مثلا دستور “mv file itpro” فایل موجود با نام “file” را به “itpro” تغییر نام می دهد . اما دستور “mv itpro ~/desktop” فایل “itpro” را به دایرکتوری desktop بدون تغییر دادن نام آن ، انتقال می دهد .
    1. برای کوتاه شدن دستور همانند مثال بالا می توان از نما (~) به جای پوشه ی home استفاده کرد.
    2. باید توجه داشت که زمانی که از دستور mv به همراه sudo استفاده می کنیم نیز می توانیم از علامت (~) به جای دایرکتوری home استفاده کنیم چرا که terminal به پوشه home مربوط به کاربر ما اشاره خواهد داشت . با این حال زمانی که یک root shell را با استفاده از دستور sudo -i یا sudo -s باز می کنیم ، نماد (~) به پوشه home مربوط به اکانت root اشاره خواهد کرد که در واقع پوشه home کاربر ما نیست .
  • Rm: دستور rm برای حذف یک فایل از یک دایرکتوری استفاده می شود . rm مخفف عبارت remove است.

  • Rmdir: عبارت dir مخفف کلمه ی directory می باشد بنابراین می توان دریافت که دستور rmdir به حذف یک دایرکتوری خالی می پردازد . برای حذف یک دایر کتوری و تمام محتویات درون به جای rm از دستور rm -r استفاده می شود .همانطور که می دانیم r نیز بیانگر عبارت recursively می باشد.

  • Mkdir: به کمک دستور mkdir قادر خواهیم بود که یک دایرکتوری ایجاد کنیم . به عنوان مثال دستور “mkdir itpro” یک پوشه یا دایرکتوری با نام itpro ایجاد خواهد کرد . mk مخفف عبارت make می باشد.

  • clear: این دستور کلیه ی مطالب و دستورات تایپ شده در صفحه ی ترمینال را پاک می کند.

  • Man : بواسطه این دستور می توان به راهنمای سایر دستورات دسترسی پیدا کرد.مثلا دستور “man man” صفحه ای از اطلاعات مرتبط با خود دستور man را نمایش می دهد . این دستور صفحه ای پر از نوشته و اطلاعات را در اختیار قرار می دهد که ممکن است کمی گیج کننده باشد اما بخشی که باید به آن توجه داشته باشیم توضیحات دستور و کاری که انجام می دهد، می باشد. برای scrol کردن به پایین این صفحه ی راهنما از کلید space و برای خروج از آن از کلید q استفاده می کنیم. در ادامه بیشتر به بررسی دستور man خواهیم پرداخت...

  • Sudo: این دستور برای انجام عملیاتی روی فایل ها استفاده می شود که تنها کاربر root قادر به اعمال این تغییرات است.مثلا عملیات بازگردانی یکی از داکیومنت هایی که به طور تصادفی به کابر دیگری منتقل شده،به پوشه دایرکتوری کابر خودمان نیازمند دسترسی root می باشد. به طور معمول برای انتقال یک فایل از دستور mv //mydoc.odt ~//Documents//mydoc.odt استفاده می شود که این دستور قادر به ویرایش و تغییر وضعیت فایل در خارج از پوشه ی home ما نیست .برای این منظور می توانیم از دستور sudo mv //mydoc.odt ~//Documents//mydoc.odt

    استفاده کنیم این دستور فایل را با موفقیت به مکان مورد نظر بازگردانی و منتقل خواهد کرد.برای انجام چنین عملیاتی با کمک این دستور اگرچه کاربر ما استاندارد نیست اما سطوح دسترسی آن کمتر از یک administrator نیز نخواهد بود.

دستورات لینوکس برای اجرای فایل در یک دایرکتوری

اگر قصد اجرای یک فایل در دایرکتوری را به کمک خط فرمان داشته باشیم می توانیم از دستور "filenam.extension/." استفاده کنیم .که به جای filename نام فایل مورد نظر را تایپ می کنیم و extension نیز همان پسوند فایل مورد نظر ما می باشد. پس از هدایت شدن به سوی دایرکتوری فایل ، این دستور کاربر را قادر می سازد تا فایل کامپایل شده بواسطه ی gcc و یا هر کامپایلر مربوط به زبان های برنامه نویسی دیگر را اجرا کند. دستور عنوان شده به پسوند فایل اشاره دارد و باید توجه داشت که متفاوت با سایر سیستم عامل های لینوکسی دیگر ، پسوند فایل در اوبونتو اهمیت ندارد

آموزش LPIC 2

و در واقع extension یا همان پسوند بسته به زبانی که کد منبع با آن نوشته شده متفاوت خواهد بود . همچنین این ممکن نیست که برای زبانهای کامپایل شده مثل C و C++ که source code یا کد منبع را به طور مستقیم اجرا کنند و فایل ابتدا باید کامپایل شود بدین معنی که آن باید ابتدا از یک زبان برنامه نویسی قابل خواندن توسط انسان به زبانی قابل درک برای کامپیوتر ترجمه شود. از پسوندهای موجود می توان به “c.” برای کد منبع زبان C و “cpp” برای ++C و “rb” برای Ruby و “py” برای python و... اشاره کرد. در نهایت فایل تنها در صورتی اجرا می شود که اگر سطوح دسترسی ویا permission ها برای دستیابی به فایل درست باشند .

دستورات لینوکس مربوط به دستیابی به اطلاعات سیستم

  • Df: دستور df فضای مورد استفاده فایل سیستم برای همه ی پارتیشن های نصب شده را نشان می دهد . اما استفاده از دستور “df -h” احتمالا مفید تر خواهد بود چرا که این دستور در گزارش خود از (M) یا مگا بایت و از (G) یا گیگابایت به جای Block ها استفاده می کند h- نیز بیانگر عبارت “human readable” می باشد.

وب سایت توسینسو
  • Du: این دستور میزان دیسک استفاده شده برای دایرکتوری ها را نمایش می دهد . این دستور همچنین می تواند فضای مورد استفاده برای تمامی زیر پوشه ها و برای مجموع تمام دایرکتوری هایی که انها را اجرا کرده ایم را نمایش دهد. در تصویر زیر مثالی برای این دستور نمایش داده شده است . که در آن s- به معنی summary و h- به معنی human readable است.

وب سایت توسینسو
  • Free: این دستور مقدار فضای آزاد و استفاده شده ی memory را در سیستم نمایش می دهد و دستور “free -m” این اطلاعات را بر حسب مگابایت به ما نشان خواهد داد که این دستور کارایی بیشتری نسبت به دستور اول دارد.

  • Top: این دستور مخفف عبارت (‘table of processes’) می باشد که اطلاعات روی سیستم لینوکس ما ، پردازش های در حال اجرا ، و منابع سیستم از جمله CPU و RAM و مجموع برنامه های در حال اجرا را نشان می دهد . برای خروج از این دستور top از کلید “q” استفاده می کنیم .

  • Uname -a: استفاده از دستور uname به همراه آپشن a- تمامی اطلاعات سیستم شامل نام دستگاه ، نام هسته و سایر جزئیات دیگر را نمایش می دهد . بیشترین کاربرد این دستور برای چک کردن kernel ای است که استفاده می کنیم .

  • Ip addr: دستور ip addr گزارشی از کارت شبکه های روی سیستم را نمایش می دهد.

  • Lsb_release –a:

    دستور lsb_release به همراه آپشن a- اطلاعات مربوط به ورژن لینوکسی که استفاده می کنیم را نمایش می دهد . بعنوان مثال:
وب سایت توسینسو

دستور لینوکس برای ایجاد کردن یک کاربر جدید

به کمک دستور “adduser newuser” می توان یک حساب کاربری جدید ایجاد کرد ، باید در نظر داشته باشیم که این دستور با سطح دسترسی کاربر Root اجرا خواهد شد و کاربر ریشه است که می تواند یوزر و یا گروه اضافه کند. بعد از تایپ دستور “sudo adduser newuser” سیستم از ما پسورد حساب کاربریمان را برای احراز هویت درخواست می کند و پس از آن یوزر ایجاد خواهد شد و دستورات مرحله به مرحله پیش می روند و از ما خواسته می شود که پسورد یوزر جدید را وارد کنیم و اطلاعات جانبی دیگری ازجمله نام کامل : (ITpro)، شماره اتاق ، شماره تلفن از ما پرسیده می شود و در نهایت باید صحت یا عدم درستی اطلاعات وارد شده را با استفاده از کلید های y و یا n مشخص کنیم . بدین ترتیب حساب کاربری جدید ایجاد خواهد شد.

معرفی گزینه های مختلف دستورات لینوکس

گاه ممکن است که دستورات پیش فرض با افزودن آپشن هایی به آنها تغییر کرده و ویرایش شوند. مثلا استفاده از آپشنs- به همراه دستور ls که به صورت ls -s تایپ می شود اندازه ی فایل در این لیست را بر می گرداند. همچنین گزینه ی h- باعث می شود که سایز فایل ها در لیست با فرمت قابل درک برای انسان (human readable) نمایش داده شود .آپشن ها همچنین می توانند در کلاستر هایی گروه بندی شوند و به عنوان مثال می توان به دستور “ls -sh” اشاره کرد که در واقع همان وظیفه ی دستور “ls -s -h را انجام می دهد.بسیاری از آپشن هایی که نسخه ای طولانی دارند با پیشوندی از دو علامت خط تیره یا dash به جای یک خط تیره به کار می روند .بنابراین “ls -- size-- humen-readable” برابر با همان دستور “ls -s -h” می باشد .

وب سایت توسینسو

دستور لینوکس برای گرفتن راهنما

دستورات man و info و help-- از مهم ترین ابزارهای خط فرمان می باشند . تقریبا تمامی دستورات و برنامه ها در لینوکس یک man یا manual فایل دارند .بنابراین پیدا کردن این فایل ها با تایپ دستور “man “command”” به آسانی صورت گرفته و یک راهنمای طولانی را برای دستور ذکر شده در اختیار ما قرار می دهد . برای مثال دستور “man mv” راهنمای مربوط به دستور mv را برای ما نمایش می دهد .

می دانیم که mv مخفف عبارت move می باشد. برای حرکت به بالا و پایین لیست راهنمای آورده شده با دستور man می توان از کلید space و یا کلید های جهت دار استفاده کرد .همچنین برای بازگشتن به خط فرمان کلید q را می زنیم . دستور “man man” راهنمای مرتبط با دستور man را نشان می دهد که این دستور مناسبترین گزینه و راهنما برای شروع کار با دستورات است.

دستور “man intro” بسیار مفید است و این دستور به معرفی و نمایش راهنمای دستورات کاربر می پردازد که به خوبی نوشته شده و در واقع به گونه ای مختصر دستورات لینوکس را شرح داده است .عملا استفاده از این دستور خوانندگان را از مطالعه ی این مقاله بی نیاز می کند :D .

همچنین علاوه بر صفحات manual صفحات info نیز وجود دارد که دستور “info info” به معرفی صفحات info می پردازد. برخی از توسعه دهندگان نرم افزار ها info را به man ترجیح می دهند مثل GNU . بنابراین اگر از دستور و یا برنامه ای استفاده کردیم که صفحه ی man نداشت باید برای دستیابی به راهنمای آن دستور info را چک کنیم .

عملا تمامی دستورات ، آپشن h- یا help-- که برای یک تعریف کوتاه و کاربردی از دستور و آپشن های آن تولید شده را درک می کنند.به عنوان مثال برای مشاهده ی عملکرد این آپشن می توان دستور “man -h” و یا “man - -help” را امتحان کرد . امکان دارد که یک برنامه قادر به درک معنی آپشن h-نباشد به همین دلیل باید ابتدا صفحه ی man و یا info را بررسی کرده و گزینه help-- را به جای h- کار برد.البته این احتمال معمولا نادر است ...

کاربرد کلیدهای ترکیبی در خط فرمان لینوکس

در این بخش به شرح عملکرد برخی از کلید های کیبورد و نیز کلید های shortcut برای دستورات لینوکس و کار در محیط terminal می پردازیم :

  • UP arrow یا Ctrl+P: به کمک این کلید ها می توان دستوراتی که پیشتر نوشته شده را مرور کرد .

  • Down arrow یا Ctrl+n : کمک می کند که تا از دستورات قبلی که بواسطه ی دستور بالا مرور کردیم به دستور فعلی بازگردیم .

  • Enter: پس از تایپ دستور برای تایید و اجرا از این کلید استفاده می کنیم .

  • Tab: یکی از کارامدترین کلیدها در ترمینال لینوکس است و در واقع یک autocomplete برای دستورات و نام فایل ها محسوب می شود به عنوان مثال اگر بخواهیم یک فایل با نام “Itpro_administrator.txt” را با استفاده از دستور mv به جای دیگر منتقل کنیم به جای تایپ تمامی حروف نام فایل می توانیم پس از دستور mv چند حرف اول نام فایل را تایپ کرده و کلید tab را بزنیم بقیه ی اسم فایل به صورت خودکار نوشته خواهد شد . اگر نام فایل نوشته نشود بدین معنی است که چند فایل یا دایرکتوری وجود دارند که نام آنها با همین حروف مشابه شروع می شود برای حل این مشکل می توان چند حرف دیگر را نیز تایپ کرده و کلید tab را بزنیم و یا برای کمک گرفتن دوبار کلید tab را بزنیم تا لیست فایلهایی که نامشان با این چند حرف شروع می شوند نمایش داده شود . کلید tab همچنین لیستی از آپشن ها را برای ما نمایش می دهد.

  • Ctrl+r: این کلید ترکیبی دستوراتی را که از قبل تایپ کرده ایم جست و جو می کند ، زمانی که یک دستور طولانی و پیچیده را وارد می کنیم و نیاز به تکرار آن نیز داریم از این کلید ترکیبی استفاده کرده و همچنین بخشی از دستوری که قصد جست و جوی آن را در history دستورات داریم ، تایپ می کنیم. در نهایت پس از یافتن دستور مورد نظر کلید Enter را می زنیم.
  • History: با وجود اینکه history یک دستور است اما با توجه به نوع عملکرد آن در این قسمت از مقاله به توضیح این دستور می پردازیم . تایپ این دستور یک لیست بسیار طولانی از دستوراتی که تایپ کرده ایم را نمایش می دهد . در این لیست هر کدام از دستورات در مقابل یک عدد قرار گرفته اند مثلا در لیست دستور mv به صورت "mv 109" نمایش داده شده است . اگر قصد استفاده از یکی ازاین دستورات موجود در لیست را داشته باشیم عدد مربوط به آن دستور را در کنار یک علامت تعجب تایپ می کنیم .برای نمونه اگر دستور "109!" را تایپ کنیم و کلید enter را بزنیم دستور مقابل این عدد موجود در لیست history ، اجرا خواهد شد. اگر خروجی گرفته شده از دستور history بسیار طولانی باشد از دستور “ history |less” برای ایجاد قابلیت scroll در لیست استفاده می کنیم .
  • Ctrl+a یا کلید Home: مکان نما را در ابتدای خط از یک دستور قرار می دهد .
  • Ctrl+e یا کلید End : مکانما را به انتهای یک خط دستور منتقل می کند .
  • Esc+b: این دستور مکان نما را به ابتدای کلمه فعلی و در صورت استفاده مجدد از آن مکان نما را به ابتدای کلمه قبلی منتقل می کند .
  • Ctrl+k: بخشی از یک دستور را از قسمتی که مکان نما در آنجا واقع شده تا انتهای خط پاک می کند.
  • Ctrl+u: از ابتدای خط تا جایی که مکان نما واقع شده را پاک می کند در واقع بخشی از دستور را که پیش از مکان نما قرار دارد پاک می کند.
  • Ctrl+w : کلمه ای که پیش از مکان نما قرار گرفته را حذف می کند.
  • Alt+backspace: این دستور کلمه ای که قبل از آن یک کاراکتر غیر الفبایی قرار دارد را حذف می کند به عنوان مثال در عبارت ITpro;Network تنها بخش ;ITpro باقی خواهد ماند.
  • Ctrl+t : این shortcut دو کاراکتر را با هم جابه جا می کند مثلا کلمه ی itpro را به itpor تغییر می دهد و کارایی چندانی نداشته اما در بعضی مواقع به کار می آید.
  • Alt+c : کاراکتری که مکان نما روی آن واقع شده را به capital تغییر حالت داده و مکان نما را به انتهای کلمه منتقل می کند.
  • Ctrl+l: تمامی دستورات موجود در صفحه را که پیش از دستور فعلی قرار دارند پاک می کند.

و اما... اطلاعات مفید دیگر

مشاهده ی صفحات manual به گونه ای زیباتر:

کابری که مرورگر konqueror را نصب داشته باشد می تواند به مطالعه و سرچ محتوای صفحات man در مرورگر وب بپردازد.با انتخاب desktop font ها و البته مقداری رنگ این صفحات جذاب تر خواهند شد .این کار را با استفاده از man:/command در نوار آدرس konqueror می توان انجام داد. این روش بار کاری را برای افراد در زمانی که داکیومنت های بسیاری برای مطالعه و سرچ وجو دارد سبک می کند. مرورگر konqueror توسط یک rendering engine با نام KHTML ایجاد شده که از جدیدترین استاندارهای وب همچون HTML5 و javascript و CSS3 و... پشتیبانی می کند.

Paste کردن دستورات

اغلب اوقات نیاز است که دستورات را در ترمینال paste کنیم . با این وجود متنی را که از صفحه ی وب با استفاده از کلید ترکیبی Ctrl+C کپی گرفته ایم به کمک کلید های Ctrl+V در ترمینال paste نخواهد شد . قطعا راهی برای تایپ نکردن این دستورات وجود دارد .

کلید های ترکیبی Ctrl+shift+V عملیات paste را در یک ترمینال Gnome انجام می دهند. و یا می توان به کمک موس راست کلیک کرده و گزینه paste را انتخاب کرد. با این حال اگر بخواهیم بدون استفاده از موس عملیات paste را انجام دهیم می توانیم از کلیدهای Shift+Insert نیز برای paste کردن دستور استفاده کنیم .

اگر مجبور باشیم که دستور را از یک ترمینال و یا web page دیگر کپی کنیم از کلیدهای Ctrl+Insert برای کپی استفاده خواهیم کرد .در این مقاله سعی کردیم که به توضیح در رابطه با دستورات و کلید های ترکیبی بپردازیم که هر کاربری در ابتدای کار با خط فرمان لینوکس باید با آنها آشنا شود .امیدوارم این مقاله به عنوان مقدمه ای برای شروع کار با لینوکس برای دوستان مفید واقع شود.

  • دستورات لینوکس را در چه دوره ای آموزش ببینیم؟

    دوره های آموزش موسسه LPI کانادا ، دوره آموزشی Linux Plus شرکت کامپتیا ، دوره RHCE شرکت ردهت و اساسا کلیه دوره های آموزشی لینوکس ، بر اساس آموزش دستورات لینوکس و کار با لینوکس در خط فرمان طراحی شده اند
  • آموزش لینوکس شامل چه مواردی است؟

    یادگیری تاریخچه لینوکس ، شناخت فلسفه لینوکس و متن باز ، آموزش کار با خط فرمان لینوکس ، ساختار دستورات ، ساختار پوشه ها و دایرکتوری ها ، ساختار سرویس ها و ... فقط برای شروع یادگیری لینوکس در دوره آموزشی لینوکس اسنشیالز به شما آموزش داده می شوند و در ادامه باید دوره های دیگری از موسسه LPI را یاد بگیرید.

مریم حیات رمضانی
مریم حیات رمضانی

کارشناس شبکه های مایکروسافت و پایگاه داده

کارشناس سیستم عامل و زیرساخت های مایکروسافت MCTS:Active Directory 2008 MCTS:Network Infrastruture 2008 MCTS:Application Infrastructure 2008 MCTS:Active Directory 2008 MCITP:Enterprise Administrator MCSA 2008

نظرات