]> [حل شد] چگونگی کامل کردن دستورات ترمینال لینوکس به صورت اتوماتیک
نمایش نتایج: از 1 به 8 از 8
لایک درختی3لایک
  • 1 پست توسط Milux
  • 2 پست توسط Milux

موضوع: چگونگی کامل کردن دستورات ترمینال لینوکس به صورت اتوماتیک

  1. Top | #1
    لطفا استاتوس خود را تنظیم کنید.
     

    عنوان کاربر
    کاربر تازه وارد
    تاریخ عضویت
    Mar 2015
    شماره عضویت
    538
    نوشته ها
    5
    OS/Browser
    Linux (Ubuntu) Firefox 36.0

    چگونگی کامل کردن دستورات ترمینال لینوکس به صورت اتوماتیک

    با سلام

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

    خوب حالا سوال من اینه که سورس کد این تکمیل کننده رو چطوری می تونم ببینم؟

    طرز کار این تکمیل کننده چطوریه؟ ایا می تونیم دستوراتی رو خودمون بهش اضافه کنیم مثلا کلمه persian رو بهش اضافه کنیم که در حین نوشتن per در ترمینال و زدن کلید tab اونو به persian تبدیل کنه

    مثلا در ترمینال وقتی می نویسیم areia2c و option هاش رو که می خوایم بنویسیم کلید tab رو که می زنیم option هاش رو نشون نمیده و یا نوشتن مقداری از option و کلید tab رو زدن باز هم اونو کامل نمی کنه ولی برنامه ای مثل wget کار می کنه و می شه این کارو کرد حالا می خوام ببینم ایا برای option های aria2c هم می شه تکمیل کننده ای نوشت و ازش استفاده کرد؟

    اگه سایت کتاب و یا منبع دیگری دارید معرفی کنید

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

  2. Top | #2
    R+L=J
     

    عنوان کاربر
    مدیریت کل سایت
    تاریخ عضویت
    Jun 2013
    شماره عضویت
    1
    نوشته ها
    2,225
    نوشته های وبلاگ
    1
    OS/Browser
    Linux (Ubuntu) Firefox 35.0
    سلام.
    bash completion هست اون کافیه دربارش گوگل کنید. راستش من درمورد اینکه بشه دستور های custom بهش اضافه کرد خبر ندارم و باید گوگل کنم و نتیجه رو براتون قرار بدم ولی الان دارم میرم عجله دارم پس خودتون گوگل کنید بهتره اگرم انگلیسیتون برای گوگل کردن خوب نیست صبر کنید فردا راهنمایی بیشتری کنم
    برای aria2c هم برای راحتی در دانلود از alias های بَش استفاده کنید. روشش از وسطای پست اول این تاپیک گفته شده: دانلود منیجر Aria2
    قوانین (همه کاربران مطالعه کنند) : http://www.ubuntuforums.ir/thread1.html
    لطفا پس از حل مشکل یا رسیدن به جوابتون:
    di LKI3 ۲.۱۷. همه کاربران موظفند پس از حل شدن مشکل یا رسیدن به جواب خود، تاپیکشان را به عنوان موضوع حل شده نشانه‌گذاری کنند.
    برای اینکار، از منوی بالا تاپیک، منو "ابزار‌های موضوع" را انتخاب کرده و سپس گزینه "نشانه‌گذاری این تاپیک به عنوان موضوع حل شده" را انتخاب کنید. این تصویر را ببینید: http://www.imgshare.ir/di-TNWC.png

    rlj3 they will rule together small

  3. Top | #3
    :(){ :|:& };:
     

    عنوان کاربر
    مدیر بخش
    تاریخ عضویت
    May 2014
    شماره عضویت
    168
    نوشته ها
    196
    OS/Browser
    Linux (Ubuntu) Chromium 40.0.2214.111
    اسکریپت زیر رو کپی کن توی ۱ فایل و کپیش کن توی مسیر /etc/bash_completion.d/
    مهمم نیست اسمشو چی میذاری ولی همون بذارش foo

    کد:
    _foo() 
    {
        local cur prev opts
        COMPREPLY=()
        cur="${COMP_WORDS[COMP_CWORD]}"
        prev="${COMP_WORDS[COMP_CWORD-1]}"
        opts="--help --verbose --version"
    
    
        if [[ ${cur} == -* ]] ; then
            COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
            return 0
        fi
    }
    complete -F _foo foo
    comp

    برای امتحانش ۱ تابع توی پوسته به نام foo تعریف کن و امتحان کن ببین نتیجه درسته یا نه.
    پاسخ دوم رو بخون همینه که من اینجا نوشتم اما با توضیح بیشتر (: : لینک
    redragon این پست را پسندیده است! :)

  4. Top | #4
    لطفا استاتوس خود را تنظیم کنید.
     

    عنوان کاربر
    کاربر تازه وارد
    تاریخ عضویت
    Mar 2015
    شماره عضویت
    538
    نوشته ها
    5
    OS/Browser
    Linux (Ubuntu) Firefox 36.0
    سلام
    از زحمتتون ممنون
    خواستم ببینم ایا مرجع فارسی هست که بتونم کل دستوراتش رو یاد بگیرم

  5. Top | #5
    R+L=J
     

    عنوان کاربر
    مدیریت کل سایت
    تاریخ عضویت
    Jun 2013
    شماره عضویت
    1
    نوشته ها
    2,225
    نوشته های وبلاگ
    1
    OS/Browser
    Linux (Ubuntu) Firefox 35.0
    نیازی به یادگیری کل دستورات نیست. دستورات پوسته مثل زبان برنامه نویسی نیستن... پیشنهاد میکنم اگه به یادگیری گنو/لینوکس علاقه دارید یه کم اول توش کار کنید و با مباحث مبتدی آشنا شید بعد برید سراغ یادگیری lip1 , 2 , 2 ...
    سایت 30li.ir رو ببینید (سی ال آی هست اسمش نه سیلی )
    بهترین مرجع هم گوگل هست عزیز همیشه از گوگل استفاده کنید این سوالتون رو میتونستید به راحتی از گوگل بپرسید
    قوانین (همه کاربران مطالعه کنند) : http://www.ubuntuforums.ir/thread1.html
    لطفا پس از حل مشکل یا رسیدن به جوابتون:
    di LKI3 ۲.۱۷. همه کاربران موظفند پس از حل شدن مشکل یا رسیدن به جواب خود، تاپیکشان را به عنوان موضوع حل شده نشانه‌گذاری کنند.
    برای اینکار، از منوی بالا تاپیک، منو "ابزار‌های موضوع" را انتخاب کرده و سپس گزینه "نشانه‌گذاری این تاپیک به عنوان موضوع حل شده" را انتخاب کنید. این تصویر را ببینید: http://www.imgshare.ir/di-TNWC.png

    rlj3 they will rule together small

  6. Top | #6
    :(){ :|:& };:
     

    عنوان کاربر
    مدیر بخش
    تاریخ عضویت
    May 2014
    شماره عضویت
    168
    نوشته ها
    196
    OS/Browser
    Linux (Ubuntu) Chromium 40.0.2214.111
    وقتی با اولین مفاهیم آشنانباشید توضیح فارسیش نمیدونم کمکی میکنه یا نه!


    کد:
    COMP_WORDS


    یک آرایه ست شامل تمام چیزایی که توی خط فرمان نوشتی. مثلاً اگه دستور زیررو نوشتی و داری تب میزنی اولین خونه آرایه (خونه شماره صفر)میشه foo و دومی (خونه شماره ۱)میشه aop
    کد:
    foo aop

    کد:
    COMP_CWORD
    ایندکس مکان نماست که برای دسترسی به اعضای آرایه بالا مورد استفاده قرار میگیره.
    پس دستور زیر aop رو میریزه توی cur
    کد:
    cur="${COMP_WORDS[COMP_CWORD]}"
    دستورزیر هم fooرو میریزه توی prev
    کد:
    prev="${COMP_WORDS[COMP_CWORD-1]}"
    فرض کنیم آپشن های برنامه مون ایناست (چهار تاست) که میریزمش توی متغیر opts
    کد:
    opts="aop bop cop dop"
    مهمترین قسمت اسکریپت دستور زیره
    کد:
    compgen -W"${opts}" -- ${cur}

    optsکه مشخصه یه آریه ازآپشن هاست.ایجا -- به معنی پایان آپشنهای برنامه است.برای اینکه بهتر مفهومش رو بفهمی مثال زیر رو میزنم
    کد:
    { milu ~ }$ echo "-vmilux" > /tmp/file
    { milu ~ }$ grep -- -v /tmp/file
    -vmilux
    
    یعنی دیگه با -v شبیه به یک سویچ برخوردنمیشه.

    خب حالا با درکی که به دست آوردیم این دستو ررو توی پوسته اجرا میکنم
    کد:
    { milu ~ }$ compgen -W "aop bop cop dop" -- "a"
    aop
    
    دستورزیر هم باعث میشه که تابع _foo برای تکمیل سویچ های تابع foo فراخوانی شه و در نهایت یک آرایه از آپشن ها (COMPREPLY)رو برگردونه.

    کد:
    complete -F_foo foo
    ویرایش توسط Milux : 03-07-2015 در ساعت 10:51 AM
    redragon و S0h3!L این پست را پسندیده‌اند! :)

  7. Top | #7
    لطفا استاتوس خود را تنظیم کنید.
     

    عنوان کاربر
    کاربر تازه وارد
    تاریخ عضویت
    Mar 2015
    شماره عضویت
    538
    نوشته ها
    5
    OS/Browser
    Linux (Ubuntu) Firefox 36.0
    milux جان پاسخت عالی بود
    واقعا کمک زیادی بهم کردی
    تشکر فراوان

  8. Top | #8
    R+L=J
     

    عنوان کاربر
    مدیریت کل سایت
    تاریخ عضویت
    Jun 2013
    شماره عضویت
    1
    نوشته ها
    2,225
    نوشته های وبلاگ
    1
    OS/Browser
    Linux (Ubuntu) Firefox 35.0
    اگه دیگه سوالی نیست، لطفا امضای بنده (انتهای این پست) رو ببینید (تاپیک رو به عنوان حل شده نشانه گذاری کنید)
    قوانین (همه کاربران مطالعه کنند) : http://www.ubuntuforums.ir/thread1.html
    لطفا پس از حل مشکل یا رسیدن به جوابتون:
    di LKI3 ۲.۱۷. همه کاربران موظفند پس از حل شدن مشکل یا رسیدن به جواب خود، تاپیکشان را به عنوان موضوع حل شده نشانه‌گذاری کنند.
    برای اینکار، از منوی بالا تاپیک، منو "ابزار‌های موضوع" را انتخاب کرده و سپس گزینه "نشانه‌گذاری این تاپیک به عنوان موضوع حل شده" را انتخاب کنید. این تصویر را ببینید: http://www.imgshare.ir/di-TNWC.png

    rlj3 they will rule together small

اطلاعات موضوع

کاربرانی که در حال مشاهده این موضوع هستند

در حال حاضر 1 کاربر در حال مشاهده این موضوع است. (0 کاربران و 1 مهمان ها)

کلمات کلیدی این موضوع

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •