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

کمک و پشتیبانی => انجمن عمومی => نویسنده: Tinam (azadi nazdike) در 27 بهمن 1401، 10:26 ب‌ظ

عنوان: این خط کد توی bash چیکار میکنه
ارسال شده توسط: Tinam (azadi nazdike) در 27 بهمن 1401، 10:26 ب‌ظ
سلام. من دارم bash یاد میگیرم یه سوال داشتم. این خط کد چی میگه؟


exec < 'path/to/file'
عنوان: پاسخ : این خط کد توی bash چیکار میکنه
ارسال شده توسط: 🇬🇧بریتانیای کبیر🇬🇧 در 27 بهمن 1401، 10:34 ب‌ظ
I/O redirection هست که فایل بعد از > را به دستور پاس میده و برای دستوراتی که از stdin نمیتونن اطلاعات دریافت کنند مثل tr بکار میره.
بشدت این آموزشو برای بش و لینوکس  توصیه می‌کنم. عالیه.
https://www.aparat.com/nasser4321
فیلماشو با کیفیت  ۴۸۰ دالود کن(نه کیفیت کمتر و نه بیشتر) و شروع کن به دیدن. یه جزوه خلاصه هم برای خودت بنویس.
ویرایش: این آموزش رو ببین چون مطمئنم که از توضیحات من چیزی نفهمیدی ولی این آموزش قدم به قدم جلو میره و از اول حالیت میکنه که چی به چیه.
عنوان: پاسخ : این خط کد توی bash چیکار میکنه
ارسال شده توسط: Tinam (azadi nazdike) در 27 بهمن 1401، 11:00 ب‌ظ
ممنون. چرا متوجه شدم ولی یه چیزی رو متوجه نمیشم که چرا باید پروسس فعلی رو قطع و پروسه جدید با دستور exec ایجاد کنیم..
عنوان: پاسخ : این خط کد توی bash چیکار میکنه
ارسال شده توسط: 🇬🇧بریتانیای کبیر🇬🇧 در 27 بهمن 1401، 11:02 ب‌ظ
حالا من نگرفتم منظورتون چیه. :/ یکم واضح تر می‌گید؟
اگه منظورتون اینکه چرا فقط میشه یه پروسس رو در یک tty یا در یک tab ترمینال پیگیری کرد نه اینجور نیست.
میشه با ctrl + z اون پروسس را در پشت زمینه اجرا کرد و یا از tty های دیگه استفاده کنید یا از tmux استفاده کنید. tmux خیلی خوبه. امیدوارم که من منظورتون را فهمیده باشم یا اگه درست فهمیدم شما بعدش حرفامو بفهمید. همانطورکه گفتم از اون آموزشه برید. خیلی گام به گام و خوبه. اگه تمرین کنید با اون آموزشه خیلی پیشرفت می‌کنید
عنوان: پاسخ : این خط کد توی bash چیکار میکنه
ارسال شده توسط: Tinam (azadi nazdike) در 27 بهمن 1401، 11:12 ب‌ظ
یه آموزش دارم میبینم که طرف میخواد لیست یسری فایل رو در بیاره و اونهارو بده به حلقه
حالا اومده و یه فایل درست کرده که لیست فایل ها داخل اون هستن
میخواد اون فایل رو بخونه اومده و این تیکه کد رو استفاده کرده که توی فایل های پیوست گذاشتم. حالا متوجه دوتا چیز نمیشم.
اون
2> /dev/null
چیه
و اون خط exec چرا باید توسط exec اجرا بشه.. مگه بصورت عادی نمیشه فایل رو به خروجی پاس داد؟
عنوان: پاسخ : این خط کد توی bash چیکار میکنه
ارسال شده توسط: Tinam (azadi nazdike) در 27 بهمن 1401، 11:14 ب‌ظ
یه توضیح راجع این کد بدم.. توی این آموزش قراره یه کد نوشته بشه که با هربار اجرا یه بکاپ از یسری فولدر بگیره..
عنوان: پاسخ : این خط کد توی bash چیکار میکنه
ارسال شده توسط: 🇬🇧بریتانیای کبیر🇬🇧 در 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
عنوان: پاسخ : این خط کد توی bash چیکار میکنه
ارسال شده توسط: 🇬🇧بریتانیای کبیر🇬🇧 در 27 بهمن 1401، 11:31 ب‌ظ
ببینید شما نمی‌توانید مثلا لگاریتم ، تابع درجه دو و .... رو بلد نباشید (خودمم بلد نیستم. مثاله) و بعدش برید یک درجه بالا تر از اینا را (تابع درجه سه مثلا) بخونید چون شما برای یک درجه بالاتر از اینا لازم دارید که اینا رو بدونید چون باید ازشون در مراحل بعدی استفاده بکنید. شما هنوز موارد و کار با دستورات پایه رو نمیدونید و نمی‌توانید این مباحث گفته شده در این عکس را یاذ بگیرید. پس لطفا نه خودتونو گیج کنید و نه وقتتونو تلف کنید. تمام مباحث این عکس و خیلی بیشترش به صورت درست در اون اموزشه هست و من هرچی توضیح بدم فایده نداره. چون می‌گم این i/o redirection  هست ، شما می‌گید i/o redirection  (عوض کردن مسیر ورودی/خروجی) چیه. بعد من فقط خیلی ابتدایی مفهومشو میگم شما میگید فایل /dev/null چیه! :/ و این دور باطل ادامه داره و  شما به صورت کامل و درست نفهمیدید( i/o redirection  چیزای دیگه ای هم داره) و وقت و انرژی پر پر پر. درضمن آموزشی هم که دارید حالا می‌بینید ول کنید مناسب شما نیست. امیدوارم توضیحاتم قانع کننده باشه.
لطفا از این به بعد هم دستورات، کد ، خروجی ، مسیر فایل ها را  در تگ کد که علامت # در بالای text box پاسخ هست بزارید
عنوان: پاسخ : این خط کد توی bash چیکار میکنه
ارسال شده توسط: Tinam (azadi nazdike) در 28 بهمن 1401، 09:42 ق‌ظ
عزیز من برنامه نویسم و با توضیحاتت متوجه شدم ولی لینوکس کار حرفه ای نیستم و تازه شروع کردم برای همونه سوالاتم کمی سطحیه
ممنونم از توضیحاتت. حتما آموزش رو مد نظر میگیرم مرسی  :)
عنوان: پاسخ : این خط کد توی bash چیکار میکنه
ارسال شده توسط: 🇬🇧بریتانیای کبیر🇬🇧 در 28 بهمن 1401، 09:52 ق‌ظ
نکشیمون جیگر. بلد بود یک زبان برنامه‌نویسی فقط باعث میشه مطالب دیگرو سریعتر و بهتر(مفهومی تر) بفهمی ولی بلد بودن یک زبان برنامه‌نویسی باعث نمیشه که نسبت به زبان های برنامه‌نویسی دیگه علم غیب پیدا کنی و بلاخره باید اونارو از پایه یاد بگیری ولی دیگه وقتی داری اون زبانه رو می‌خوانی در ویژگی هایی که با اون زبان برنامه‌نویسی  ای که تو از قبل بلد بودی مشترکه دیگه فقط وقت میزاری روی syntax اون زبان و بعضی فرقای جزعیش با زبان اولیت و دیگه وقت روی فهمیدن مطالب و تعریفاشون نمیزاری.
عنوان: پاسخ : این خط کد توی bash چیکار میکنه
ارسال شده توسط: دانیال بهزادی در 28 بهمن 1401، 03:41 ب‌ظ
مخصوصاً بش نیاز داره همیشه از پایه یاد گرفته بشه؛ چون علاوه بر زبان برنامه‌نویسی بودن، پوستهٔ سیستم‌عامل هم هست.
عنوان: پاسخ : این خط کد توی bash چیکار میکنه
ارسال شده توسط: Dragon- در 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 دیگه باشه و هر دو به یه جا اشاره کنند.
عنوان: پاسخ : این خط کد توی bash چیکار میکنه
ارسال شده توسط: thmkhtry در 30 بهمن 1401، 08:33 ب‌ظ
عزیز من برنامه نویسم و با توضیحاتت متوجه شدم ولی لینوکس کار حرفه ای نیستم و تازه شروع کردم برای همونه سوالاتم کمی سطحیه
ممنونم از توضیحاتت. حتما آموزش رو مد نظر میگیرم مرسی  :)
البته توی نوار بالا اگر بزنید روی ویدیو ها آموزش بش داره. منم میخواستم بش رو یاد بگیرم از اونجا شروع کردم. به نظرتون کدومش بهتره؟