LINUX

آموزش لینوکس

LINUX

آموزش لینوکس

LINUX

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

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

۱۰ مطلب با موضوع «Linux :: Unix for Beginners» ثبت شده است

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


ابزار ping:

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

- اطمینان از در دسترس بودن و بررسی وضعیت سخت افزارهای شبکه

- بررسی وضعیت شبکه و سیستم های متصل به آن

- امتحان کردن و مدیریت شبکه


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

user@hostname:~$ ping <hostname>/<ip_address> <options>


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

user@hostname:~$ ping google.com
PING google.com (216.58.208.238) 56(84) bytes of data.
64 bytes from par10s22-in-f238.1e100.net (216.58.208.238): icmp_seq=1 ttl=48 time=110 ms
64 bytes from par10s22-in-f238.1e100.net (216.58.208.238): icmp_seq=2 ttl=48 time=110 ms
64 bytes from par10s22-in-f238.1e100.net (216.58.208.238): icmp_seq=3 ttl=48 time=111 ms
^C
--- google.com ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2001ms
rtt min/avg/max/mdev = 110.774/111.106/111.588/0.348 ms

۰ نظر موافقین ۰ مخالفین ۰ ۲۵ آذر ۹۴ ، ۱۰:۴۸
مرتضی
در بخش قبل به توضیحی درباره متغیرها پرداختم و الان میخوام به بررسی متغیرهای مخصوصی در زبان bash بپردازم.
برای مثال اگر میخواین pid شل که در حال اجراست رو در بیارید میتونید به صورت زیر عمل کنید:
$ echo $$
29949

حالا میخوام به توضیح مختصری در باره این نوع متغیرها بپردازم و در انتها هم یک مثال براتون بیارم:
- $0 : نام اسکریپتی که در حال نوشتن اون هستید رو نمایش میده:
- n$ : در این جا شما میتونید به جای n مقدار عددی مثبت رو قرار بدید. مثلا 1$ بیانگر پارامتر اولی هست که به اسکریپت میدید و ....
- #$ : این علامت بیانگر تعداد پارامترهایی هست که این اسکریپت نیاز داره تا با اون ها اجرا بشه. یا تعداد پارامترهایی که اسکریپت با اون اجرا شده.
- *$ : تمام پارامتر ها رو به نمایش میذاره
- @$ : این هم مانند قبل همه پارامتر ها رو نشون میده
- ?$ : این متغیر وضعیت خروج آخرین دستور زده شده رو به صورت یک عدد به شما نمایش میده. مثلا اگر دستور آخری که اجرا کردید موفقیت آمیز بوده و صحیح بده مقدار 0 رو بر میگردونه و اگر دستور یا اسکریپت با موفقیت به اجرا در نیامد مقدار 1- را بر میگرداند
- $$ : شماره پراسه شل در حال اجرا یا شلی که در اون هستید رو بر میگردونه
- !$ : شماره پراسه آخرین دستوری که در background اجرا شده رو نمایش میده
۰ نظر موافقین ۰ مخالفین ۰ ۰۶ تیر ۹۳ ، ۲۰:۴۴
مرتضی

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

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

هر پراسه یک آی دی داره که به اصطلاح بهش 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 در صفحه نشون داده شده است.

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

شما میتونید دو دستور رو با استفاده از روش 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 دیده شد آن را نمایش میدهد.


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

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


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

قبل از پرینت گرفتن یک فایل ممکنه شما بخواین فرمت اون رو مثل حاشیه ها یا دیگر بخش های متن رو درش ی تغییراتی بدید. در اکثر سیستم های مبتنی بر یونیکس دو ابزار قدرتمند فرمت دهنده به نام های 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
........
$

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

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


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


دایرکتوری home

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

$ cd ~
$


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

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


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

$ cd -
$


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

یک مفهوم بسیار مهم در یونیکس بحث 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 باز کنید و محتویات آن  متغیرهایی که وجود دارند را ببینید.

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

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


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

