فروردین ۲۸ ۱۳۹۷

آموزش خط فرمان: قسمت هفتم، هدایت و تغییر مسیر

نوشته شده توسط فرشید نوتاش حقیقت.

در این آموزش یکی از بهترین ویژگی‌های خط فرمان یعنی هدایت و تغییر مسیر I/O را خواهیم آموخت.

I/O Redirection مخفف عبارت Input Output Redirection به معنی هدایت ورودی خروجی می‌باشد و با استفاده از خواهید شد این امکان، می‌توان ورودی و خروجی فرمان‌های لینوکس را به فایل‌ها و از فایل‌ها هدایت نمود و همچنین چندین فرمان قدرتمند ترکیبی ایجاد کرد. به منظور فراگیری این قابلیت در این بخش با فرمان‌های cat، sort، uniq، wc، grep، head و tail آشنا خواهید شد.

خروجی و ورودی استاندارد و خطا

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

اگر این ایده که در لینوکس همه چیز فایل است را به یاد بیاوریم می‌بینیم که برنامه‌هایی مثل ls نتایج خود را به درون یک فایل خاص با نام Standard Output (خروجی استاندارد) می‌فرستد و همچنین پیام‌های خطا را به درون یک فایل خاص تحت عنوان Standard Error (خطای استاندارد) می‌فرستند. به صورت پیش‌فرض هر دوی این فایل‌ها به جای ذخیره‌سازی بر روی دیسک به صفحه نمایش لینک می‌شوند.

به‌علاوه بسیاری از برنامه‌ها، ورودی خود را از تسهیلاتی به نام Standard Input (ورودی استاندارد) می‌گیرند. I/O Redirection ما را قادر می‌سازد تا مسیری که خروجی به آن می‌رود و یا مسیری که ورودی از آن می‌آید را تغییر دهیم. به‌صورت عادی خروجی به صفحه‌نمایش هدایت می‌شود و ورودی از صفحه‌کلید می‌آید ولی با استفاده از I/O Redirection می‌توان این حالت پیش‌فرض را تغییر داد.

تغییر مسیر (Redirection) خروجی استاندارد

I/O Redirection به ما اجازه می‌دهد تا مسیری که خروجی می‌رود را دوباره تعریف کنیم. به‌منظور تغییر جهت و هدایت خروجی استاندارد به یک فایل دیگر به جای هدایت به صفحه‌نمایش ما از عملگر هدایت یعنی < استفاده شده و در ادامه آن نام فایل را ذکر می‌کنیم. برای مثال ما می‌توانیم به خط فرمان بگوییم که خروجی فرمان ls را به جای آن که آن را در صفحه نمایش نشان دهد به فایل ls-output.txt بفرستد.

در اینجا ما یک لیست بلند از دایرکتوری /usr/bin ایجاد نموده و نتایج را به فایل ls-output.txt فرستادیم. در ادامه خروجی فرمان را آزمایش می‌کنیم:

اگر محتوای فایل را با فرمان less بررسی کنیم، خواهیم دید که فایل ls-output.txt در واقع حاوی نتایجی از فرمان ls می‌باشد.

در ادامه آزمون هدایت را این بار با کمی پیچیدگی انجام می‌دهیم. نام دایرکتوری را به چیزی که وجود ندارد تغییر می‌دهیم:

یک پیام خطا دریافت نمودیم. این امری کاملاً طبیعی است چرا که دایرکتوری را که وجود ندارد را به آن تخصیص داده‌ایم. ولی چرا پیام خطا به جای اینکه در فایل ls-output.txt ذخیره گردد بر روی صفحه نمایش نشان داده شد؟ پاسخ این است که برنامه ls پیام‌های خطا را به یک خروجی استاندارد ارسال نمی‌کند و از آن جایی که فقط خروجی استاندارد Standard Output را هدایت کردیم نه Standard Error. در نتیجه هنوز پیام‌های خطا در صفحه‌نمایش نشان داده می‌شوند. در آموزش‌های بعدی نحوه هدایت فایل Standard Error را نمایش خواهیم داد ولی قبل از مجدداً نگاهی دوباره به فایل خروجی خود خواهیم انداخت. با فرمان زیر اطلاعات کامل فایل، نمایش داده خواهد شد.

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

به‌سادگی با به‌کار بردن عملگر هدایت بدون هیچ فرمانی نتایج فایل را حذف می‌کنیم و یک فایل جدید خالی ایجاد می‌کنیم. برای آنکه نتایج حذف نشوند بایستی از عملگر >> برای (Redirection)  استفاده کنیم. به مثال زیر توجه کنید:

با این کار ما نتیجه فرمان را سه بار تکرار کردیم که در نتیجه اندازه فایل سه برابر افزایش می‌یابد.

تغییر مسیر (Redirection) خطای استاندارد

هدایت و تغییر مسیر خطاهای استاندارد فاقد یک عملگر اختصاصی هدایت می‌باشد. به‌منظور هدایت خطاهای استاندارد بایستی به توصیفگر فایل (file descriptor) مراجعه کرد. یک برنامه می‌تواند خروجی را بر روی هر جریان شماره‌گذاری شده فایل، ایجاد کند.

زمانی که ما به سه مورد اول این جریان‌های فایل به عنوان ورودی، خروجی و خطای استاندارد نگاه کنید. شل (Shell) آن‌ها را با توصیفگرهای فایل ۰، ۱ و ۲ اشاره می‌کند. شل علامت‌گذاری برای هدایت فایل‌ها با استفاده از شماره توصیفگر فراهم می‌کند. خوب از آن‌جایی که خطای استاندارد همان فایل توصیفگر شماره ۲ است، می‌توان خطای استاندارد را با این علامت انجام داد:

شماره توصیفگر بلافاصله پیش از عملگر هدایت یعنی > قرار می‌گیرد تا عملیات هدایت خطای استاندارد به فایل ls-error.txt صورت پذیرد.

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

در برخی مواقع نیاز می‌شود همه خروجی فرمان‌ها را به داخل یک فایل مجزا بریزیم. برای انجام این کار بایستی هم خطای استاندارد و هم خروجی استاندارد را به صورت همزمان هدایت (Redirect) کرد. به این منظور دو روش وجود دارد. روش اول روش رسمی است که بر روی نسخه‌های قدیمی شل (Shell) هم کار می‌کند:

با استفاده از این متد، به صورت همرمان دو Redirect را انجام دادیم. اول خروجی استاندارد را به داخل فایل ls-output.txt ریختیم و سپس توصیفگر شماره ۲ یعنی همان خطای استاندارد را به توصیفگر شماره ۱ یعنی خروجی استاندارد هدایت کردیم. در این شیوه هدایت خطای استاندارد بایستی همیشه پس از هدایت خروجی استاندارد صورت پذیرد در غیر این صورت کار نخواهد کرد.

نسخه‌های اخیر بش (bash) یک شیوه ساده‌تری برای انجام این ترکیب می‌باشد:

در این مثال ما با استفاده از علامت &> خطای استاندارد و خروجی استاندارد را به‌صورت همزمان به داخل فایل ls-output.txt منتقل کردیم.

جلوگیری از خروجی ناخواسته

بعضی مواقع سکوت واقعاً لذت‌بخش است و ما از خط فرمان خروجی نمی‌خواهیم. فقط می‌خواهیم فرمان را اجرا کرده و از خروجی جلوگیری کنیم. این موضوع به‌پروژه برای پیام‌های خطا و پیام‌های وضعیت کاربرد خوبی دارد. سیستم یک شیوه برای انجام این کار فراهم آورده است. با هدایت خروجی به یک فایل با نام /dev/null این کار انجام می‌گیرد. برای سرکوب پیام‌های خطا از یک فرمان می‌توان این کار را به شیوه زیر انجام داد:

هدایت ورودی استاندارد

تا به اینجا هنوز با فرمانی که از ورودی استاندارد استفاده کند، مواجه نشده‌ایم. به همین منظور برای توضیح هدایت ورودی استاندارد فرمانی را توضیح خواهیم داد.

فرمان cat الحاق فایل‌ها در لینوکس

فرمان cat که از کلمه لاتین Concatenate به معنی الحاق و به هم پیوستن گرفته شده یک یا چند فایل را می‌خواند و سپس آن‌ها را به یک خروجی استاندارد کپی می‌کند و به این صورت به کار گرفته می‌شود:

cat [file...]

می‌توان از فرمان cat به منظور نمایش فایل‌ها بدون صفحه‌بندی استفاده کنید. برای مثال:

این فرمان محتوای فایل ls-output.txt را نشان می‌دهد. Cat اغلب به منظور نمایش متن‌های کوتاه از فایل‌ها به کار می‌رود. از آنجایی که cat می‌تواند بیش از یک فایل را به‌عنوان آرگومان قبول کند، از آن می‌توان به‌منظور اتصال فایل‌ها به یکدیگر نیز استفاده کرد.

فرض کنید که فیلی عظیم را دانلود کرده‌اید. این فایل به بخش‌های کوچک‌تر تقسیم شده است (فایل‌های تصویری موجود در شبکه یوزنت معمولاً به این شیوه به اشتراک گذاشته می‌شوند) حال می‌خواهیم این بخش‌های کوچک را به هم متصل کنید تا فایل اصلی به حالت اولیه خود برگردد. اگر مثلاً فایل‌ها به این صورت نام‌گذاری شده باشند:

movie.mpeg.001 movie.mpeg.002 ... movie.mpeg.099

می‌توان آن‌ها را با استفاده از فرمان زیر به هم متصل کرد:

با توجه به اینکه Wildcardها همواره به ترتیب بسط پیدا می‌کنند در نتیجه این آرگومان فایل‌ها را به ترتیب صحیح به هم متصل خواهد کرد.

حال اگر فرمان cat را بدون هیچ آرگومانی وارد کنیم چه اتفاقی خواهد افتاد؟

به نظر می‌رسد که هیچ اتفاقی نمی‌افتد ولی در حقیقت به حالت معلق باقی می‌ماند تا ما فرمانی وارد کنیم. فرمان cat شروع به خواندن ورودی‌های استاندارد از ابتدا می‌کند و از آنجایی که ورودی‌های استاندارد به‌صورت پیش‌فرض به صفحه‌کلید متصل شده‌اند، پس فرمان cat منتظر می‌ماند تا چیزی تایپ کنیم. متن زیر را وارد کنید:

سپس Ctrl+D را فشرده تا به cat بفهمانید که به آخر فایل در یک ورودی استاندارد رسیده‌ایم.

در نبود آرگومان‌های نام فایل فرمان cat ورودی استاندارد را دریافت و به خروجی استاندارد که همان صفحه‌نمایش است نشان می‌دهد. پس ما به این صورت می‌بینیم که خط تایپ شده تکرار شد.

از این رفتار می‌توان به منظور ایجاد فایل‌های متنی کوتاه استفاده نمود. مثلاً می‌خواهیم یک فایل با نام lazy_dog.txt که حاوی متن تایپ شده است ایجاد کنیم. بایستی فرمان را به این شیوه تایپ کنیم:

پس از وارد کردن فرمان فوق، متن مورد نظر خود را تایپ می‌کنیم. در آخر با فشردن Ctrl+D فایل به پایان می‌رسد. برای نمایش نتایج وارد شده در فایل خود می‌توانیم باز هم از فرمان cat به منظور نمایش استفاده کنیم:

خوب حال می‌دانیم فرمان cat ورودی‌های استاندارد را قبول می‌کند:

یادآور می‌شویم که برای خروجی استاندارد از عملگر < استفاده می‌کردیم. حال برای ورودی استاندارد از عملگر > استفاده می‌کنیم. با استفاده از این عملگر و فرمان بالا منبع ورودی استاندارد را از صفحه‌کلید به فایل lazy_dog.txt تغییر دادیم. این کار خیلی کاربردی نیست ولی مفهوم را می‌رساند. یعنی این بار از یک فایل به عنوان منبع ورودی استاندارد استفاده می‌کنیم. فرمان‌های دیگر استفاده بهتری از ورودی استاندارد خواهند داشت. به این منظور به صفحات manual مراجعه نمایید.

منبع: کتاب The Linux Command Line نوشته William E. Shotts

نوشته آموزش خط فرمان: قسمت هفتم، هدایت و تغییر مسیر اولین بار در لینوکس سیزن پدیدار شد.


فروردین ۲۱ ۱۳۹۷

آموزش خط فرمان: قسمت ششم، کار کردن با فرمان‌ها

نوشته شده توسط فرشید نوتاش حقیقت.

این آموزش فرمان‌های type، which، man، apropos، info، whatis و alias را شامل می‌شود.

یک فرمان می‌تواند چهار چیز باشد:

  • یک برنامه اجرایی مانند فایل‌های موجود در /usr/bin که در این دسته می‌توان به برنامه‌هایی که قابلیت کامپایل دارند از قبیل برنامه‌های نوشته شده در C و C++ یا برنامه‌های نوشته شده در زبان‌های اسکریپت‌نویسی شامل Shell، Perl، Python، Ruby و نظایر آن اشاره داشت.
  • فرمان تولید شده توسط خود پوسته (Shell). Bash از تعدادی از فرمان‌ها پشتیبانی می‌کند که فرمان‌های درون‌ساخت پوسته (shell builtins) نامیده می‌شوند. به‌عنوان مثال فرمان cd یک فرمان shell builtins نامیده می‌شود.
  • یک تابع پوسته (shell function). توابع پوسته شامل اسکریپت‌های پوسته بوده که در محیط قرار گرفته‌اند. پیکربندی محیط و نوشتن توابع پوسته در آموزش‌های بعدی تحت پوشش قرار خواهند گرفت.
  • یک نام مستعار (alias). alias فرمانی است که خودمان به کمک دیگر فرمان‌ها می‌توانیم تعریف کنیم.

شناسایی فرمان‌ها

در ابتدا می‌بایست بدانید که چه نوع از فرمان‌ها استفاده می‌شود و لینوکس چند راه برای پی بردن به آن ارائه می‌دهد.

روش اول، فرمان type که نوع فرمان را نمایش می‌دهد.

فرمان type یک فرمان shell builtin بوده که نوع فرمان را با توجه به نام فرمان نشان می‌دهد که به شکل زیر به کار گرفته می‌شود:

type command

که به جای command می‌بایست نام فرمانی را که می‌خواهید بررسی شود قرار دهید. در ادامه چندین مثال از فرمان type آورده شده است:

روش دوم، فرمان which که محل اجرای فرمان را مشخص می‌کند.

گاهی اوقات چندین نسخه از برنامه اجرایی بر روی یک سیستم نصب می‌شود. به منظور تعیین محل دقیق یک فرمان اجرایی، فرمان which کاربرد دارد که بدین صورت استفاده می‌شود:

فرمان which فقط مختص برنامه‌های اجرایی است نه builtin و یا نام مستعاری که برای برنامه‌های اجرایی است. هنگامی که ما سعی می‌کنیم از یک فرمان builtin به عنوان مثال، فرمان cd استفاده کنیم هیچ پاسخی دریافت نکرده و یا با پیغام خطا مواجه خواهیم شد:

