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

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

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

نویسنده موضوع: این خط کد توی bash چیکار میکنه  (دفعات بازدید: 423 بار)

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

آفلاین Tinam (azadi nazdike)

  • Newbie
  • *
  • ارسال: 20
  • جنسیت : پسر
این خط کد توی bash چیکار میکنه
« : 27 بهمن 1401، 10:26 ب‌ظ »
سلام. من دارم bash یاد میگیرم یه سوال داشتم. این خط کد چی میگه؟


exec < 'path/to/file'

آفلاین 🇬🇧بریتانیای کبیر🇬🇧

  • High Hero Member
  • *
  • ارسال: 2646
  • جنسیت : پسر
  • GOD SAVE THE KING/QUEEN
پاسخ : این خط کد توی bash چیکار میکنه
« پاسخ #1 : 27 بهمن 1401، 10:34 ب‌ظ »
I/O redirection هست که فایل بعد از > را به دستور پاس میده و برای دستوراتی که از stdin نمیتونن اطلاعات دریافت کنند مثل tr بکار میره.
بشدت این آموزشو برای بش و لینوکس  توصیه می‌کنم. عالیه.
https://www.aparat.com/nasser4321
فیلماشو با کیفیت  ۴۸۰ دالود کن(نه کیفیت کمتر و نه بیشتر) و شروع کن به دیدن. یه جزوه خلاصه هم برای خودت بنویس.
ویرایش: این آموزش رو ببین چون مطمئنم که از توضیحات من چیزی نفهمیدی ولی این آموزش قدم به قدم جلو میره و از اول حالیت میکنه که چی به چیه.
« آخرین ویرایش: 27 بهمن 1401، 10:40 ب‌ظ توسط 🇬🇧United Kingdom🇬🇧 »
🇬🇧🏴󠁧󠁢󠁥󠁮󠁧󠁿🏴󠁧󠁢󠁷󠁬󠁳󠁿🏴󠁧󠁢󠁳󠁣󠁴󠁿🇬🇧

آفلاین Tinam (azadi nazdike)

  • Newbie
  • *
  • ارسال: 20
  • جنسیت : پسر
پاسخ : این خط کد توی bash چیکار میکنه
« پاسخ #2 : 27 بهمن 1401، 11:00 ب‌ظ »
ممنون. چرا متوجه شدم ولی یه چیزی رو متوجه نمیشم که چرا باید پروسس فعلی رو قطع و پروسه جدید با دستور exec ایجاد کنیم..

آفلاین 🇬🇧بریتانیای کبیر🇬🇧

  • High Hero Member
  • *
  • ارسال: 2646
  • جنسیت : پسر
  • GOD SAVE THE KING/QUEEN
پاسخ : این خط کد توی bash چیکار میکنه
« پاسخ #3 : 27 بهمن 1401، 11:02 ب‌ظ »
حالا من نگرفتم منظورتون چیه. :/ یکم واضح تر می‌گید؟
اگه منظورتون اینکه چرا فقط میشه یه پروسس رو در یک tty یا در یک tab ترمینال پیگیری کرد نه اینجور نیست.
میشه با ctrl + z اون پروسس را در پشت زمینه اجرا کرد و یا از tty های دیگه استفاده کنید یا از tmux استفاده کنید. tmux خیلی خوبه. امیدوارم که من منظورتون را فهمیده باشم یا اگه درست فهمیدم شما بعدش حرفامو بفهمید. همانطورکه گفتم از اون آموزشه برید. خیلی گام به گام و خوبه. اگه تمرین کنید با اون آموزشه خیلی پیشرفت می‌کنید
« آخرین ویرایش: 27 بهمن 1401، 11:12 ب‌ظ توسط 🇬🇧United Kingdom🇬🇧 »
🇬🇧🏴󠁧󠁢󠁥󠁮󠁧󠁿🏴󠁧󠁢󠁷󠁬󠁳󠁿🏴󠁧󠁢󠁳󠁣󠁴󠁿🇬🇧

آفلاین Tinam (azadi nazdike)

  • Newbie
  • *
  • ارسال: 20
  • جنسیت : پسر
پاسخ : این خط کد توی bash چیکار میکنه
« پاسخ #4 : 27 بهمن 1401، 11:12 ب‌ظ »
یه آموزش دارم میبینم که طرف میخواد لیست یسری فایل رو در بیاره و اونهارو بده به حلقه
حالا اومده و یه فایل درست کرده که لیست فایل ها داخل اون هستن
میخواد اون فایل رو بخونه اومده و این تیکه کد رو استفاده کرده که توی فایل های پیوست گذاشتم. حالا متوجه دوتا چیز نمیشم.
اون
2> /dev/null
چیه
و اون خط exec چرا باید توسط exec اجرا بشه.. مگه بصورت عادی نمیشه فایل رو به خروجی پاس داد؟

