انجمن‌های فارسی اوبونتو

لطفاً به انجمن‌ها وارد شده و یا جهت ورود ثبت‌نام نمائید

لطفاً جهت ورود نام کاربری و رمز عبورتان را وارد نمائید


توزیع گنو/لینوکس اوبونتو ۲۰ ساله شد 🎉

نویسنده موضوع: شروع برنامه نویسی در لینوکس  (دفعات بازدید: 108344 بار)

0 کاربر و 6 مهمان درحال مشاهده موضوع.

آفلاین سید محمود رضا سجادی

  • Hero Member
  • *
  • ارسال: 704
  • جنسیت : پسر
    • مرکز برنامه نویسی ایران
شروع برنامه نویسی در لینوکس
« : 03 امرداد 1388، 12:27 ق‌ظ »
سلام

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

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

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

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

حالا سوالم اینه
[/b]

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

برای این می پرسم که در ادامه همین پست قصد دارم با کمک شما دوستان عزیز یک مجموعخ کامل آموزشی رو درت کنم تا بقیه دوستان هم استفاده کنند(خودم بیشتر استفاده می کنم  ;))

در صورتی که جوابتون منفی باشه که فقط از متن باز ها استفاده میکنم و اگه مثبت باشه از همش

منتظر جوابتون میمونم

ممنون
مرکز برنامه نویسی ایران
محلی برای تمامی علاقه مندان به برنامه نویسی http://www.SourceCenter.IR

آفلاین سید محمود رضا سجادی

  • Hero Member
  • *
  • ارسال: 704
  • جنسیت : پسر
    • مرکز برنامه نویسی ایران
پاسخ به: شروع برنامه نویسی در لینوکس
« پاسخ #1 : 03 امرداد 1388، 07:20 ب‌ظ »
سلام

با توجه به اینکه اساتید محترم پاسخی ندادند بنده جسارت می کنم و سکوت رو علامت رضا تلقی کرده و این مجموعه ترجمه رو با نام ویاد خداوند متعال آغاز میکنم

می دونم که خیلی شرع من مبتدی و تکراری هستش اما از اونجایی که قصد دارم این مجموعه کامل باشه لذا از زیر صفر شروع میکنم
دوستان کافیه که فقط بدونند یک چیزی به نام C وجود داره(اگه نشنیدید هم مهم نیست چون الان شنیدید دیگه  ;))

واما بعد

از تمام مفاهیم و ... میگذرم ومیرم سر اصل مطلب(پست بعد)
مرکز برنامه نویسی ایران
محلی برای تمامی علاقه مندان به برنامه نویسی http://www.SourceCenter.IR

آفلاین سید محمود رضا سجادی

  • Hero Member
  • *
  • ارسال: 704
  • جنسیت : پسر
    • مرکز برنامه نویسی ایران
پاسخ به: شروع برنامه نویسی در لینوکس
« پاسخ #2 : 03 امرداد 1388، 07:39 ب‌ظ »
در لینوکس دو نوع برنامه وجود داره اگزکیوت ایبل و اسکریپت
اولی به صورت مستقیم در سیستم اجرا میشه اما اسکریپت ها برای اجرا نیاز به یک مترجم یا مفسر دارند و لذا از طریق یک برنامه دیگه اجرا میشن (نه به صورت مستقیم)

اولی نمونه فایل های .exe در ویندوز هست و اسکریپت ها مثل .bat , .cmd
همونجوری که تا حالا در ضمن کار با لینوکس تا حالا متوجه شدید بر خلاف ویندوز قایل های اجرایی در لینوکس احتیاج به نام خاص و یا پسوند خاصی ندارند
برای اجرای فایل ها و .. در لینوکس باید به سطح دسترسی های یوزر ها دقت کرد و اینکه فایل ها اجازه اجرا شدن رو دارند یا نه(بعدا در این باره صحبت می کنم)

اما در باره shell باید بگم که بعد از لاگین تو لینوکس شما با یه محیط متنی می تونید سر و کار داشته باشید که مثل کامند پرامپت در ویندوزه. این محیط میتونه از نوع های مختلفی باشه و معمولا bash هستش(مثل همینی که تو اوبونتو معمولا هست)
دقیقا مثل ویندوز وقتی شما یک دستور رو تایپ می کنید و یا قصد اجرای برنامه ای رو دارید این برنامه باید در آدرس از پیش تعیین شده ای باشه تا bash پیداش کنه
به عبارت دیگه bash فقط در آدرس های مشخصی به دنبال فایل و یا دستور شما میگرده و اگه در اونجاها پیدا نکنه command not found میده