پیغام فوق به‌طور فانتزی می‌گوید: «فرمان پیدا نشد! (command not found)»

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

بش (bash) دارای یک مرکز درونی کمک برای فرمان‌های shell builtin می‌باشد. برای استفاده از آن help را به همراه نام فرمان مورد نظر تایپ نموده و اجرا نمایید. برای مثال:

آیتم‌هایی که درون براکت هستند، آیتم‌هایی اختیاری هستند. علامت | (خط عمودی) نیز نشان‌دهنده آیتم‌های اختصاصی و انحصاری است.

فرمان –help نمایش اطلاعات مفید فرمان

بسیاری از برنامه‌های اجرایی از فرمان –help  پشتیبانی می‌کنند که توضیح نحو (syntax) و گزینه‌های (options) پشتیبانی شده یک فرمان را نشان می‌دهد. به‌عنوان مثال:

نمایش صفحه راهنمای برنامه‌های لینوکس به کمک فرمان man

اکثر برنامه‌های اجرایی که برای استفاده از خط فرمان در نظر گرفته شده مستندات رسمی به نام man page ارائه می‌دهند. شکل اجرای این فرمان به‌صورت زیر است:

man program

کافی است به جای program فرمان مورد نظر را برای مشاهده تایپ نمایید.

Man pageها تا حدودی در فرمت متفاوت هستند، اما به‌طور معمول شامل یک عنوان، خلاصه‌ای از نحو (syntax) فرمان، شرحی از هدف فرمان و فهرست یا توضیحاتی از گزینه‌های فرمان می‌باشند.

با این حال man pageها معمولاً مثالی را شامل نمی‌شوند و به عنوان یک مرجع، نه یک آموزش در نظر گرفته می‌شوند.

راهنمایی که فرمان man نمایش می‌دهد به بخش‌هایی تقسیم می‌شود و فقط فرمان‌های کاربر را پشتیبانی نمی‌کند بلکه فرمان‌های مدیریت سیستمی، رابط‌های کاربری برنامه، فرمت‌های فایل و نظایر آن را پشتیبانی می‌کند. جدول زیر طرح کلی صفحات manual را شرح می‌دهد:

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

man section search_term

که در اینجا search_term همان مورد جستجوی ماست. به عنوان مثال:

با اجرای صفحه راهنمایی را خواهیم دید که فرمت فایل /etc/passwd را شرح می‌دهد.

نمایش فرمان‌های مناسب با کمک فرمان apropos

گاهی اوقات نیاز داریم که لیست صفحات manual را برای یک مورد خاص جستجو نماییم. در ادامه مثالی از جستجوی صفحات راهنما را برای floppy آورده شده است:

فیلد اول در هر خط خروجی نام صفحه راهنماست و فیلد دوم نشان‌دهنده بخش مورد نظر می‌باشد. به یاد داشته باشید که گزینه –k با فرمان man دقیقاً مانند عملکرد apropos عمل خواهد کرد.

نمایش توصیفی مختصر از یک فرمان با کمک فرمان whatis

فرمان whatis نام و شرحی یک خطی از یک صفحه راهنما را مطابق با یک کلمه مشخص، نمایش می‌دهد.

نمایش اطلاعات ورودی یک برنامه با کمک فرمان info

پروژه GNU یک جایگزین برای صفحات man با نام info page ارائه نموده است. صفحات اطلاعات در برنامه‌ای با نام info نمایش داده می‌شود. صفحات info مانند صفحات وب دارای لینک‌هایی هستند.

برنامه info فایل‌های صفحات info را می‌خواند و در یک ساختار درختی در nodeهای جداگانه نشان می‌دهد. هر نود شامل یک عنوان جداگانه است. فایل‌های info شامل لینک‌هایی هستند که شما را به nodeهای دیگر هدایت می‌کند. لینک‌ها از طریق علامت * (ستاره در اولشان) شناسایی شده و با قرار دادن نشانگر بر روی آن‌ها و فشار دادن کلید Enter اجرا می‌شوند. برای دریافت اطلاعات اطلاعات می‌توانید info را به دنبال نام برنامه تایپ کنید، به عنوان مثال:

جدول زیر فرمان‌هایی که به منظور کنترل صفحه هنگام خواندن صفحات info استفاده می‌شود را نشان می‌دهد:

ایجاد فرمان‌ها به کمک فرمان alias

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

command1; command2; command3..

به عنوان مثال:

همانطور که مشاهده می‌شود سه فرمان را در یک خط قرار داده‌ایم. ابتدا دایرکتوری را به مسیر /usr تغییر داده‌ایم، سپس لیست محتویات دایرکتوری را نمایش داده‌ایم و در نهایت با کمک فرمان cd به دایرکتوری اصلی بازگشتیم.

اولین چیزی که بایستی برای دستور خود تصور کنیم یک نام برای فرمان جدید است. چون این فقط یک آزمایش است نام test را انتخاب می‌نماییم. البته بهتر است تست کنیم که کسی قبلاً از این اسم استفاده نکرده است. با فرمان type می‌توان به این مطلوب رسید:

مشاهده می‌شود که این نام قبلاً انتخاب و استفاده شده است. حال foo را آزمایش می‌کنیم:

خوشبختانه foo در بین فهرست فرمان‌های لینوکس موجود نیست. در ادامه با کمک فرمان alias فرمان جدید را ایجاد می‌کنیم:

ساختار این فرمان بدین شکل است:

alias name='string'

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

می‌توانیم فرمان foo را با کمک فرمان type بررسی کنیم:

برای حذف آن نیز می‌توان از فرمان unalias کمک گرفت:

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

منبع: کتاب The Linux Command Line نوشته William E. Shotts

نوشته آموزش خط فرمان: قسمت ششم، کار کردن با فرمان‌ها اولین بار در لینوکس سیزن پدیدار شد.


فروردین ۲۰ ۱۳۹۷

غیرفعال کردن دائمی حافظه‌ی Swap در لینوکس

swap

در مطالب قبلی در مورد حافظه‌ی swap توضیح داده شد و نحوه ی خالی کردن آن نیز شرح داده شد.اکنون در این مطلب قصد داریم تا حافظه‌ی swap را به صورت کامل و برای همیشه غیرفعال کنیم.

برای اینکار ابتدا جهت غیرفعال کردن swap دستور پایین را اجرا کنید :

 

#swapoff -a

 

در این حالت swap غیرفعال شده است ولی به صورت دائمی نیست و با reboot شدن سیستم، حافظه ی swap دوباره فعال خواهد شد.برای جلوگیری از فعال شدن آن پس reboot شدن سیستم و غیرفعال کردن دائمی آن کافیست تا فایل تنظیمات مربوط به mount شدن پارتیشن ها را باز کنید :

 

#vi /etc/fstab

 

اکنون خطی که مربوط به swap می باشد را پیدا کنید و جلوی آن علامت # قرار دهید تا به حالت comment در آید.برای نمونه تصویر پایین را مشاهده کنید :

 

 

fstab

 

پس از دخیره تغییرات در فایل اکنون کافیست تا یکبار سیستم را reboot کنید یا اینکه از دستور پایین استفاده کنید :

 

#mount -a

اکنون با انجام این مراحل حافظه‌ی swap بر روی سیستم به صورت دائم غیرفعال شده است.جهت مشاهده فضای swap بر روی سیستم نیز می توانید از دستور پایین استفاده کنید :

 

#swapon -s

امید است تا از این مطلب استفاده لازم را برده باشد.

