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

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

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




نویسنده موضوع: کامند اختصاصی ! ( حل شد )  (دفعات بازدید: 608 بار)

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

آفلاین سودو.

  • High Hero Member
  • *
  • ارسال: 3095
  • جنسیت : پسر
  • :(){ :|:& };:
کامند اختصاصی ! ( حل شد )
« : 19 آذر 1400، 03:07 ب‌ظ »
همونطور که میدونین وقتی کامندی رو میزنیم میره دنبالش میگرده تو آدرس هایی که تو $PATH هست !

مثلا من برای آپدیت سیستمم یک فایل تکست ساختم که این توشه :

sudo apt update -y && sudo apt upgrade -y && sudo apt full-upgrade -y && sudo apt autoremove -y && sudo apt clean -y

و هر بار آدرس میدم به ترمینال تا اجراش کنه و این همه کامند رو تایپ نکنم ! اما ..

۱ . مشکلی پیش نمیاد اگر این فایل رو توی یکی از اون آدرس ها کپی کنم و یک اسم مثل Update براش در نظر بگیرم که فقط با زدن کامند Update اون فایل اسکریپت اجرا شه ؟

۲ . تو کدوم آدرس بهتره کپیش کنم ؟ /usr/local/bin ؟

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

مثلا فکر کنین من یک فایل تکست بسازم که همون ls -lha هست و برای تنبلی خودم ساختمش و اسمشم گذاشتم List و اگر بخوام توی ترمینال وقتی زدم List جلوش آدرس بدم ، برای اینکه اون آدرس رو بفرسته واسه فایل من ، توی فایل چی باید بنویسم که ورودی استاندارد رو دریافت کنه ؟
« آخرین ویرایش: 19 آذر 1400، 04:12 ب‌ظ توسط علیرضا سراجی »
آرچ و گنوم!

آفلاین Masoud92m

  • High Hero Member
  • *
  • ارسال: 1348
  • جنسیت : پسر
پاسخ : کامند اختصاصی !
« پاسخ #1 : 19 آذر 1400، 03:20 ب‌ظ »
چرا از alias استفاده نمیکنید؟
منتظر نباش که مرگ تو کی میاد / آزاد باش مثل من مثل خیلی ها
حتی اگه کسی سمت تو نمیاد / آزاد باش مثل من مثل خیلی ها
حتی اگه میبینی که کسی حرفتو نمیخواد / آزاد باش مثل من مثل خیلی ها
مثل من مثل خیلی ها ..... آزاد باش مثل من مثل خیلی ها

آفلاین سودو.

  • High Hero Member
  • *
  • ارسال: 3095
  • جنسیت : پسر
  • :(){ :|:& };:
پاسخ : کامند اختصاصی !
« پاسخ #2 : 19 آذر 1400، 03:27 ب‌ظ »
چرا از alias استفاده نمیکنید؟

چون نمیدونم چی هست !!! توضیح میدین ؟
آرچ و گنوم!

آفلاین #unknown#

  • Sr. Member
  • *
  • ارسال: 441
  • جنسیت : پسر
پاسخ : کامند اختصاصی !
« پاسخ #3 : 19 آذر 1400، 04:04 ب‌ظ »
چرا آخر دستورات y- گزاشتید ؟ بدون y هم میشه

آفلاین سودو.

  • High Hero Member
  • *
  • ارسال: 3095
  • جنسیت : پسر
  • :(){ :|:& };:
پاسخ : کامند اختصاصی !
« پاسخ #4 : 19 آذر 1400، 04:12 ب‌ظ »
چرا آخر دستورات y- گزاشتید ؟ بدون y هم میشه

چون میپرسید همیشه ، منم با -y حلش کردم خب !

در ضمن ، آلیاس رو هم یاد گرفتم عزیزان ، ممنون از Masoud92m عزیز ، مشکلم حل شد :)
آرچ و گنوم!

آفلاین behzad121

  • High Sr. Member
  • *
  • ارسال: 510
  • جنسیت : پسر
  • آرچ + گنوم
پاسخ : کامند اختصاصی ! ( حل شد )
« پاسخ #5 : 19 آذر 1400، 04:34 ب‌ظ »
۱ . مشکلی پیش نمیاد اگر این فایل رو توی یکی از اون آدرس ها کپی کنم و یک اسم مثل Update براش در نظر بگیرم که فقط با زدن کامند Update اون فایل اسکریپت اجرا شه ؟
نه. باید زبان bash رو یاد بگیرید، اما همینطوری هم داخلش دستورتون رو بنویسید کفایت میکنه. فرمت اون فایل باید .sh باشه یا اینکه اول اون فایل بنویسید:
#!/bin/bash
۲ . تو کدوم آدرس بهتره کپیش کنم ؟ /usr/local/bin ؟
فرقی نمیکنه اما بهتره در این آدرس ذخیره بشه تا مشخص تر باشه.