این آدرس ها در PATH قرار داره(به کوچکی و بزرگی حروف دقت کنید)
می تونید این آدرس ها رو با تایپ دستور زیر مشاهده کنید:
echo $PATH
این آدرس ها معمولا شامل آدرس های استاندارد میشه که البته root میتونه اینارو کم یا زیاد کنه ولی معمولا همیشه شامل آدرس های زیر میشه
❑ /bin: Binaries, programs used in booting the system
❑ /usr/bin: User binaries, standard programs available to users
❑ /usr/local/bin: Local binaries, programs specific to an installation

دقت داشته باشید که لینوکس هم مثل یونیکس آدرس ها رو با ( : ) از هم جدا میکنه که البته همونطور که میدونید در ویندوز از ; استفاده میشد(نکته : لینوکس زود تر این علامت رو انتخاب کرده بود و لذا از ویندوزیا بپرسین که چرا عوض کردنش!!)
و البته همونجوری که میدونید در لین.کس آدرس ها با / از هم جدا میشن در صورتی که در ویندوز آدرس دهی با \ انجام میشه و باز هم لینوکس پیشتاز بوده و باید از ویندوزی ها دلیل این کارشون رو پرسید  ;)

برای امروز کافیه - فردا اولین برنامه رو مینویسیم (ایشالا)
مرکز برنامه نویسی ایران
محلی برای تمامی علاقه مندان به برنامه نویسی http://www.SourceCenter.IR

آفلاین جادی

  • عضو کاربران ایرانی اوبونتو
  • *
  • ارسال: 1610
    • در دفاع از آزادی بیان