شاد و فدورایی باشید.

 

 


فروردین ۹ ۱۳۹۷

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

Parrot

خط فرمان یا همان کنسول همیشه جذابیت و ویژگی های خاص خود را دارد.حتی بازی ها و سرگرمی هایی وجود دارد که می توان آنها را در ترمینال اجرا کرد.

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

 

curl http://parrot.live

جهت دیدن این پروژه بر روی github و دریافت اطلاعات بیشتر در مورد آن کافیست تا به لینک پایین مراجعه نمایید :

 

https://github.com/hugomd/parrot.live

 

 


اسفند ۲۱ ۱۳۹۶

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

bash

در برخی اوقات ممکن است بخواهید وجود یک فایل یا پوشه را از طریق خط فرمان و یا شل اسکریپت بررسی کنید.برای اینکار می توان از دستور if به همراه اپراتورهای مربوطه این کار را انجام داد.

به عنوان نمونه می خواهیم بررسی کنیم که آیا فایل etc/hosts/ وجود دارد یا نه،برای اینکار می توان دستور پایین را اجرا کرد :

 

[ -f /etc/hosts ] && echo “Found” || echo “Not found”

 

در صورتی که فایل وجود داشته باشد Found نمایش داده خواهد شد و در عیر اینصورت Not found نمایش داده خواهد شد.

همین کار را نیز می توان به روش پایین و به صورت یک شل اسکریپت هم انجام داد :

 

#!/bin/bash
file=”/etc/hosts”
if [ -f “$file” ]
then
echo “$file found.”
else
echo “$file not found.”
fi

 

اپراتورهایی که می توان استفاده کرد به صورت زیر می باشند :

-b FILE
FILE exists and is block special

-c FILE
FILE exists and is character special

-d FILE
FILE exists and is a directory

-e FILE
FILE exists

-f FILE
FILE exists and is a regular file

-g FILE
FILE exists and is set-group-ID

-G FILE
FILE exists and is owned by the effective group ID

-h FILE
FILE exists and is a symbolic link (same as -L)

-k FILE
FILE exists and has its sticky bit set

-L FILE
FILE exists and is a symbolic link (same as -h)

-O FILE
FILE exists and is owned by the effective user ID

-p FILE
FILE exists and is a named pipe

-r FILE
FILE exists and read permission is granted

-s FILE
FILE exists and has a size greater than zero

-S FILE
FILE exists and is a socket

-t FD file descriptor FD is opened on a terminal

-u FILE
FILE exists and its set-user-ID bit is set

-w FILE
FILE exists and write permission is granted

-x FILE
FILE exists and execute (or search) permission is granted

 

بنابراین به صورت کلی می توان از این ساختار دستوری استفاده کرد :

 

 

if [ operator FileName ]
then
echo “FileName – Found, take some action here”
else
echo “FileName – Not found, take some action here”
fi

 

چنانچه قصد داشته باشید دستور شما فقط در یک خط نوشته شود می توان از نمونه ی پایین استفاده کنید :

 

file1=”/etc/hosts” ; if [ -f “$file1” ] ; then echo “$file1 found.” ; else echo “$file1 not found.” ; fi

 

امید است تا از این مطلب استفاده ی لازم را برده باشید.


اسفند ۲ ۱۳۹۶

آموزش خط فرمان: قسمت پنجم، مدیریت فایل‌ها و دایرکتوری‌ها

نوشته شده توسط فرشید نوتاش حقیقت.

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

– فرمان cp: کپی کردن فایل‌ها و دایرکتوری‌ها

– فرمان mv: جابجا کردن/ تغییر نام فایل‌ها و دایرکتوری‌ها

– فرمان mkdir: ایجاد دایرکتوری‌ها

– فرمان rm: حذف فایل‌ها و دایرکتوری‌ها

Wildcardها

قبل از آن که فرمان‌های فوق را شرح دهیم، نیاز است به یکی از ویژگی‌های پوسته بپردازیم که این فرمان‌ها را بسیار قدرتمند می‌سازد.

Wildcard کارایی
* هر کاراکتری و هر تعداد
? یک کاراکتر
[characters] هر کاراکتر مشخصی که نیاز است باشد.
[!characters] هر کاراکتر مشخصی که نباید باشد.
[[:class:]] هر کاراکتری متعلق به کلاس باشد.

 

کاراکترهای class کارایی
[:alnum:] هر کاراکتر الفبایی و شماره‌ای
[:alpha:] هر کاراکتر الفبایی
[:digit:] هر شماره‌ای
[:lower:] هر حرف کوچک
[:upper:] هر حرف بزرگ

چندین مثال:

مثال مفهوم
* همه فایل‌ها
g* هر فایلی که با g آغاز می‌شود
b*.txt هر فایلی که با b شروع شده و هر تعداد کاراکتر بعد از آن با پایان .txt
Data??? هر فایلی که با Data آغاز می‌شود و سه کاراکتر در انتهای آن قرار دارد.
[abc]* هر فایلی که با a یا b یا c آغاز می‌شود.
BACKUP.[0-9][0-9][0-9] هر فایلی که با BACKUP. آغاز شده و در ادامه سه رقم قرار می‌گیرد.
[[:upper:]] هر فایلی که با حرف بزرگ آغاز می‌شود.
[![:digit:]]* هر فایلی که با عدد آغاز نمی‌شود.
*[[:lower:]123] هر فایلی که با یک حرف کوچک یا با شماره ۱ یا ۲ یا ۳ آغاز می‌شود.

فرمان mkdir

فرمان mkdir برای ایجاد دایرکتوری‌ها استفاده می‌شود.

فرمت فرمان mkdir

mkdir dir1

دایرکتوری dir1 را ایجاد می‌کند.

mkdir dir1 dir2 dir3

دایرکتوری‌های dir1 و dir2 و dir3 را ایجاد می‌کند.

فرمان cp

فرمان cp فایل‌ها و دایرکتوری‌ها را کپی می‌کند.

فرمت فرمان cp

cp item1 item2

item1 را در item2 کپی می‌کند.

گزینه‌های فرمان cp

گزینه عملکرد
a, –archive فایل‌ها و دایرکتوری‌ها و تمام ویژگی‌های آن از جمله مالکیت و پرمیژن را کپی می‌کند.
i, –interactive قبل از بازنویسی مجدد یک فایل، از کاربر تاییدیه می‌خواهد.
r, –recursive دایرکتوری‌ها و محتویات آن را به‌طور بازگشتی کپی می‌کند. این گزینه (یا گزینه -a) هنگام کپی کردن دایرکتوری‌ها نیاز می‌شود.
u, –update هنگام کپی کردن فایل‌ها از یک دایرکتوری به دایرکتوری دیگر فقط فایل‌هایی را که یا وجود ندارند و یا جدیدتر از فایل‌های متناظر موجود در دایرکتوری مقصد هستند کپی می‌کند.
v, –verbose پیام‌های اطلاع‌رسانی را برای عملیات کپی نمایش می‌دهد.

مثال‌هایی از فرمان cp

cp file1 file2

file1 را در file2 کپی می‌کند. اگر file2 وجود داشته باشد آن را با محتویات  file1بازنویسی می‌کند. اگر file2 وجود نداشته باشد، آن را می‌سازد.

cp –i file1 file2

همانند مثال قبلی است با این تفاوت که زمانی که file2 وجود داشته باشد قبل از بازنویسی از کاربر سوال می‌شود.

cp file1 file2 dir1

file1 و file2 را در dir1 کپی می‌کند. dir1 باید وجود داشته باشد.