۱) فایل های معمولی یا Ordinary Files

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


۲) دایرکتوری ها یا Directories

دایرکتوری ها میتوانند در خود دو دسته از فایل های ساده و مخصوص رو نگه داری کنند. برای کاربرانی که با ویندوز یا mac کار گردند میتونم بگم که تقریبا دایرکتوری ها همون فولدر ها هستند.


۳) فایل های مخصوص یا Special Files

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



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

برای لیست کردن فایل ها و دایرکتوری هایی که در دایرکتوری که در اون حضور دارید وجود دارند از دستور ls باید استفاده کرد.

$ls
bin        hosts  lib     res.03
ch07       hw1    pub     test_results
ch07.bak   hw2    res.01  users
docs       hw3    res.02  work


دستور ls به شما اختیارات دیگری هم میدهد که مثلا بتوانید همین خروجی را با جزئیات بیشتری مشاهده نمایید. برای این کار از l- باید استفاده کنید:

$ls -l
total 1962188
drwxrwxr-x  2 amrood amrood      4096 Dec 25 09:59 uml
-rw-rw-r--  1 amrood amrood      5341 Dec 25 08:38 uml.jpg
drwxr-xr-x  2 amrood amrood      4096 Feb 15  2006 univ
drwxr-xr-x  2 root   root        4096 Dec  9  2007 urlspedia
-rw-r--r--  1 root   root      276480 Dec  9  2007 urlspedia.tar
drwxr-xr-x  8 root   root        4096 Nov 25  2007 usr
drwxr-xr-x  2    200    300      4096 Nov 25  2007 webthumb-1.01
-rwxr-xr-x  1 root   root        3192 Nov 25  2007 webthumb.php
-rw-rw-r--  1 amrood amrood     20480 Nov 25  2007 webthumb.tar
-rw-rw-r--  1 amrood amrood      5654 Aug  9  2007 yourfile.mid
-rw-rw-r--  1 amrood amrood    166255 Aug  9  2007 yourfile.swf
drwxr-xr-x 11 amrood amrood      4096 May 29  2007 zlib-1.2.3
$

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

لاگین کردن

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

login : amrood
amrood's password:
Last login: Sun Jun 14 09:32:32 2009 from 62.61.164.73
$

در حالت خط فرمان اگر شکل $ نشون داده شد یعنی شما توسنتید با حساب کاربری معمولی که بعضی دسترسی ها رو هم شاید نداشته باشه لاگین کنید و اگر شکل # دیده شد یعنی شما کاربر ریشه هستید که همه دسترسی های ممکن رو دارید.


فرمان تاریخ و تقویم
محیطی که شما بهش وارد شدید دارای دستورهای فراوانیست. مثلا یکی از آنها دستور cal هست که تقویم رو به شما نشون میده:
$ cal
     June 2009
Su Mo Tu We Th Fr Sa
    1  2  3  4  5  6
 7  8  9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
$

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

یونیکس چیست؟

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

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


* یونیکس در اصل در سال ۱۹۶۹ توسط کارمندان گروه AT&T مانند Ken Thompson, Dennis Ritchie, Douglas McIlroy,  و Joe Ossanna در آزمایشگاه Bell نوشته شد.


* نسخه های فراوانی از یونیکس شامل Solaris Unix و AIX و HP Unix و BSD و دیگر نسخ ها هم اکنون در بازار موجود می باشند و به صورت رایگان میتواند در دسترس عموم قرار گیرد.


* چندین کابر به طور همزمان میتوانند از یونیکس استفاده کنند که این قابلیت را به اصطلاح سیستم multiuser میگویند.


* هر کاربر نیز میتواند به تنهایی چندین برنامه را تحت یونیکس اجرا کند که به این قابلیت multitasking گفته میشود.


ساختار یونیکس

این نمایی ابتدایی از سیستم یونیکس می باشد:


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