بهمن ۳ ۱۳۹۶

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

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

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

فرمان 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

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


دی ۲۸ ۱۳۹۶

آموزش خط فرمان: قسمت اول، Shell چیست؟

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

وقتی از خط فرمان سخن می‌گوییم در واقع به Shell (پوسته) اشاره می‌کنیم. Shell برنامه‌ای است که فرمان‌ها را از صفحه‌کلید می‌گیرد و به سیستم‌عامل منتقل می‌کند. تقریباً تمامی توزیع‌های لینوکسی یک برنامه Shell را از پروژه GNU تحت عنوان bash پشتیبانی می‌کنند. Bash سرنام واژگان Bourne Again Shell بوده که توسط استیو بورن نوشته شده است.

شبیه‌سازهای ترمینال

هنگام استفاده از یک رابط گرافیکی نیازمند برنامه دیگری تحت عنوان شبیه‌ساز ترمینال برای تعامل با پوسته خواهید بود. KDE از console و GNOME از gnome-terminal استفاده می‌کند. تعداد دیگری از شبیه‌سازهای ترمینال برای لینوکس وجود دارد که اساس کار آن‌ها یکسان است و امکان دسترسی به پوسته را به ما می‌دهد.

هنگامی که شبیه‌ساز ترمینال را می‌گشایید، می‌بایست چیزی شبیه به این را ببینید:

این نشان‌دهنده اعلان پوسته (shell prompt) نامیده می‌شود. ممکن است اعلان پوسته در سیستم شما کمی متفاوت باشد. معمولاً نام کاربری username@machinename بوده و سپس دایرکتوری جاری (در این باره بیشتر توضیح خواهیم داد) و علامت دلار است.

اگر آخرین کاراکتر به جای دلار، # باشد بدین معنا است ترمینال دارای دسترسی‌ها و مجوزهای کاربر superuser می‌باشد. این بدین معناست که ما به‌عنوان کاربر root (ریشه) وارد شده‌ایم و یا یک ترمینال را با امتیازات superuser (چیزی شبیه Administrator در سیستم‌های ویندوزی) وارد شده‌ایم.

حال با تایپ کردن، ترمینال آزمایش می‌کنیم:

با توجه به اینکه این فرمان موجود نیست، پوسته به شما فرصت دیگری می‌دهد.

تاریخچه فرمان

اگر دکمه جهت‌نمای بالا را بفشارید مشاهده خواهید کرد که فرمان قبلی (kaekfjaeifj) پس از اعلان ظاهر می‌شود. به این ویژگی تاریخچه فرمان (Command History) می‌گویند. به‌طور پیشفرص اکثر توزیعات لینوکسی ۵۰۰ فرمان را به‌خاطر می‌سپارند. فشردن کلید جهت‌نمای پایین، فرمان قبلی را از بین می‌برد.

مکان‌نما (Cursor)

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

چند فرمان ساده

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

فرمان بعدی، فرمان cal می‌باشد که به‌طور پیشفرض تقویم ماه جاری را نمایش می‌دهد:

برای دیدن مقدار فضای فعلی روی درایورهای دیسک خود از فرمان df استفاده خواهید کرد:

به همین ترتیب برای نمایش مقدار حافظه آزاد، از فرمان free استفاده می‌گردد:

با بستن پنجره ترمینال و یا با استفاده از فرمان exit می‌توانید از ترمینال خارج شوید:

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

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


دی ۱۸ ۱۳۹۶

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

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

 

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