cp dir1/* dir2

با استفاده از wildcard تمام فایل‌های dir1 در dir2 کپی می‌شوند. dir2 باید وجود داشته باشد.

cp -r dir1 dir2

dir1 (و محتویات آن را) به dir2 کپی می‌کند. اگر دایرکتوری dir2 وجود نداشته باشد، ایجاد خواهد شد و محتویات dir1 در آن کپی می‌شود.

فرمان mv

فرمان mv هم فایل را جابه‌جا می‌کند و هم تغییر نام می‌دهد. بستگی دارد که چگونه از آن استفاده شود. طرز استفاده از فرمان mv همانند فرمان cp است.

mv item1 item2

برای تغییر نام می‌بایست item1 و item2 به یک آدرس اشاره کنند ولی نام آن‌ها متفاوت باشد.

گزینه‌های فرمان mv

گزینه عملکرد
i, –interactive قبل از بازنویسی یک فایل از کاربر درخواست تاییدیه می‌کند. اگر این گزینه مشخص نشده باشد، فایل همنام بی‌درنگ بازنویسی خواهد شد.
u, –update هنگام انتقال از یک دایرکتوری به دایرکتوری دیگر فقط فایل‌هایی را که در دایرکتوری مقصد موجود نیستند و یا جدیدتر از فایل‌های موجود در دایرکتوری مقصد هستند حرکت می‌دهند.
v, –verbose پیام‌های اطلاع‌رسانی را برای انتقال نمایش می‌دهند.

مثال‌های فرمان mv

mv file1 file2

file1 را به file2 انتقال می‌دهد. اگر file2 وجود داشته آن را با محتویات file1 بازنویسی می‌کند.

mv -i file1 file2

همانند مثال قبلی file1 را به file2 انتقال می‌دهد. اگر file2 وجود داشته از کاربر برای بازنویسی سوال می‌شود.

mv file1 file2 dir1

file1 و file2 را به dir1 انتقال می‌دهد. dir1 باید وجود داشته باشد.

mv dir1 dir2

dir1 (و محتویات آن را) به دایرکتوری dir2 انتقال می‌دهد. اگر dir2 وجود نداشته باشد آن را می‌سازد و محتویات دایرکتوری dir1 را به دایرکتوری dir2 منتقل می‌کند و dir1 را حذف می‌کند.

فرمان rm

فرمان rm برای پاک کردن (حذف) فایل‌ها و دایرکتوری‌ها مورد استفاده قرار می‌گیرد.

rm item…

item می‌تواند یک یا چند فایل یا دایرکتوری باشد.

گزینه‌های فرمان rm

گزینه عملکرد
i, –interactive قبل از حذف فایلی که وجود دارد از کاربر تاییدیه می‌گیرد. اگر این گزینه مشخص نشده باشد، فرمان rm فایل‌ها را بدون درنگ حذف می‌کند.
r, –recursive اگر دایرکتوری دارای زیردایرکتوری‌هایی باشد، آن‌ها را نیز حذف می‌کند.
f, –force فایل‌های موجود را نادیده می‌گیرد.
v, –verbose پیام‌های اطلاع‌رسانی را برای عمل حذف نمایش می‌دهد.

مثال‌های فرمان rm

rm file1

بی‌درنگ file1 را حذف می‌کند.

rm -i file1

قبل از حذف file1 از کاربر تاییدیه می‌گیرد.

rm -r file1 dir1

file1 و dir1 را به همراه محتویاتشان حذف می‌کند.

منبع: کتاب The Linux Command Line نوشته William E. Shotts

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


بهمن ۲۳ ۱۳۹۶

آموزش تنظیم Hostname در خط فرمان

change-hostname

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

جهت نمایش hostname می توانید از دستورهای پایین استفاده کنید :

 

# hostname
# hostname -s
# hostname -f

  • سوئیچ s- نام کوتاه کامپیوتر را نمایش می دهید.(فقط hostname)
  • سوئیچ f- کامپیوتر FQDN در شبکه را نمایش می دهد.(فقط زمانی که کامپیوتر جزئی از یک domain یا realm باشد و FQDN ان تنظیم شده باشد.)

 

روش دیگر برای نمایش نام میزبان cat کردن فایل hostname می باشد :

 

# cat /etc/hostname

اکنون جهت تغییر hostname و با تنظیم آن می توانید از دستور پایین استفاده کنید :

 

 

# hostnamectl set-hostname your-new-hostname

نکته اینکه بجای your-new-hostname باید نام مورد نطر خود را بنویسید.اکنون جهت نمایش hostname می توانید از دستوراتی که در بالا گفته شد استفاده کنید یا اینکه از دستور پایین استفاده کنید :

 

 

#hostnamectl

روش دیگر برای تنظیم hostname ماشین، ویرایش فایل hostname می باشد :

 

 

# vi /etc/hostname

یکی دیگر از روش ها جهت نمایش و ویرایش hostname استفاده از sysctl می باشد.جهت نمایش hostname نیز می توانید از این دستور استفاده کنید :

 

 

# sysctl kernel.hostname

جهت تغییر hostname می توانید از این دستور استفاده کنید :

 

 

# sysctl kernel.hostname=new-hostname

 

نکته اینکه این تغییر به صورت موقت می باشد.جهت اعمال تغییر به صورت دائمی این دستور را استفاده کنید :

 

 

# sysctl -w kernel.hostname=new-hostname

 

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

 

#nmtui

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

 

 

# nmtui-hostname your-new-hostname

اکنون جهت نمایش hostname می توانید از دستوراتی که گفته شد استفاده کنید.

امید است تا از این مطلب استفاده لازم را برده باشد.شاد و فدورایی باشید.

 


بهمن ۱۵ ۱۳۹۶

آموزش خط فرمان: قسمت چهارم، استاندارد سلسله‌مراتبی فایل‌سیستم لینوکس

نوشته شده توسط فرشید نوتاش حقیقت.

فایل‌سیستم لینوکس در تمامی سیستم‌عامل‌های مبتنی بر یونیکس مشابه یکدیگر هستند که به آن استاندارد سلسله‌مراتبی فایل‌سیستم لینوکس (Standard Filesystem Hierary Linux) گفته می‌شود.این استاندارد سلسله‌مراتبی شامل دایرکتورهایی است که یک درخت را به‌وجود می‌آورد.

در ادامه به معرفی این دایرکتوری‌ها خواهیم پرداخت:

/: که به آن دایرکتوری root یا ریشه می‌گویند که آغازگر این درخت می‌باشد.

/bin: شامل برنامه‌ها و فایل‌های باینری است که برای بوت شدن و اجرای سیستم‌عامل مورد نیاز می‌باشد.

/boot: شامل هسته لینوکس، درایورهای مورد نیاز برای بوت شدن و بوت‌لودر می‌باشد. به‌عنوان مثال فایل /boot/grub/grub.conf برای پیکربندی بوت‌لودر مورد استفاده قرار می‌گیرد و یا /boot/vmlinuz مربوط به هسته (Kernel) لینوکس است.

/dev: شامل نقاط دسترسی دستگاه‌های (Devices) متصل به سیستم است.

/etc: شامل تمام فایل‌های پیکربندی گسترده سیستم است. همچنین حاوی مجموعه‌ای از اسکریپت‌های پوسته می‌باشد که در حین بوت شدن سیستم آغاز می‌گردند.

/home: در حالت عادی هر کاربر دارای یک دایرکتوری /home می‌باشد. کاربران عادی فقط می‌توانند فایل‌های داخل دایرکتوری /home را دستکاری کنند. این محدودیت، سیستم را در برابر فعالیت کاربر مزاحم محافظت می‌نماید.

/lib: شامل فایل‌های کتابخانه‌ای مشترک که توسط برنامه‌های اصلی سیستم استفاده می‌شوند. عملکرد این فایل‌ها مشابه فایل‌های DLL در ویندوز هستند.

/lost+found: شامل پارتیشن یا دستگاهی که در فایل‌سیستم لینوکس استفاده می‌شوند. مانند ext3. این دایرکتوری در هنگام ریکاوری یک فایل‌سیستم کاربرد دارد.

/media: در سیستم‌های لینوکس امروزی، دایرکتوری /media حاوی نقاط اتصال (mount) رسانه‌های قابل جابجا شدن از جمله CD-ROM و USBها هستند.

/mnt: در سیستم‌های قدیمی‌تر لینوکس، دایرکتوری /mnt حاوی نقاط اتصال دستگاه‌های قابل جابجایی می‌باشد که به‌صورت دستی نصب شده‌اند.

/opt: دایرکتوری /opt برای نصب نرم‌افزار اختیاری (optional) استفاده می‌شود. این دایرکتوری عمدتاً برای نگهداری محصولات نرم‌افزاری تجاری مورد استفاده قرار می‌گیرد.

/proc: دایرکتوری /proc یک فایل‌سیستم مجازی است که توسط هسته لینوکس پشتیبانی می‌شود. فایل‌های داخل این دایرکتوری قابل خواندن بوده و به شما تصویری از نحوه عملکرد هسته لینوکس را ارائه می‌دهد.

/root: این دایرکتوری در واقع دایرکتوری home برای حساب کاربری ریشه (root) است.

/sbin: این دایرکتوری حاوی فایل‌های باینری سیستمی می‌باشد.

/tmp: دایرکتوری /tmp برای ذخیره فایل‌های موقت و گذرا ایجاد شده توسط برنامه‌های مختلف کاربرد دارد. برخی از تنظیمات باعث می‌شود که این دایرکتوری هر بار که سیستم راه‌اندازی مجدد می‌شود خالی شود.

/usr: بزرگترین شاخه از درخت فایل‌سیستم لینوکس دایرکتوری /usr می‌باشد که شامل برنامه‌ها و فایل‌های پشتیبانی شده توسط کاربران معمولی است.

/usr/bin: شامل برنامه‌های اجرایی نصب شده توسط توزیع لینوکس می‌باشد.

/usr/lib: شامل کتابخانه‌های مشترک برای برنامه‌هاست.

/usr/local: شامل برنامه‌هایی است که با توزیع لینوکسی نصب نشده‌اند اما برای استفاده از سیستم مورد نیاز می‌باشند.

/usr/local/bin: شامل برنامه‌های کامپایل شده از سورس کد می‌باشد.

/usr/sbin: شامل برنامه‌های مدیریت سیستم می‌باشد.

/usr/share: شامل تمام داده‌های به اشتراک گذاشته شده توسط برنامه‌ها در /usr/bin است. مواردی مانند فایل‌های پیش‌فرض پیکربندی، آیکون‌ها، تصویر پس‌زمینه و فایل‌های صوتی در این دایرکتوری قرار می‌گیرد.

/usr/share/doc: اکثر بسته‌های نصب شده بر روی سیستم که از نوع مستندات هستند.

/var: به غیر از دایرکتوری‌های /tmp و /home مابقی دایرکتوری‌هایی که بدان اشاره شد به‌صورت ایستا بوده‌اند، یعنی محتوای آن‌ها تغییر نمی‌کند. دایرکتوری /var جایی است که داده‌هایی که احتمال تغییر دارند ذخیره می‌شود. مانند پایگاه‌های داده و ایمیل کاربران.

/var/log: شامل فایل‌های log و سوابق فعالیت‌های مختلف سیستم می‌باشد.

منبع: کتاب The Linux Command Line نوشته William E. Shotts

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


بهمن ۹ ۱۳۹۶

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

systemd

امروزه اکثر توزیع های سیستم عامل گنو/لینوکس از systemd استفاده می کنند.با استفاده از systemd می توان سیستم و سرویس ها را مدیریت کرد که با اجرای دستور systemctl در خط فرمان این امکان وجود دارد که سرویس ها را بر روی ماشین محلی (local machine) و یا یک ماشین راه دور (remote server) مدیریت کرد.

برای کنترل سرویس های ماشین راه دور با استفاده از systemd بهتر است تا از public/private key pairs برای اتصال از طریق SSH استفاده کنید تا نیاز به وارد کردن password برای ماشین یا ماشین های راه دور نباشد.

برای کنترل سرویس های ماشین راه دور کافیست تا دستور systemctl را به همراه H- یا  host- –  استفاده کنید.به عنوان نمونه فرض کنید قصد داریم تا به کاربر root از سرور راه دور به آدرس fedorafans.com وصل شویم و وضعیت سرویس httpd آن را بررسی کنیم :

 

$systemctl --host root@fedorafans.com status httpd.service

 

 

یا می توان از این دستور نیز استفاده کرد :

 

$systemctl -H root@fedorafans.com status httpd.service

همچنین شما می توانید سرویس مورد نظر را stop,start.restart,enable,disable و … کنید :

 

systemctl --host root@fedorafans.com start httpd.service
systemctl --host root@fedorafans.com stop httpd.service
systemctl --host root@fedorafans.com restart httpd.service
systemctl --host root@fedorafans.com enable httpd.service
systemctl --host root@fedorafans.com disable httpd.service

 

برای اطلاعات بیشتر در مورد دستور systemctl کافیست تا راهنمای آن را مطالعه کنید :

 

$man systemctl

امید است تا از این مطلب استفاده لازم را برده باشید.

 


بهمن ۳ ۱۳۹۶

آموزش خط فرمان: قسمت سوم، حرکت در خط فرمان

نوشته شده توسط فرشید نوتاش حقیقت.

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

فرمان ls: لیست کردن محتوای دایرکتوری

فرمان file: مشاهده محتویات فایل

فرمان less: آشنایی بیشتر با فرمان ls

با استفاده از ls می‌توان محتویات دایرکتوری را مشاهده کرد و انواع مختلفی از ویژگی‌های فایل و دایرکتوری را تعیین نمود.

علاوه بر دایرکتوری جاری، می‌توان هر دایرکتوری دلخواهی را با فرمان ls اجرا کرد:

یا حتی چندین دایرکتوری را مشخص نمود. در این مثال از دایرکتوری home کاربر (که با ~ نشان داده شده) و دایرکتوری /usr استفاده شده است:

همچنین می‌توان فرمت خروجی را برای نمایش جزئیات بیشتر تغییر داد:

با افزودن –l به فرمان، خروجی با فرمت طولانی‌تری نمایش داده خواهد شد.

گزینه‌ها و آرگومان‌ها (Options and Arguments)

فرمان‌ها به کمک یک یا چند گزینه (Option) و آرگومان (Argument) رفتار خود را می‌توانند تغییر دهند. بنابراین فرمت اکثر فرمان‌ها چنین است:

command –options argument

اکثر فرمان‌ها از گزینه‌های متشکل از یک کاراکتر به همراه خط تیره استفاده می‌کنند. (مانند -l) اما برخی از فرمان‌ها از جمله آن‌هایی که از پروژه GNU پشتیبانی می‌کنند، متشکل از یک کلمه به همراه دو خط تیره هستند. همچنین بسیاری از فرمان‌ها اجازه می‌دهند تا گزینه‌های چندگانه با هم هماهنگ شوند. در این مثال، فرمان ls دارای دو گزینه است. گزینه l برای تولید خروجی فرمت طولانی و گزینه t برای مرتب‌سازی نتایج بر اساس زمان اصلاح فایل می‌باشد:

در ادامه گزینه طولانی –reverse را برای مرتب‌سازی به‌صورت معکوس اضافه شده است:

فرمان ls تعداد زیادی از گزینه‌ها را داراست که به برخی از آن‌ها اشاره می‌کنیم:

شرح Long Option Option
تمامی فایل‌های موجود (حتی فایل‌های hidden) را لیست می‌کند. –all -a
اگر دایرکتوری مشخص شود فرمان ls محتویات دایرکتوری را لیست می‌کند، نه خود دایرکتوری را. –directory -d
این گزینه یک کاراکتر شاخص را به انتهای هر نام اضافه می‌نماید. (به‌عنوان مثال در جلوی نام یک پوشه، علامت اسلش قرار می‌گیرد.) –classify -F
در لیست‌های طولانی، اندازه فایل‌ها را به جای استفاده از بایت در فرمت قابل خواندن برای انسان نمایش می‌دهد. –human-readable -h
نتایج را با فرمت طولانی نمایش می‌دهد. -l
نتایج را به‌صورت معکوس مرتب می‌کند. معمولاً فرمان ls نتایج را به ترتیب حروف الفبا نمایش می‌دهد. –reverse -r
نتایج را بر اساس سایز نمایش می‌دهد. -S
نتایج را بر اساس زمان اصلاح نمایش می‌دهد. -t

تعیین نوع فایل با فرمان file

از فرمان file برای تعیین نوع فایل استفاده می‌شود. فرمان file به شکل زیر اجرا می‌گردد:

file filename

هنگام اجرا، فرمان file توضیحی مختصر را از محتویات فایل چاپ می‌کند. به عنوان مثال:

همانطور که می‌دانید انواع مختلفی از فایل‌ها وجود دارد. در سیستم‌های مبتنی بر یونیکس از جمله لینوکس یک اصل همیشگی وجود دارد که «همه چیز فایل است.»

مشاهده محتویات فایل با فرمان less

فرمان less برنامه‌ای برای مشاهده فایل‌های متنی است. در لینوکس فایل‌های زیادی هستند که متن قابل خواندن می‌باشد. فرمان less برنامه‌ای برای مشاهده فایل‌های متنی است.

حال چرا نیاز است فایل‌های متنی بررسی شوند؟ از آنجا که بسیاری از فایل‌ها که حاوی تنظیمات سیستم هستند (فایل‌های پیکربندی) در این فرمت ذخیره می‌شوند و قابلیت خواندن دارند که به ما می‌گوید سیستم چگونه کار می‌کند. علاوه بر این بسیاری از برنامه‌ها هستند که سیستم آن‌ها را در این فرمت ذخیره می‌کند. این برنامه‌ها اسکریپت (Script) نامیده می‌شوند.

در آموزش‌های بعدی یاد خواهید گرفت که چگونه فایل‌های متنی را تغییر دهید تا تنظیمات سیستم تغییر یابند و چگونه اسکریپت بنویسید. اما در این آموزش فقط به محتوای آن‌ها نگاه خواهیم کرد. از فرمان less این گونه استفاده می‌شود:

less filename

به محض شروع، فرمان less اجازه می‌دهد تا از طریق یک فایل متنی به جلو و عقب حرکت کنید. به‌عنوان مثال، برای بررسی فایل که تمام حساب‌های کاربر سیستم را تعریف می‌کند، فرمان زیر را وارد کنید:

هنگامی که برنامه less آغاز به کار می‌کند، می‌توان محتویات فایل را مشاهده نمود. اگر فایل، طولانی‌تر از یک صفحه باشد می‌توانیم به بالا یا پایین پیمایش کنیم. برای خروج از less از دکمه Q استفاده می‌گردد.

فعالیت فرمان
یک صفحه به عقب می‌رود. Page Up  یا b
یک صفحه به جلو می‌رود. Page Down یا Spacebar
یک خط بالا می‌رود. کلید جهت‌نمای بالا
یک خط پایین می‌رود. کلید جهت‌نمای پایین
به انتهای فایل متنی می‌رود. G
به ابتدای فایل متنی می‌رود. ۱G یا g
characters را رو به جلو جستجو می‌کند. /characters
برای رویداد بعدی رو به عقب جستجو می‌کند. n
صفحه راهنما (help) را نمایش می‌دهد. h
از less خارج می‌شود. q

منبع: کتاب The Linux Command Line نوشته William E. Shotts

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


بهمن ۱ ۱۳۹۶

آموزش خط فرمان: قسمت دوم، ناوبری در ترمینال

نوشته شده توسط فرشید نوتاش حقیقت.

برای استفاده از ترمینال به غیر از تایپ کردن می‌بایست حرکت کردن در فایل‌سیستم لینوکس را آموخت.در این آموزش، فرمان‌های زیر را معرفی خواهیم کرد:

فرمان pwd: نمایش نام دایرکتوری جاری

فرمان cd: تغییر دایرکتوری

فرمان ls: لیست کردن محتوای دایرکتوری

درک درخت فایل‌سیستم

همانند ویندوز، سیستم‌عامل لینوکس فایل‌های خود را به‌صورت سلسله‌مراتبی در دایرکتوری‌ها قرار می‌دهد که به آن ساختار دایرکتوری سلسله‌مراتبی (hierarchical directory structure) گفته می‌شود. این بدین معنی است که فایل‌ها در یک الگوی درختی از دایرکتوری‌ها (که بعضاً به آن‌ها Folder هم می‌گویند.) سازماندهی می‌شود.

اولین دایرکتوری موجود در فایل‌سیستم، دایرکتوری ریشه (root directory) نام دارد. دایرکتوری root که با علامت / نمایش داده می‌شود شامل تمامی فایل‌ها و زیردایرکتوری‌ها است که خود آن‌ها نیز فایل‌ها و دایرکتوری‌هایی را شامل می‌شوند.

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

دایرکتوری جاری (دایرکتوری کاری)

اکثر ما احتمالاً با یک مدیر گرافیکی که درخت فایل‌سیستم را نشان می‌دهد، آشنا هستیم. (همانند شکل زیر)

تصویر فوق گویای نمایش سلسله‌مراتبی دایرکتوری‌ها است اما باید توجه داشت که خط فرمان هیچ‌گونه نمای بصری ندارد. بنابراین برای حرکت در درخت فایل‌سیستم باید از روش دیگری استفاده کرد. در خط فرمان و در هر زمان معین همیشه در یک دایرکتوری خاص هستیم و می‌توان فایل‌های موجود در دایرکتوری و مسیر دایرکتوری بالاتر (دایرکتوری والد) و زیردایرکتوری‌ها را مشاهده کرد. دایرکتوری که در آن هستیم دایرکتوری جاری نام دارد که برای نمایش آن از فرمان pwd (سرنام واژگان print working directory) استفاده می‌شود:

هنگامی که ترمینالی را برای اجرای فرمان‌ها می‌گشاییم دایرکتوری جاری در دایرکتوری home مستقر می‌گردد. هر حساب کاربری به دایرکتوری home خود ارجاع داده می‌شود.

لیست محتویات یک دایرکتوری

برای لیست کردن فایل‌ها و دایرکتوری‌های دایرکتوری جاری از فرمان ls استفاده می‌شود:

در واقع می‌توان از فرمان ls برای لیست کردن محتویات هر دایرکتوری استفاده کرد.

تغییر دایرکتوری جاری

برای تغییر جاری از فرمان cd استفاده می‌شود. برای استفاده ابتدا cd را تایپ کرده و پس از آن نام دایرکتوری مورد نظر نوشته می‌شود. نام دایرکتوری در واقع مسیری است متشکل از شاخه‌های درخت فایل‌سیستم و دایرکتوری که می‌خواهیم به آن دسترسی داشته باشیم. به این مسیر اصطلاحاً Pathname می‌گویند که می‌توان آن را با دو روش مطلق و نسبی مشخص کرد. ابتدا با روش مطلق شروع می‌کنیم.

Pathname مطلق

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

مشاهده می‌شود که دایرکتوری جاری به /usr/bin تغییر یافته است که حاوی فایل‌های متعددی است. توجه داشته باشید اعلان پوسته چگونه تغییر یافته است به جای دایرکتوری home (علامت ~) دایرکتوری جاری یعنی bin قرار گرفته است.

Pathname نسبی

یک Pathname مطلق از دایرکتوری root شروع شده و به مقصد آن منتهی می‌شود اما Pathname نسبی از دایرکتوری جاری شروع می‌شود. برای این کار، از دو علامت خاص برای نشان دادن Pathname نسبی استفاده می‌شود. این علائم ویژه، نقطه (.) و دونقطه (..) می‌باشد. نماد نقطه به دایرکتوری جاری و نماد دونقطه به دایرکتوری والد دایرکتوری جاری اشاره می‌کند.

حال به چگونگی کارکرد آن خواهیم پرداخت. به عنوان نمونه دایرکتوری جاری را دوباره به /usr/bin تغییر دهید:

اکنون می‌خواهیم دایرکتوری کاری را از /usr/bin به والد آن یعنی /usr تغییر مسیر دهیم. برای این کار می‌توان از دو روش استفاده کرد. روش Pathname مطلق:

یا به‌وسیله Pathname نسبی:

در هر دو روش نتیجه، یکسان است. حال باید از کدام یک استفاده کنیم؟ از روشی که نیاز به تایپ کمتری دارد!

به همین ترتیب می‌توان دایرکتوری جاری را از /usr به /usr/bin تغییر دهیم، روش Pathname مطلق:

و یا از طریق روش Pathname نسبی:

برخی از میانبرهای مفید

نتیجه

میانبر
دایرکتوری جاری را به دایرکتوری home سیستم شما تغییر می‌دهد. cd
دایرکتوری جاری را به آخرین دایرکتوری جاری تغییر می‌دهد. cd –
دایرکتوری جاری را به دایرکتوری home کاربر username تغییر می‌دهد. به عنوان مثال cd ~bob دایرکتوری جاری را به دایرکتوری home کاربر bob تغییر می‌دهد. cd ~username

منبع: کتاب The Linux Command Line نوشته William E. Shotts

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


دی ۱۸ ۱۳۹۶

آموزش کامنت کردن چند خط در شل اسکریپت

bash

شاید برای شما هم پیش آمده باشد که بخواهید درون shell script خود چند خط را comment کنید.مثلا در زبان برنامه نویسی c++/c برای کامنت کردن چند خط، در ابتدای خط مورد نظر */ قرار می دهند و در پایان خط مورد نظر از /* استفاده می کنند.یک نمونه از کد را در پایین مشاهده می کنید :

 

 

/*
my c code
comment # 2
blah
foo bar
….
*/

 

