LINUX

آموزش لینوکس

LINUX

آموزش لینوکس

LINUX

این وبلاگ به بحث پیرامون لینوکس و امنیت و زبان برنامه نویسی تحت لینوکس می پردازد.

طبقه بندی موضوعی

۲۱ مطلب در خرداد ۱۳۹۳ ثبت شده است

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

وقتی شما یک دستوری رو توی سیستم اجرا میکنید یا چیزی رو ایجاد میکنید و ... سیستم برای شما یک پراسه ایجاد میکنه. 

هر پراسه یک آی دی داره که به اصطلاح بهش Process ID یا pid گفته میشه. همچنین هیچ دو پراسه های با آی دی های یکسان ذر سیستم وجود نخواهند داشت.


شروع پراسه

برای به اجرا در آوردن ی پراسه شما دو راه دارید:

 - Foreground Processes

- Background Processes


پراسه های Foreground

هر پراسه ای که در foreground اجرا میشه یک خروجی رو برای شما به نمایش میذاره. معمولا دستور ها در حالت عادی به این حالت اجرا میشن. به عنوان مثال:

$ ls ch*.doc
ch01-1.doc   ch010.doc  ch02.doc    ch03-2.doc 
ch04-1.doc   ch040.doc  ch05.doc    ch06-2.doc
ch01-2.doc   ch02-1.doc


همونطور که شما میبینید خروجی دستور ls در صفحه نشون داده شده است.

۱ نظر موافقین ۰ مخالفین ۰ ۳۰ خرداد ۹۳ ، ۱۵:۴۷
مرتضی

حلقه های for در پایتون این قابلیت رو دارن که بتونن یک جمله یا لیست یا رشته و یا هرچیز دیگه ای رو به صورت متوالی انجام بدن یا خروجی اون رو چاپ کنن.


قاعده

قاعده استفاده از حلقه های for در پایتون به صورت زیر است:

for iterating_var in sequence:
   statements(s)


مقدار یا عبارتی که بعنوان iterating_var مشخص می شود تا هنگامی که sequence ادامه داشته باشد بررسی میشود.


شمای کلی


۰ نظر موافقین ۰ مخالفین ۰ ۳۰ خرداد ۹۳ ، ۱۳:۴۳
مرتضی

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

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

while expression:
     statement(s)

۰ نظر موافقین ۰ مخالفین ۰ ۲۲ خرداد ۹۳ ، ۲۳:۰۰
مرتضی

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


دستور grep

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

$ grep pattern file(s)


جمله زیر گرفته شده است:

globally search for a regular expression and print all lines containing it.


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

$ls -l | grep "Aug"
-rw-rw-rw-   1 john  doc     11008 Aug  6 14:10 ch02
-rw-rw-rw-   1 john  doc      8515 Aug  6 15:30 ch07
-rw-rw-r--   1 john  doc      2488 Aug 15 10:51 intro
-rw-rw-r--   1 carol doc      1605 Aug 23 07:35 macros
$

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


۰ نظر موافقین ۰ مخالفین ۰ ۲۲ خرداد ۹۳ ، ۲۰:۲۴
مرتضی

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

در ادامه به بیان فرم کلی آن میپردازم:


در پایتون هر مقدار غیر صفر یا non-zero و هر مقدار غیر هیچ یا non-null ارزشی برابر true دارد و مقادیر zero و null ارزشی برابر false دارد.


تک شرطی ها

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

#!/usr/bin/python
var = 100
if ( var == 100 ) : print "Value of expression is 100"
print "Good bye!"


وقتی شما اسکریپت بالا را به اجرا در می آورید خروجی زیر قابل مشاهده خواهد بود:

ٰValue of expression is 100
Good bye!

۲ نظر موافقین ۱ مخالفین ۰ ۱۶ خرداد ۹۳ ، ۱۶:۰۹
مرتضی

به نظرم میرسه که تا حالا موارد ابتدایی خوبی از یونیکس رو به شما گفته باشم و فکر میکنم دوستانی که تا حالا دنبال کرده باشن از پیشرفشون راضی باشند. در این بخش از آموزش میرم سراغ استفاده های کاربردی تری که ممکنه در طول روز نیازتون بشه.


پرینت کردن فایل ها

قبل از پرینت گرفتن یک فایل ممکنه شما بخواین فرمت اون رو مثل حاشیه ها یا دیگر بخش های متن رو درش ی تغییراتی بدید. در اکثر سیستم های مبتنی بر یونیکس دو ابزار قدرتمند فرمت دهنده به نام های nroff و troff هستند. البته در این بخش از آموزش به معرفی این دو ابزار نمیپردازم و شاید در آینده راجع بهش توضیح بدم.


