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

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

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


ارائه ۲۴٫۱۰ اوبونتو منتشر شد 🎉

نویسنده موضوع: چندتا سوال در مورد script نویسی برای bash  (دفعات بازدید: 2542 بار)

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

آفلاین Keivan

  • Full Member
  • *
  • ارسال: 191
  • جنسیت : پسر
1) کی میدونه این یعنی چی؟ من که کفم بریده. از هر طرف نگاه می کنم نمی تونم بخونمش. ](*,) میشه یکی این دستور sed رو برای ما ترجمه کنه.
glibtoolize --version | sed -n '1s/.* \([0-9]\).*/\1/p

2) چرا گاهی برای وصل کردن ورودی خروجی برنامه ها از "|" استفاده میشه مثل

lsmod | grep b43
ولی گاهی از روشی مثل دستور زیر

command 2>&1 | tee log

اصولا فرقشون چیه اینا؟ لطفا جواب هرکدوم رو میدونید ما را از علم خودتون محروم نفرمایید.
« آخرین ویرایش: 06 مهر 1388، 04:02 ب‌ظ توسط Keivan »

آفلاین آزادنویس

  • Jr. Member
  • *
  • ارسال: 76
  • جنسیت : پسر
    • آزادنوشته های گنو/لینوکسی
نقل‌قول
1) کی میدونه این یعنی چی؟ من که کفم بریده. از هر طرف نگاه می کنم نمی تونم بخونمش. ](*,) میشه یکی این دستور sed رو برای ما ترجمه کنه.
برای دسترسی به تعریف کوتاهی از هر دستور تایب کن:
whatis COMMANDNAMEعلاوه بر این برای دسترسی و خواندن فایل های کمکی همراه برنامه به شرط اینکه وجود داشته باشند تایپ کن:
man COMMANDNAMEیا برای یک توضیح کوتاه در خط فرمان در مورد نام برنامه و پارامترهای ورودی آن تایپ کن:
COMMANDNAME --helpاون ترکیبی هم که برات عجیبه یک Regular Expression هست یعنی یک عبارت منظم  و الگویی که برای تشخیص و فیلتر کردن یک سری ترکیبات خاص که با اون مطابق هستند بکار گرفته می شه. برای درک انواع عبارات منظم کافیه همین عبارت رو جستجو کنی مقالات زیادی تو گوگل و ویکی پدیا پیدا می کنی.

نقل‌قول
2) چرا برای وصل کردن ورودی خروجی برنامه ها از "|" استفاده میشه مثل
به این کاراکتر pipe گفته می شه که خروجی یک دستور رو به ورودی دستور بعدی منتقل می کنه.
« آخرین ویرایش: 06 مهر 1388، 02:16 ب‌ظ توسط آزادنویس »
زنده باد آزادی
http://azadnevis.wordpress.com

آفلاین Keivan

  • Full Member
  • *
  • ارسال: 191
  • جنسیت : پسر

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


ممنون از توضیحاتتنون. میشه فرق اون 2 مدل مختلف از pipe رو هم به من یاد بدین.

آفلاین آزادنویس

  • Jr. Member
  • *
  • ارسال: 76
  • جنسیت : پسر
    • آزادنوشته های گنو/لینوکسی
در لینوکس همه چیز به شکل فایل دیده می شود. حتی تمام قطعات مثل ماوس و کی بورد و به هریک آدرس یک فایل اختصاص پیدا می کنه. لینوکس به هر برنامه اجازه دسترسی به سه فایل مهم رو می ده: standard input, standard output and standard error و هر کدام از این فایلها شماره مخصوص خودشون رو دارند. به ترتیب:
# Standard Input - 0
# Standard Output - 1
# Standard Error - 2
حالا شما می توانید این سه جریان رو از هر دستور یا قطعه( که به صورت فایل دیده می شه) به سمت هر دستور یا فایل دیگری «هدایت» کنید، به این کار redirect کردن گفته می شه. علامت < برای هدایت خروجی است و علامت > برای هدایت ورودی است. شما حتی می توانید خطاهایی که یک دستور می دهد را هدایت کنید، برای اینکار جلوی دستور می نویسید:
2>عدد دو نشاندهنده اینست که خروجی خطا را می خواهیم و علامت < برای هدایت کردن آن است که ترکیب این دو منجر به هدایت خروجی خطا به هر جا ما بخواهیم می شود.
مثال هدایت خروجی یک لیست به یک فایل:
$ ls -l myfile.txt > test.txtمثلا هدایت خروجی خطا وقتی فایل پیدا نشود به یک فایل دیگر، هر دو دستور زیر را اجرا کنید و تفاوت را ببینید. در دستور دوم فایلی به نام تست تشکیل می شود محتویات آنرا ببینید:
ls -l myfile.txt > test.txtls -l myfile.txt 2> test.txt
حالا برویم سراغ دستور شما:
COMMANDNAME 2>&1|tee yourlog.logسینتکس مورد نظر شما یعنی this: 2>&1 جریان شماره دو رو هدایت می کنه(Standard Error) و علاوه براون روی مسیر شماره یک(Standard Output) هم اون رو نمایش می ده یعنی روی ترمینال هم نمایش داده می شه. سینتکس "|" هم خروجی دستور ما رو به ورودی دستور tee می فرسته. که کار دستوری tee هم log کردن و ذخیره کردن ورودی اش درون یک فایل متنی است.

برای توضیحات بیشتر به زبان انگلیسی به این لینک مراجعه کنید: http://linuxhelp.blogspot.com/2006/01/inputoutput-redirection-made-simple-in.html و همینطور این لینک:‌ https://lists.ubuntu.com/archives/ubuntu-users/2005-July/042328.html
« آخرین ویرایش: 06 مهر 1388، 08:29 ب‌ظ توسط آزادنویس »
زنده باد آزادی
http://azadnevis.wordpress.com

آفلاین Keivan

  • Full Member
  • *
  • ارسال: 191
  • جنسیت : پسر
خیلی ممنون از توضیح کاملتون. ممنون از وقت و حوصله ای که برای جواب دادن به خرج دادین. مشکلم کاملا حل شد. \\:D/ :D