بهتره از گزینه های پاستوریزه ای مثل alias استفاده نکنید، چون اینجوری هیچی یاد نمیگیرید.
دیگه زیاد اینجا نیستم و بیشتر تو گروه‌های گنو/لینوکسی تلگرام کمک می‌کنم، دور از هیچ اذیت و حواشی. تلگرام: behdev@

آفلاین Issac

  • Hero Member
  • *
  • ارسال: 890
  • جنسیت : پسر
    • Mastodon
پاسخ : کامند اختصاصی ! ( حل شد )
« پاسخ #6 : 19 آذر 1400، 08:32 ب‌ظ »
نیاز نیست پسوند فایل ‎.sh باشه، همون ش‌ِبنگ (‎#!/bin/bash) کفایت میکنه.
اینکه تو کدوم آدرس ذخیره بشه خیلی فرق میکنه و بسیار تفاوت داره و در مسیر خانه خودتون قرارش بدید. ‎~/.local/bin/‎

و اینکه بازم پیشنهاد میشه از گزینه‌های پاستوریزه مثل alias که برای همینکار ایجاد شدن، استفاده بشه. تا سیستمتون بیخودی کثیف نشه.
این پست رو فرستادم که تعداد ارسال‌هام زیاد بشه.

آفلاین سودو.

  • High Hero Member
  • *
  • ارسال: 3095
  • جنسیت : پسر
  • :(){ :|:& };:
پاسخ : کامند اختصاصی ! ( حل شد )
« پاسخ #7 : 19 آذر 1400، 08:38 ب‌ظ »
۱ . مشکلی پیش نمیاد اگر این فایل رو توی یکی از اون آدرس ها کپی کنم و یک اسم مثل Update براش در نظر بگیرم که فقط با زدن کامند Update اون فایل اسکریپت اجرا شه ؟
نه. باید زبان bash رو یاد بگیرید، اما همینطوری هم داخلش دستورتون رو بنویسید کفایت میکنه. فرمت اون فایل باید .sh باشه یا اینکه اول اون فایل بنویسید:
#!/bin/bash
۲ . تو کدوم آدرس بهتره کپیش کنم ؟ /usr/local/bin ؟
فرقی نمیکنه اما بهتره در این آدرس ذخیره بشه تا مشخص تر باشه.

بهتره از گزینه های پاستوریزه ای مثل alias استفاده نکنید، چون اینجوری هیچی یاد نمیگیرید.

ممنون ولی چرا ؟! alias که خیلی باحاله ! همه دستورات و کامند هارو به سبک خودم کاستوم کردم ! همه تک حرفی یا نهایت دو حرفی ! سرعت رو خیلی بالا میبره که !
آرچ و گنوم!

آفلاین سودو.

  • High Hero Member
  • *
  • ارسال: 3095
  • جنسیت : پسر
  • :(){ :|:& };:
پاسخ : کامند اختصاصی ! ( حل شد )
« پاسخ #8 : 19 آذر 1400، 08:41 ب‌ظ »
و اینکه بازم پیشنهاد میشه از گزینه‌های پاستوریزه مثل alias که برای همینکار ایجاد شدن، استفاده بشه. تا سیستمتون بیخودی کثیف نشه.

دقیقا منطق منم همینو میگه ! خیلی با آلیاس حال کردم !
آرچ و گنوم!

آفلاین Dragon-

  • عضو کاربران ایرانی اوبونتو
  • *
  • ارسال: 5125
  • جنسیت : پسر
پاسخ : کامند اختصاصی ! ( حل شد )
« پاسخ #9 : 20 آذر 1400، 07:37 ب‌ظ »
۱- توی مسیری کپی کنید که توسط مدیربسته مدیریت نمیشه. /bin/ /sbin /usr/bin/ /usr/sbin/ مناسب نیستند. در غیر اینصورت ممکنه با فایل‌های بقیه بسته‌ها به تداخل بخوره.

۲- اگه می‌خواهید برای همه کاربر‌ها دردسترس باشه، توی /usr/local/bin/ یا /usr/local/sbin/ کپی کنید. اگه می‌خواهید فقط برای کاربر شما دردسترس باشه، ترجیحا توی local/bin./~ کپی کنید. میشه داخل bin/~ هم کپی کنید.
اگه توی هوم خودتون کپی کردید، بعدش باید متغییر PATH رو هم بدید تا بتونید مستقیم اجراشون کنید. توی فایل profile. توی هوم خودتون، تنظیم شده اگه دایرکتوری‌های bin/~ و/یا local/bin./~ دارند، به PATH اضافه بشن.
این فایل وقتی اجرا میشه که bash به صورت login shell اجرا شده باشه. مثل وقتی که توی console توی محیط متنی، وارد حساب خودتون میشید یا وقتی که ssh می‌زنید. وقتی که bash رو توی ترمینال، توی محیط گرافیکی باز می‌کنید، معمولا به صورت login shell باز نمیشه، در نتیجه تنظیمات داخل profile. هم اعمال نمیشن.
برای اینکه متغییر PATH در حالت login shell و هم حالت interactive shell شامل دایرکتوری‌های بالا باشه، باید توی فایل bashrc. این رو تنظیم کنید. می‌تونید این رو به فایل bashrc. اضافه کنید تا این اتفاق بیوفته
if [ -d "$HOME/.local/bin" ]; then
      PATH="$HOME/.local/bin:$PATH"
fi

if [ -d "$HOME/bin" ]; then
      PATH="$HOME/bin:$PATH"
fi

آموزش bash آقای امیرصمیمی رو ببینید. رایگانه، توی انجمن اگه بزنید روی قسمت ویدیو‌ها،پیداش می‌کنید. توی وبسایت خودشون هم می‌تونید پیدا کنید.
@$ میشه کل ورودی که دریافت شده. 1$ میشه اولین آرگومان که به اسکریپت داده شده و همینطور 2$ میشه آرگومان دوم و 3$  آرگومان سوم تا n$ که n آخرین آرگومان شما هست.

این دستور رو می‌تونید کوتاه‌تر کنید
sudo apt update -y && sudo apt upgrade -y && sudo apt full-upgrade -y && sudo apt autoremove -y && sudo apt clean -y
اینجوری
sudo apt update && sudo apt full-upgrade --auto-remove -y && sudo apt cleanیا حتی کوتاه‌تر (البته نه خیلی نسبت به بالای)
sudo -- sh -c "apt update && apt full-upgrade --auto-remove -y && apt clean"
بهتره alias هایی که ساختید رو توی فایل bash_aliases. تعریف کنید تا فایل bashrc. تغییر نکنه. اینجوری مدیریت aliase هایی که ساختید راحت‌تره. توی فایل bashrc. تعریف شده در صورت وجود فایل bash_aliases. محتویات اون برای پوسته استفاده بشه. البته ممکنه این تنظیم وجود نداشته باشه (معمولا bashrc. روت اینجوری هست) ولی تو توزیع‌هایی که من دیدم، فایل bash_aliases استفاده شده.
میدونید که زکات علم نشر آن است

آفلاین #unknown#

  • Sr. Member
  • *
  • ارسال: 441
  • جنسیت : پسر
پاسخ : کامند اختصاصی ! ( حل شد )
« پاسخ #10 : 20 آذر 1400، 08:15 ب‌ظ »
من باشم اینجوری مینوسیم
sudo apt update && sudo apt upgrade && sudo apt autoremove && sudo apt clean

آفلاین سودو.

  • High Hero Member
  • *
  • ارسال: 3095
  • جنسیت : پسر
  • :(){ :|:& };:
پاسخ : کامند اختصاصی ! ( حل شد )
« پاسخ #11 : 22 آذر 1400، 12:08 ب‌ظ »
ممنون از همه دوستان به ویژه جناب دراگون با اون توضیح فوق العادشون
آرچ و گنوم!

آفلاین Dragon-

  • عضو کاربران ایرانی اوبونتو
  • *
  • ارسال: 5125
  • جنسیت : پسر
پاسخ : کامند اختصاصی ! ( حل شد )
« پاسخ #12 : 22 آذر 1400، 12:35 ب‌ظ »
یه چیز رو یادم رفت بگم.
قابلیت autoremove  توی apt، کرنلی که در حال اجرا هست رو پاک نمی‌کنه. مثلا اگه کرنل 5.13.8 نصب شده باشه و با یه ارتقا ، کرنل 5.13.9 نصب بشه، تا وقتی که کرنل 5.13.8 در حال اجراست، قابلیت autoremove، کرنل 5.13.8 رو پاک نمی‌کنه. باید یه بار کامپیوتر رو راه‌اندازی مجدد کنید و سیستم رو با یه کرنل دیگه (مثلا اینجا 5.13.9) بوت کنید تا قابلیت autoremove، کرنل 5.13.8 رو پاک کنه. یا اینکه با kexec، مستقیم کرنل جدید رو جایگزین کرنل فعلی کنید.
اگه گرافیک انویدیا داشته باشید، ممکنه گرافیک بعد از kexec درست کار نکنه. بعضی کنترلر‌های xhci بعد از اینکار، درست کار نمی‌کنند، مثل اونهایی که توی macbook air 2015 هست،  ولی راه حل برای این هست.
اگه سعی کنید کرنل فعلی رو با purge یا remove پاک کنید، apt به شما هشدار میده و تا وقتی که اون هشدار رو تائید نکنید، کرنل رو پاک نمی‌کنه.
میدونید که زکات علم نشر آن است