اما راه حل برای شل اسکریپت چیست؟

برای کامنت کردن خط در شل اسکریپت در ابتدای خط مورد نظر علامت # قرار داده می شود.به عنوان نمونه :

 

# my comment goes here

برای کامنت کردن چند خط نیز می توانید به صورت زیر عمل کنید :

 

# my comment 1
# my comment 2
# my comment N

 

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

 

#!/bin/bash
echo “Say Something”
<<COMMENT1
your comment 1
comment 2
blah
COMMENT1
echo “Do something else”

 

 

 

 

همانطور که در مثال بالا مشاهده می کنید، دستورات بین  COMMENT1>> تا COMMENT1 به صورت کامنت می باشند.

 

روش دیگر برای کامنت کردن چند خط در شل اسکریپت به صورت زیر می باشد :

 

#!/bin/bash
foo=bar
: ‘
This is a test comment
Author foo bar
Released under GNU

echo “Init…”
# rest of script

 

 

 

 

 

همانطور که در مثال بالا می بینید دستوراتی که بین ‘  : و  ‘ می باشند به صورت کامنت می باشند.در واقع ساختار کلی آن به این صورت می باشد :

 

 

: ‘
your comments here

 

امید است تا از این مطلب استفاده لازم را برده باشید.

 


آذر ۴ ۱۳۹۶