دستور pr

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

$ pr option(s) filename(s)


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

- k- : به تعدادی که به k میدهید به ازای خروجی برای شما ستون تولید میکند.

- d- : فضای خروجی را دو برابر میکند.

- "h "header- : آیتم بعدی را به عنوان هدر از شما میگیرد.

- t- : هدر و حاشیه های بالا و پایین متن را حذف میکند.

- l PAGE_LENGTH- : صفحه را از حالت پیش فرض که ۵۶ خط می باشد تا ۶۶ خط افزایش میدهد.

- o MARGIN- : حاشیه ها را برابر صفر میکند.

- w PAGE_WIDTH- : پهنای صفحه را تا ۷۲ کاراکتر افزایش میدهد. که این حالت برای متن هایی ست که چند ستون هستند.


برای بهتر درک کردن توضیحات داده شده به مثال های زیر توجه کنید: (خیلی وقت ها در لینوکس خیلی مسائل رو تا با مثال بررسی نکنید متوجه نمیشید)


فرض کنید فایلی به صورت زیر دارید:

$cat food
Sweet Tooth
Bangkok Wok
Mandalay
Afghani Cuisine
Isle of Java
Big Apple Deli
Sushi and Sashimi
Tio Pepe's Peppers
........
$

۱ نظر موافقین ۰ مخالفین ۰ ۱۶ خرداد ۹۳ ، ۱۵:۰۱
مرتضی

عملگر چیست؟

یک جواب ساده برای این سوال اینه که وقتی یک عبارتی مثل 4 + 5 داریم و جمعشون برابر 9 میشه به 4 و 5 میگیم عملوند و به + میگیم عملگر. یعنی چیزی که روی عملوند ها تاثیر میذاره و ی خروجی به ما میده.  در زیر به انواع عملگرها اشاره میکنم:


- عملگرهای ریاضی یا Arithmetic Operators

- عملگرهای قیاسی یا Comparison Operators

- عملگرهای انتسابی یا Assignment Operators

- عملگرهای منطقی یا Logical Operators

- عملگرهای بیتی یا Bitwise Operators

- عملگرهای عضوی یا Membership Operators

- عملگرهای شناسه یا Identity Operators


حالا میخوام ی نگاه دقیق تری به این عملگر ها بندازم.


عملگرهای ریاضی در پایتون

اگر فرض کنیم متغیر a مقداری برابر 10 و متغیر b دارای مقدار 20 هستند سپس:

- +: دو مقدار را با هم جمع میکند -           a+b=30

- - : دو مقدار را از هم کم میکند -         a - b = -10

- * : دو مقدار را در هم ضرب میکند -        a*b=200

- / : خارج قسمت تقسیم دو عدد را نشان میدهد -  a/b=2

- % : باقیمانده تقسیم دو عدد بر یکدیگر را نشام میدهد - a%b=0

- ** : عدد اول را به توان عدد دوم میبرد - a**b=> ده به توان بیست

- // : خارج قسمت تقسیم دو عدد بر یکدیگر را به صورت عدد صحیح نشان میدهد. برای مثال 4=2//9


       

عملگرهای قیاسی در پایتون

با همان فرض داریم:

- == : چک میکند که آیا مقادیر a و b با هم برابر هستند یا خیر. اگر برابر بودند شرط درست است.

- =! : چک میکند که آیا مقدار آن دو متغیر با هم نابرابر است یا خیر. اگر نابرابر بود شرط درست است.

- <> : این عملگر دقیقا مانند عملگر قبل می باشد.

- < : چک میکند که آیا متغیر اول بزرگتر از دومی است یا خیر. اگر بزرگتر بود شرط درست است.

- > : چک میکند که آیا متغیر اول کوچکتر از دومی است یا خیر. اگر کوچکتر بود شرط درست است.

- =< : چک میکند آیا متغیر اول بزرگتر یا مساوی دومی است یا خیر. اگر بزرگتر یا مساوی بود شرط درست است.

- => :چک میکند که آیا متغیر اول کوچکتر یا مساوی دومی است یا خیر. اگر کوچکتر یل مساوی بود شرط درست است.

۲ نظر موافقین ۰ مخالفین ۰ ۱۵ خرداد ۹۳ ، ۲۲:۳۸
مرتضی

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


یونیکس از یک ساختار سلسله مراتبی برای سازماندهی دایرکتوری ها استفاده میکند. این ساختار به ساختار درختی نیز مشهور است. این درخت یک گره ریشه و اصلی دارد که با / نمایش داده میشود. همه دایرکتوری ها و فایلها زیرمجموعه همین گره هستند.