پاسخ به: شروع برنامه نویسی در لینوکس
« پاسخ #3 : 04 امرداد 1388، 11:14 ق‌ظ »
ممنون. فکر کنم اکثر دوستان با علاقه دنبال می کنن. با این تیپ ترجمه ای که کردی بدون شک هیچ مشکل قانونی وجود نداره (: ترجمه یک کتاب نیازمند مجوز از ناشر است (در اکثر موارد) اما این کاری که تو کردی، خوندن کتاب و نوشتن به زبون خودت است که خیلی هم عالیه و نیازی هم به مجوز از ناشر نداره. ادامه بده و می خونیم (: بعدا هم به ویکی اضافه کن.
آزادی کیبورد حق هر انسان است - جادی

آفلاین سید محمود رضا سجادی

  • Hero Member
  • *
  • ارسال: 704
  • جنسیت : پسر
    • مرکز برنامه نویسی ایران
پاسخ به: شروع برنامه نویسی در لینوکس
« پاسخ #4 : 04 امرداد 1388، 03:39 ب‌ظ »
سلام جادی جان
ممنون از اینکه پست دادی
ایشالا با راهنمایی ها و تصحیحات شما دوستان و اساتید محترم بیشتر دلگرم میشم و سرع تر پست میزنم

قصد داشتم پست بعدیم رو شب بزنم اما به مناسبت اینکه جادی جان زحمت کشیدند و منو دلگرم کردند همین الان یه پست مفصل می نویسم  \\:D/

(دوستان محترم - لطفا شما هم پست بزنید و این آموزش رو کامل تر کنید. ممنون :oops:)
مرکز برنامه نویسی ایران
محلی برای تمامی علاقه مندان به برنامه نویسی http://www.SourceCenter.IR

آفلاین سید محمود رضا سجادی

  • Hero Member
  • *
  • ارسال: 704
  • جنسیت : پسر
    • مرکز برنامه نویسی ایران
پاسخ به: شروع برنامه نویسی در لینوکس
« پاسخ #5 : 04 امرداد 1388، 04:39 ب‌ظ »
برای برنامه نوییسی در shell دو نوع دستور داریم که بعدا در باره اونا با هم صحبت می کنیم اما یک سری علامت ها و .. داریم که همین الان قصد دارم چنتا از اونا رو بگم(که خیلی پر کاربردند)
بعدش اولین برنامه رو می نویسیم

منتقل کننده ها(redirection)
شما میتونید همونجوری که در c++ مقادیر رو از/به cin و cout دریافت/ارسال میکردید در اینجا هم عمل کنین
به عنوان مثال اگر خروجی یک دستور رو لازم دارید به راحتی میتونید اون رو داخل یک فایل بنویسید ویا اگه دستوری نیاز به آرگومان داره این آرگومان(ها) رو از یک فایل بهش بدین
(نکته مهم در اینجا اینه که همه چی تو لینوکس فایله و این براش یک نقطه قوته و خیلی خوبه-کار برنامه نویسا خیلی راحت شده- که البته بعدا در این باره بیشتر صحبت میکنیم)
برای این کارها(منتقل کردن) باید مثل c++ از عبارت کوچکتر و بزرگتر استفاده کرد یعنی به صورت یکی از ۴ شکل زیر
<
>
<<
>>

خوب معلومه که معانی اینها با هم فرق میکنن.
اونایی که دوتایی هستند یعنی >> یا << - کارشون اضافه کردن (append) هستش
به دستور زیر دقت کنین
ls *.deb >> mydebs.txtاین دستور نام هرچی فایل دبین در پوشه جاری باشه رو داخل یک فایل در فلدر جاری به نام mydebs.txt اضافه میکنه
اگه این فایل وجود نداشته باشه که ساخته میشه و در غیر این صورت به انتهای فایل مقادیر جدید اضافه میشه

حالا به دستور زیر دقت کنید

ls *.deb > mydebs.txtاگه فایل موجود نباشه که ساخته میشه اما در غیر این صورت فایل قبلی با مقادیر جدید جایگزین میشه
به عبارت دیگه اطلاعات قدیمی از دیست میره و با مقادیر جدید جایگزین میشه

اگر جهت این فلش ها(بزرگ و کوچک) جابجا بشه و از >> یا > استفاده کنیم . این علامت ها به معنی ورودی برای دستور خواهند بود

لوله ها(pipes)
برخلاف ویندوز در لینوکس و یونیکس دست شما بازه که خروجی یک دستور رو به عنوان ورودی استفاده کنین و یا به عبارت دیگه کانال کشی کنین و خروجی ها درون دستور بعدی ریخته بشه
نکته جالب اینه که این کانال کشی واقعی هستش و نه مجازی(به زودی منظور من رو شرح میدم)
به دستور زیر دقت کنید
ps > psout.txt
sort psout.txt > pssort.out
در عبارت فوق ابتدا خروجی دستور ps رو در یک فایل ذخیره میکنیم و بعد خروجی رو با دستور sort منظم میکنیم و در یک فایل دیگه ذخیره میکنیم

به جای عبارت فوق با لوله کشی به عبارت زیر میرسیم (علامت لوله کشی | هستش)
ps | sort > pssort.outهمونطوری که دیده میشه فایل میانی که اضافه هم بود حذف شد و سرعت عملیلت هم بیشتر شد در صورتی که اگه این لوله کشی مجازی بود در واقه قسمتی از حافظه به عنوان temp قرار می گرفت و خروجی ابتدا در اون ذخیره میشد و سپس sort میشد در صورتی که در عبارت لوله کشی این فرایند به صورت موازی انجام میشه

یک شاهد دیگه برای موازی انجام شدن این فرایند دستور زیره
cat mydata.txt | sort | uniq | > mydata.txtاگه این فرایند مجازی بود نباید مشکلی پیش میومد اما در دستور فوق به علت موازی بودن فرایند شما فقط یه فایل خالی گیرتون میاد.
دلیل این حرف و اتفاق هم اینه که فایل mydata.txt قبل از اینکه خونده بشه با دستور < داره جایگزین میشه(با یه فایل خالی) و لذا با نوشتن دستور فوق همیشه یک فایل خالی تحویل میگیرین


اولین برنامه
for file in *
do
if grep -l POSIX $file
then
more $file
fi
done

بعدا در باره حلقه ها و شرط یا هم صحبت میکنیم
فعلا دقت کنید که با تایپ دستورات به صورت خط به خط در ترمینال به چه سادگی از خط فرمان عادی ($) - شکل خط فرمان به صورت < دراومد و آماده گرفتن برنامه شد!!
نکته دیگه اینکه اگه خاستید یک سری عبارات یا دستور های مشابه رو بررسی کنسد - برای سادگی کار شما راه هایی وجود داره

ls my_{finger,toe}sعبارت فوق فایل های my_fingers و my_toes رو نشون میده(در دایرکتوری جاری)

اولین اسکریپت
حالا احتیاج به یک ادیتور متن داریم(شما میتونید از هرچیزی استفاده کنید اما من یکی از برنامه های زیر رو پیشنهاد میکنم)
gedit
kate
vim
nano
emacs

یکی از دوستام ادعا میکنه که emacs از همه قویتره اما خودم با gedit راحت ترم
استفاده از vi یا vim هم خیلی با کلاسه  ;)

یک فایل به نام first ایجاد کنید(توجه کنید که اگه بعدا هم یک اسکریپت نوشتید نامش با دستور ها یکی نباشه و به عنوان مثال از test استفاده نکنید چون این یک دستوره)
داخلش عبارت زیر رو بنویسید

#!/bin/sh
# fist
# this is my first script and it is from forum.ubuntu.ir

for file in *
do
if grep -q  POSIX $file
then
echo $file
fi
done

exit 0

کامنت ها در اسکریپت با # شروع میشن (همونجوری که در بعضی زبون ها با علامت های دیگه ای مثل // یا --!> شروع میشن)
اما خط اول یکم متفاوته
اگه بعد از # بافاصله ! بیاد یعنی عبارت #! مشاهده بشه به این معنیه که بعدش روش اجرای فایل قرار داره
اگه یادتون یاشه گفم که اسکریپت ها هرگر مستقیم اجرا نمیشن و از طریق یک برنامه دیگه اجرا میشن پس میتونیم روش اجرای اون رو در خط اول بزاریم و یا اینکه در هنگام استفاده دستی وارید کنیم

برای اجرای این اسکریپت شما باید اول اجازه اجرا شدن رو بهش بدین
chmod +x firstویا اینکه بنویسید
/bin/sh firstواگر با chmod مجوز اجرا را بهش داده باشین با دستور زیر اجراش کنین
firstاگه با ویغامی مبنی بر اینکه دستور پیدا نشد مواجه شدید معنیش اینکه آدرس محل فایل در PATH وجود نداره پس شما چنتا راه دارین
۱- این فایل رو در یک آدرس معتبر کپی کنین
۲-دستور رو به شکل زیر اجرا کنین
./firstکه به این معنیع که این فایل در آدرس جاری قرار داره
۳- دایرکتوری جاری رو به PATH اضافه کنین یعنی
PATH=$PATH:.به اون نقطه آخر دقت کنین که به معنیه فولدر جاری هستش
۴-ویا اینکه با همون روش بند ۳ آدرس مطلق فلدر جاری رو به PATH اضافه کنین تا از هر جایی بتونین اسکریپت رو اجرا کنین

نکته : تغییر دادن PATH به شکل فوق برای سوپر یوزر ویا همون root کار خیلی خطرناکته چون یک شکاف امنیتی محسوب میشه چون با اجرای یک دستور توسط root ممکنه که یک برنامه اشتباه و دروغین اجرا بشه!!!(حالا پس با کپی کردن یک اسکریپت با نام یکی از دستورات مشهور و پر استفاده شما میتونید هر کار ی رو در سیستم قربانی انجام بدین :-X چون با دسترسی root قراره اجرا بشه)

نکته : استفاده از chroot  و همچنین تغییر دسترسی و یا دادن مجوز ها راه های خیلی زیادی داره که فعلا یکیش رو بررسی کردیم-پیشنهاد میکنم دستور man chmod رو برای اطلاعات بیشتر اجرا کنین

خوش و خرم باشین
یا علی

فردا وارد بحث شیرین متغیر ها میشم و متغیر های اصلی و محلی سیستمتون رو معرفی میکنم و با هم چنتا برنامه کوچولو مینویسیم
مرکز برنامه نویسی ایران
محلی برای تمامی علاقه مندان به برنامه نویسی http://www.SourceCenter.IR

آفلاین heresh

  • Hero Member
  • *
  • ارسال: 968
  • جنسیت : پسر
پاسخ به: شروع برنامه نویسی در لینوکس
« پاسخ #6 : 29 امرداد 1388، 08:47 ب‌ظ »
دوست عزیز چرا ادامه ندادی. خوب شروع کردی، این آموزش می‌تونه به خیلی ها کمک کنه.

آفلاین سید محمود رضا سجادی

  • Hero Member
  • *
  • ارسال: 704
  • جنسیت : پسر
    • مرکز برنامه نویسی ایران
پاسخ به: شروع برنامه نویسی در لینوکس
« پاسخ #7 : 29 امرداد 1388، 09:36 ب‌ظ »
سلام
قصد ادامه دادنش رو داشتم اما هم view این پست کم بود هم کسی کامنت نمیداد و من دیدم استقبال نمیشه و لذا بی خیال شدم
اگه فکر میکنید لازمه ادامه میدم
برای خودم شروع به تایپ کرده بودم و این سر فصل ها رو انتخاب کرده بودم
برنامه نویسی در شل (بخشیش رو در پست های قبلی دیدید)
کار با فایل ها
محیط لینوکس
ترمینال ها
برنامه نویسی گرافیکی در محیط متنی
مدیریت داده ها(قفل کردن فایل ها - دیتابیس ها و غیره)
mysql
ابزار توسعه (development tools) که شامل کنترل سورس ها  و ساخت پکیج های RPM و DEB میشه و همینطور KDevelop - C-Forgr - xwpe و ...
دیباگینگ
پروسه ها و سیگنال ها (مدیریت رویداد ها در همین بخش میاد)
یک مقدمه کوتاه در باره Thread ها
بحث جامع تری در باره لوله ها (pipe) و پروسه های داخلی
و البته قصد دارم بازم بهش اضافه کنم (برنامه نویسی پرت ها و سوکت ها و پروتوکل ها)
و در نهایت هم GTK+ و Qt برای گنوم و کا دی ای
برنامه نویسی درایور ها در لینوکس و استاندارد های لینوکس


نظرتون رو بگید تا ادامه بدم یا ندم!
مرکز برنامه نویسی ایران
محلی برای تمامی علاقه مندان به برنامه نویسی http://www.SourceCenter.IR

آفلاین moslem.b

  • High Sr. Member
  • *
  • ارسال: 590
  • جنسیت : پسر
پاسخ به: شروع برنامه نویسی در لینوکس
« پاسخ #8 : 30 امرداد 1388، 12:31 ق‌ظ »
ایول عالیه,ادامه بده سید جون ما پشتتیم
(\__/)
(='.'=)
(")_(")

آفلاین moslem.b

  • High Sr. Member
  • *
  • ارسال: 590
  • جنسیت : پسر
پاسخ به: شروع برنامه نویسی در لینوکس
« پاسخ #9 : 30 امرداد 1388، 12:38 ق‌ظ »
نقل‌قول
اگه یادتون یاشه گفم که اسکریپت ها هرگر مستقیم اجرا نمیشن و از طریق یک برنامه دیگه اجرا میشن پس میتونیم روش اجرای اون رو در خط اول بزاریم و یا اینکه در هنگام استفاده دستی وارید کنیم

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


یه سوال این chmod +x چه سطح اجرایی به فایلمون میده ؟ چرا مثلا" از chmod 775 یا chmod 777 اتفاده نمیکنیم ؟
« آخرین ویرایش: 30 امرداد 1388، 12:47 ق‌ظ توسط moslem.b »
(\__/)
(='.'=)
(")_(")

آفلاین Freeman

  • High Hero Member
  • *
  • ارسال: 2310
    • KDE Software Compilation
پاسخ به: شروع برنامه نویسی در لینوکس
« پاسخ #10 : 30 امرداد 1388، 01:21 ق‌ظ »
سید اگه بشه بر اساس همین سر فصل جلو بری یکی بهترین منابع فارسی برای برنامه نویسی تو لینوکس میشه

حتما ادامه بده فوق العاده میشه  :)