بررسی قیمت ارزهای رمزنگاری در خط فرمان با Coinmon

bitcoin

 

مدت هاست که پول یا به عبارت بهتر ارزهای رمزنگاری (Cryptocurrencies) به وجود آمده اند و دنیای جدیدی بوجود آورده اند.از معروف ترین آنها می توان به بیت کوین (Bitcoin) اشاره کرد که در حال حاضر قیمت آن حدود ۸۰۰ هزار دلار است.

سایت ها و ابزارهای مختلفی جهت نمایش قیمت این ارزهای رمزنگاری وجود دارد که در این مطلب قصد دارم که نرم افزار coinmon را به شما معرفی کنم که به راحتی بتوان از طریق دنیای دوست داشتنی shell و خط فرمان قیمت لحظه ای این ارزهای رمزنگاری را بدست بیاورید.

 

coinmon-logo

در واقع coinmon این اطلاعات را از سایت coinmarketcap.com دریافت می کند و به صورت منظم در خط فرمان نمایش می دهد.جهت نصب coinmon کافیست تا مراحل ساده ی زیر را انجام دهید.

 

نصب coinmon :

 

ابتدا nodejs را بر روی سیستم خود نصب کنید.توجه کنید که نسخه ی nodejs 6 به بالا مورد نیاز می باشد.سپس برای نصب coinmon این دستور را اجرا کنید :

 

 