دایرکتوری home

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

$ cd ~
$


علامت ~ نشان دهنده دایرکتوری خانه می باشد.شما میتوانید بعد از این علامت ادامه مسیر خود را مشخص کنید:

$ cd ~/Documents/
user@hostname:~/Documents$ 


شما بوسیله دستور زیر میتوانید به آخرین دایرکتوری که در آن حضور داشتید بازگردید:

$ cd -
$


۰ نظر موافقین ۰ مخالفین ۰ ۱۵ خرداد ۹۳ ، ۱۵:۰۸
مرتضی

متغیرها فضاهای رزرو شده در مموری هستند که مقادیری را ذخیره میکنند. این بدان معنی ست که وقتی شما متغیری را تعریف میکنید مقداری از فضا در مموری را رزرو میکنید.

با توجه به نوع متغیر مترجمی وجود دارد که تشخیص میدهد چه چیزی میتواند در مموری رزرو شده ذخیره شود. با توجه به توضیحات داده شده شما میتوانید داده هایی از توع integer یا کاراکترها یا ... را ذخیره کنید.


تخصیص مقدار به متغیرها

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

#!/usr/bin/python
counter = 100      # An integer assignment
miles = 1000.0     # A floating point
name = "john"      # A string
print counter
print miles
print name

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


تخصیص چندتایی

در پایتون متغیرها را به روش دیگری  نیز که به طور همزمان مقداردهی میشوند میتوان تعریف کرد که در ادامه مثالی از آن آورده شده است:

a, b, c = 1, 2, "john"

در مثال بالا متغیر اول و دوم از نوع عدد و متغیر سوم از نوع رشته می باشد.

۰ نظر موافقین ۰ مخالفین ۰ ۱۵ خرداد ۹۳ ، ۱۲:۵۶
مرتضی

یک مفهوم بسیار مهم در یونیکس بحث environment یا محیط می باشد که بواسطه آن متغیرهای محیطی تعریف میشوند. بعضی از آنها توسط سیستم و بعضی از آنها توسط شما ایجاد میشوند.

یک متغیر کاراکتری از نوع رشته می باشد که ما به آن مداری را تخصیص میدهیم. این نقدار میتواند عدد یا متن یا نام فایل یا هر دیوایسی یا نوع داده های دیگری باشید. برای مثال ما متغیر TEST را به صورت زیر تعریف میکنیم:

$ TEST="Unix Programming"
$ echo $TEST
Unix Programming


بخاطر داشته باشید که متغیر ها هنگام تعریف از $ استفاده نمیکنند اما هنگام فراخوانی باید برای آنها از $ استفاده کرد. همچنین بهتر از نام متغیرها با حروف بزرگ باشد.

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

* etc/profile/

* profile


این پروسه مراحل زیر را دنبال میکند:

۱) شل ابتدا بررسی میکند که آیا فایل etc/profile/ وجود دارد یا خیر.


۲) اگر آن فایل وجود داشت شل آن را میخواند. در صورتی که این فایل وجود نداشت شل خطایی را چاپ نمیکند.


۳) در این مرحله شل چک میکند که آیا فایل profile.  در دایرکتوری home وجود دارد یا خیر. دایرکتوری home دایرکتوری می باشد که به محض باز شدن ترمینال شما کار را از آنجا آغاز خواهید کرد.


۴) اگر این فایل وجود داشت شل آن را میخواند و در غیر این صورت شل آن را نادیده گرفته و خطایی چاپ نمیکند.


به محض اینکه این دو فایل خوانده شد شل برای شما محیط prompt را نمایش میدهد:


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

نکته قابل توجه اینکه شما در این محیط میتوانید انواع شل ها را اعم از bash  و ksh و... به اجرا در بیاورید.


فایل profile.

فایل etc/profile/ در یونیکس توسط ادمین نگه داری میشود.

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


۱) نوع ترمینالی که از آن استفاده میکنید.

۲) لیست دایرکتوری ها در جایی که دستورات وجود دارند.

۳) لیست متغیرهایی که شما میبینید یا حس میکنید که روی ترمینال شما اثر میگذارند.


شما میتوانید فایل profile. را در دایرکتوری خانه خود از طریق دستور vim باز کنید و محتویات آن  متغیرهایی که وجود دارند را ببینید.

۰ نظر موافقین ۰ مخالفین ۰ ۱۴ خرداد ۹۳ ، ۱۵:۰۰
مرتضی