موفق باشی  ;)

آفلاین سعید رسولی

  • ilius, saeedgnu
  • عضو کاربران ایرانی اوبونتو
  • *
  • ارسال: 1543
  • جنسیت : پسر
پاسخ به: شروع برنامه نویسی در لینوکس
« پاسخ #11 : 30 امرداد 1388، 07:13 ق‌ظ »
یه سوال این chmod +x چه سطح اجرایی به فایلمون میده ؟ چرا مثلا" از chmod 775 یا chmod 777 اتفاده نمیکنیم ؟
بهتره منوال chmod رو بخونید. در کل، با دستور chmod به دو روش می‌تونیم مجوزهای دسترسی فایل رو تغییر بدیم:

یکی بصورت مطلق: اینکه پرمیشن خوندن(r) و نوشتن(w) و اجرا کردن(x) رو برای کاربر(u) و گروه(g) و دیگران(o) همه رو یکدفعه براش تعیین کنیم، مثلاً با یه عدد سه رقمی در مبنای 8 مثل همون 777 که یعنی مجوز کامل برای همه! یا مثلاً 755 یعنی مجوز کامل(1+2+4=7) برای کاربر(صاحب فایل) و فقط مجوز خوندن و اجرا کردن(1+4=5) برای گروه و دیگران(بدون مجوز نوشتن)