آفلاین Tinam (azadi nazdike)

  • Newbie
  • *
  • ارسال: 20
  • جنسیت : پسر
پاسخ : این خط کد توی bash چیکار میکنه
« پاسخ #5 : 27 بهمن 1401، 11:14 ب‌ظ »
یه توضیح راجع این کد بدم.. توی این آموزش قراره یه کد نوشته بشه که با هربار اجرا یه بکاپ از یسری فولدر بگیره..

آفلاین 🇬🇧بریتانیای کبیر🇬🇧

  • High Hero Member
  • *
  • ارسال: 2646
  • جنسیت : پسر
  • GOD SAVE THE KING/QUEEN
پاسخ : این خط کد توی bash چیکار میکنه
« پاسخ #6 : 27 بهمن 1401، 11:21 ب‌ظ »
بابا این چه آموزشی هست که
2> /dev/null را هنوز توضیح نداده؟ همه اینای تو این عکسی که فرستادید در این آموزشی که من فرستادم از پایه گفته میشه و از چیزی که درس نداده هم استفادهنمی کنه تا درس بده.
این همون I/O redirection هست که stderr  رو میریزه در فایل /dev/null که یعنی اونا رو میریزه دور.

در منوال exec نوشته که نمیتونه از stdin استفاده کنه پس باید از i/o  redirection استفاده کنید.
https://man7.org/linux/man-pages/man1/exec.1p.html
« آخرین ویرایش: 27 بهمن 1401، 11:34 ب‌ظ توسط 🇬🇧United Kingdom🇬🇧 »
🇬🇧🏴󠁧󠁢󠁥󠁮󠁧󠁿🏴󠁧󠁢󠁷󠁬󠁳󠁿🏴󠁧󠁢󠁳󠁣󠁴󠁿🇬🇧

آفلاین 🇬🇧بریتانیای کبیر🇬🇧

  • High Hero Member
  • *
  • ارسال: 2646
  • جنسیت : پسر
  • GOD SAVE THE KING/QUEEN
پاسخ : این خط کد توی bash چیکار میکنه
« پاسخ #7 : 27 بهمن 1401، 11:31 ب‌ظ »
ببینید شما نمی‌توانید مثلا لگاریتم ، تابع درجه دو و .... رو بلد نباشید (خودمم بلد نیستم. مثاله) و بعدش برید یک درجه بالا تر از اینا را (تابع درجه سه مثلا) بخونید چون شما برای یک درجه بالاتر از اینا لازم دارید که اینا رو بدونید چون باید ازشون در مراحل بعدی استفاده بکنید. شما هنوز موارد و کار با دستورات پایه رو نمیدونید و نمی‌توانید این مباحث گفته شده در این عکس را یاذ بگیرید. پس لطفا نه خودتونو گیج کنید و نه وقتتونو تلف کنید. تمام مباحث این عکس و خیلی بیشترش به صورت درست در اون اموزشه هست و من هرچی توضیح بدم فایده نداره. چون می‌گم این i/o redirection  هست ، شما می‌گید i/o redirection  (عوض کردن مسیر ورودی/خروجی) چیه. بعد من فقط خیلی ابتدایی مفهومشو میگم شما میگید فایل /dev/null چیه! :/ و این دور باطل ادامه داره و  شما به صورت کامل و درست نفهمیدید( i/o redirection  چیزای دیگه ای هم داره) و وقت و انرژی پر پر پر. درضمن آموزشی هم که دارید حالا می‌بینید ول کنید مناسب شما نیست. امیدوارم توضیحاتم قانع کننده باشه.
لطفا از این به بعد هم دستورات، کد ، خروجی ، مسیر فایل ها را  در تگ کد که علامت # در بالای text box پاسخ هست بزارید
« آخرین ویرایش: 28 بهمن 1401، 12:00 ق‌ظ توسط 🇬🇧United Kingdom🇬🇧 »
🇬🇧🏴󠁧󠁢󠁥󠁮󠁧󠁿🏴󠁧󠁢󠁷󠁬󠁳󠁿🏴󠁧󠁢󠁳󠁣󠁴󠁿🇬🇧

آفلاین Tinam (azadi nazdike)

  • Newbie
  • *
  • ارسال: 20
  • جنسیت : پسر