#npm install -g coinmon

 

پس از نصب کافیست تا دستور coinmon را در ترمینال خود وارد کنید تا قیمت ارزهای رمزنگاری را مشاهده کنید.در پایین تصویری از اجرای برنامه را مشاهده می کنید :

 

 

coinmon

واحد پولی که coinmon به صورت پیش فرض استفاده می کند USD می باشد.اما coinmon از واحد های پولی زیادی از جمله AUD, BRL, CAD, CHF, CLP, CNY, CZK, DKK, EUR, GBP, HKD, HUF, IDR, ILS, INR, JPY, KRW, MXN, MYR, NOK, NZD, PHP, PKR, PLN, RUB, SEK, SGD, THB, TRY, TWD, ZAR پشتیبانی می کند.

 

جهت تغییر واحد پول نمایشی کافیست از سوئیچ c- یا convert– استفاده کنید.مثلا برای تبدیل به واحد پول ژاپن که yen می باشد می توان از این دستور استفاده کرد :

 

 

$ coinmon -c jpy

برای پیدا کردن یک ارز رمزنگاری خاص می توانید از سوئیچ f- یاfind — استفاده کنید.به عنوان نمونه برای پیدا کردن Bitcoin یا همان BTC می توان از این دستور استفاده کرد :

 

 

$ coinmon -f btc

 

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

 

$coinmon –help

 

برای اطلاعات بیشتر در مورد نرم افزار coinmon نیز می توانید پروژه ی آن را بر روی github به آدرس زیر مشاهده کنید :

 

 

https://github.com/bichenkk/coinmon

امید است تا از این برنامه استفاده ی لازم را ببرید و پول پارو کنید ! 😉