یکی هم به روش نسبی. مثلاً می‌خواید مجوز اجرا کردن رو به همه بدید. اما مجوز خوندن و نوشتن رو تغییر ندید و هر چی قبلاً بوده بمونه. این کار با a+x یعنی all + execute انجام میشه. (یا مثلاً u+x تا مجوز اجرا کردن رو به کاربر یا همون صاحب فایل بده) دیگه بقیهٔ مجوزها رو تغییر نمیده.

آفلاین سید محمود رضا سجادی

  • Hero Member
  • *
  • ارسال: 704
  • جنسیت : پسر
    • مرکز برنامه نویسی ایران
پاسخ به: شروع برنامه نویسی در لینوکس
« پاسخ #12 : 30 امرداد 1388، 11:15 ق‌ظ »
با تشکر از تمامی دوستان به بحثمون ادامه میدیم فقط اگه ممکنه اساتید بیشتر به اینجا سر بزنند و راهنماییمون کنند.ilius جان بازم به ما سر بزن (نکنه این پستی که اینجا دادی آخریش باشه) حسن جان شما هم بازم بیا اینورا - درسته که شما استادید و این بحث ها رو میدونید اما اگر سر نزنید پس کی اشکالای منو بگیره؟؟

برنامه نویسی و متغیر ها