پاسخ : این خط کد توی bash چیکار میکنه
« پاسخ #8 : 28 بهمن 1401، 09:42 ق‌ظ »
عزیز من برنامه نویسم و با توضیحاتت متوجه شدم ولی لینوکس کار حرفه ای نیستم و تازه شروع کردم برای همونه سوالاتم کمی سطحیه
ممنونم از توضیحاتت. حتما آموزش رو مد نظر میگیرم مرسی  :)

آفلاین 🇬🇧بریتانیای کبیر🇬🇧

  • High Hero Member
  • *
  • ارسال: 2646
  • جنسیت : پسر
  • GOD SAVE THE KING/QUEEN
پاسخ : این خط کد توی bash چیکار میکنه
« پاسخ #9 : 28 بهمن 1401، 09:52 ق‌ظ »
نکشیمون جیگر. بلد بود یک زبان برنامه‌نویسی فقط باعث میشه مطالب دیگرو سریعتر و بهتر(مفهومی تر) بفهمی ولی بلد بودن یک زبان برنامه‌نویسی باعث نمیشه که نسبت به زبان های برنامه‌نویسی دیگه علم غیب پیدا کنی و بلاخره باید اونارو از پایه یاد بگیری ولی دیگه وقتی داری اون زبانه رو می‌خوانی در ویژگی هایی که با اون زبان برنامه‌نویسی  ای که تو از قبل بلد بودی مشترکه دیگه فقط وقت میزاری روی syntax اون زبان و بعضی فرقای جزعیش با زبان اولیت و دیگه وقت روی فهمیدن مطالب و تعریفاشون نمیزاری.
« آخرین ویرایش: 28 بهمن 1401، 09:54 ق‌ظ توسط 🇬🇧United Kingdom🇬🇧 »
🇬🇧🏴󠁧󠁢󠁥󠁮󠁧󠁿🏴󠁧󠁢󠁷󠁬󠁳󠁿🏴󠁧󠁢󠁳󠁣󠁴󠁿🇬🇧

آفلاین دانیال بهزادی

  • ناظر انجمن
  • *
  • ارسال: 19719
  • جنسیت : پسر
  • Urahara Kiesuke
    • وبلاگ
پاسخ : این خط کد توی bash چیکار میکنه
« پاسخ #10 : 28 بهمن 1401، 03:41 ب‌ظ »
مخصوصاً بش نیاز داره همیشه از پایه یاد گرفته بشه؛ چون علاوه بر زبان برنامه‌نویسی بودن، پوستهٔ سیستم‌عامل هم هست.
اگه این ارسال بهت کمک کرد، دنبال دکمهٔ تشکر نگرد. به جاش تو هم به جامعهٔ آزادت کمک کن

آفلاین Dragon-

  • عضو کاربران ایرانی اوبونتو
  • *
  • ارسال: 5124
  • جنسیت : پسر
پاسخ : این خط کد توی bash چیکار میکنه
« پاسخ #11 : 30 بهمن 1401، 07:35 ب‌ظ »
وقتی از exec بدون هیچ دستوری جلوش و فقط با علامت‌های < و > استفاده می‌کنید، چیزی رو اجرا نمی‌کنه؛ بلکه file descriptor‌های پوسته فعلی رو تغییر میده.

اون exec < path/to/file باعث میشه file descriptor شماره ۰ توی بش، به فایل path/to/file اشاره کنه.
file descriptor شماره ۱ توی بش همون stdin هست.
در واقعیت این خط، stdin رو از ترمینال جدا و به فایل path/to/file وصل کرده. همین.

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

می‌تونید با exec کار‌های دیگه‌ای هم با file descriptor‌ها انجام بدید. مثلا file descriptor جدید باز کنید، یا اینکه یه file descriptor کپی یه file descriptor دیگه باشه و هر دو به یه جا اشاره کنند.
میدونید که زکات علم نشر آن است

آفلاین thmkhtry

  • Hero Member
  • *
  • ارسال: 975
  • جنسیت : پسر
  • Fedora Linux
پاسخ : این خط کد توی bash چیکار میکنه
« پاسخ #12 : 30 بهمن 1401، 08:33 ب‌ظ »
عزیز من برنامه نویسم و با توضیحاتت متوجه شدم ولی لینوکس کار حرفه ای نیستم و تازه شروع کردم برای همونه سوالاتم کمی سطحیه
ممنونم از توضیحاتت. حتما آموزش رو مد نظر میگیرم مرسی  :)
البته توی نوار بالا اگر بزنید روی ویدیو ها آموزش بش داره. منم میخواستم بش رو یاد بگیرم از اونجا شروع کردم. به نظرتون کدومش بهتره؟