برخلاف زبا نهایی مثل C معمولا در برنامه نویسی اسکریپت ها متغیر ها قبل از استفاده تعریف نمیشن و به عبارت دیگه در همون لحظه که داریم ازشون استفاده میکنیم در واقع داریم به سادگی اونها رو میسازیم
به صورت دیفالت تمامی متغیر ها مقادیر استرینگ و متنی رو در خودشون نگه میدارند حتی اگر به اونها مقادیر عددی رو داده باشیم
شل و برخی یوتیلیتی ها مقادیر عددی به شکل استرینگ رو تبدیل میکنند تا انجام محاسبات روی آنها ممکن بشه
نکته دیگه ای که یاداوری اون خیلی مهمه اینه که متغیر هایی مثل name و Name با هم متفاوتند و دلیل اون حساسیت لینوکس به کوچیک و بزرگ بودن حروف هستش و لذا هر دو این متغیر ها با متغیر NAME متفاوت هستند
برای دسترسی به مقدار یک متغیر در شل باید علامت $ رو در اول اسم اون متغیر قرار بدید مثلا
$HOMEاما زمان مقدار دهی فقط از نام اون متغیر استفاده می کنیم
به دستور های زیر که در شل تایپ میشن دقت کنید
salutation=Hello
echo $salutation
خروجی این دستورات همونجوری که انتظار میره Hello هستش
حالا :
salutation="Yes Dear"
echo $salutation
که بازهم عبارت Yes Dear نمایش داده خواهد شد(به نظر شما چرا در ذستور اول استفاده از علامت " اختیاری بود اما در دومی اجباریه؟)
salutation=7+5
echo $salutation
خروجی این دستور برای ما خیلی مهمه چون درک مارو از متغیر های استرینگ و تعریف متغیر ها در شل درست میکنه!!!
خروجی این دستور دقیقا عبارت
7+5هستش و نه هیچ  چیز دیگه ای (یعنی عمل جمع انجام نمیشه)
در آخر توجه شما رو به دونکه اصلی جلب میکنم
اول اینکه همونجوری که متوجه شدید مقادیر روبروی اسم متغیرها در مقدار دهی نمیتونن دارای فاصله (اسپیس) باشن و اگر که اسپیس در اونها وجود داره حتما باید از علامت نقل قول " در دو طرف اونها استفاده بشه (مانند مثال دوم)
نکته دیگه اینکه در دوطرف علامت مساوی (=) در هنگام مقدار دهی نباید هیچگونه فاصله ای وجود داشته باشه

خوب حالا قبل از شروع به برنامه نویسی با متغیر ها نیاز به یک دستور اساسی دیگه هم داریم و اون چیزی نیست جز read
شما باید قادر باشید تا از یوزر مقادیری رو در حین اجرای برنامه دریافت کنید(بعدا در باره آرگومان های ورودی صحبت خواهیم کرد اما فعلا مقادیر در حین اجرا مد نظر منه)
به سادگی شما میتونید دستور زیر رو در اسکریپتتون ویا مستقیما در شل تایپ کنید تا همه چی متوقف بشه و برنامه صبر کنه تا کاربر یک عبارت رو وارد کنه
به صورت دیفالت نیازی به استفاده از " در اینجور دستور ها نیست
read salutationو بر فرض اینکه کاربر مقداری مانند Wie geht's رو با تمام فاصله ها تایپ بکنه خروجی دستور زیر
echo $salutaionمقدار Wie geht's خواهد بود
برای اینکه مشکلی پیش نیاد یه بار دیگه توجه شما رو به فاصله ها (space - tab - enter) جلب میکنم. دقت کنید که اگه یکی از اینها و یا بیشتر در مقدار مقابل متغیر وجود داشته باشه استفاده از " اجباریه

در باره برنامه :
چنانچه در کد زیر خواهید دید علامات نقل قول تکی (') , دوتایی(") اعمال مختلفی انجام میدن
اگر عبارتی مانند $foo رو داخل نقل قول تکی یا دوتایی بگذاریم نتایج مختلفی میده و نقل قول تکب از جایگزینی مقدار متغیر به جای اسم اون جلوگیری میکنه
از طرف دیگه عبارتی مثل echo foo رو در نظر بگیرید. به دلیل اینکه در اول نام متغیر از علامت $ استفاده نشده با اون به صورت یک رشته برخورد میشه و عین اون تایپ میشه
مانند همون علامت \ که در C باهاش برخورد کردید اگر قصد چاپ علامت $ به عنوان یک کاراکتر رو داشته باشید باید در اول اون \ قرار بدید یعنی echo \$foo یک متغیر نیست بلکه ترکیبی از یک کاراکتر ($) و یک رشته (foo) هستش

حالا اسکریپت زیر رو در جایی بنویسید و سیو و اجرا کنید (بعد از اینکه مجوز اجرا رو بهش دادید و یا اینکه مستقیم اجراش کنید)
#!/bin/sh
myvar="Hi there"
echo $myvar
echo "$myvar"
echo '$myvar'
echo \$myvar

echo Enter Some Text
read myvar

echo '$myvar' now equals $myvar
exit 0

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

متغیر های محلی
$HOME
$PATH
$PS1  [\u@ \h \W]
$PS2
$IFS
$0
$#
$$

متغیر های پارامتری
$1 $2 $3 ....
$*
$@

اگر به کسب اطلاعات در زمینه چگونگی اجرای برنامه ها در محیط های مختلف علاقه دارید دستور env <command> رو اجرا کنید  و در باره env مطالعه کنید
در پست آیانده به توضیح متغیر های محلی و پارامتری میپردازم و در پست های آینده در باره export و مقدار دهی متغیرر ها در subshell ها با هم صحبت میکنیم
« آخرین ویرایش: 30 امرداد 1388، 11:38 ق‌ظ توسط سید محمود رضا سجادی »
مرکز برنامه نویسی ایران
محلی برای تمامی علاقه مندان به برنامه نویسی http://www.SourceCenter.IR

آفلاین mimook

  • Full Member
  • *
  • ارسال: 102
  • جنسیت : پسر
    • mimook
پاسخ به: شروع برنامه نویسی در لینوکس
« پاسخ #13 : 30 امرداد 1388، 11:11 ب‌ظ »
عالیه ;)

آفلاین arastoo.s

  • Jr. Member
  • *
  • ارسال: 70
  • جنسیت : پسر
پاسخ به: شروع برنامه نویسی در لینوکس
« پاسخ #14 : 31 امرداد 1388، 06:05 ق‌ظ »
سلام دوست عزیز
اقا ما الان پست شما رو دیدیم اما وقت نکردم کامل بخونم
هر کمکی در رابطه با C بود تا جای توان در خدمتیم
راستی چرا pdf نمیکنی بدی بیرون
کارت حرف نداره رفیق  =D> :p
« آخرین ویرایش: 31 امرداد 1388، 06:11 ق‌ظ توسط arastoo.s »
I am bad person , you don't like me , so never  Judge me