با ثبت نام در سایت از مزایای اعضا بهره مند شوید!

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

+2 امتیاز
528 بازدید
سوال شده اسفند 14, 1393 در دستورات لینوکس توسط سعيد (394 امتیاز)
با سلام

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

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

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

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

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

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

2 پاسخ

0 امتیاز
پاسخ داده شده اسفند 15, 1393 توسط amirnami (1,161 امتیاز)
انتخاب شده اسفند 15, 1393 توسط سعيد
 
بهترین پاسخ

به این حالت bash_completion می گن.

لینک 1

لینک 2

دارای دیدگاه اسفند 15, 1393 توسط سعيد (394 امتیاز)
سلام

دستت درد نکنه خوب بود ولی خودم منابع انگلیسی زیادی پیدا کرده بودم من می خواستم اگه کسی بلده ی توضیح فارسی برام بده که ی کم دستگیرم بشه ببینم چطوریه.

بازم تشکر
دارای دیدگاه اسفند 15, 1393 توسط amirnami (1,161 امتیاز)
ویرایش شده اسفند 15, 1393 توسط amirnami

سلام

خودم هم قبلن دنبال فارسی بودم اما چیز خاصی پیدا نکردم

به طور کلی بای با شل اسکریپت نویسی آشنا باشی. اقای حاج غلامعلی تعریف می کرد که تعدادی از بچه های تیم سیستم عامل ملی روی bash_completion کار کرده بودن و مواردی رو هم ارائه کردن که الان اکثریت یا همشون خارج از ایران هستن.

این لینک به عنوان مرجع اصلی هستش. کدهای زیر    مربوط به دستور kill هستش که نشون میده شما می بایست با شل اسکریپت نویسی آشنا باشی. در این لینک هم یک مثال از چگونگی نوشتن گفته شده

# kill(1) completion                                       -*- shell-script -*-

_kill()
{
    local cur prev words cword
    _init_completion || return

    case $prev in
        -s)
            _signals
            return
            ;;
        -l)
            return
            ;;
    esac

    if [[ $cword -eq 1 && "$cur" == -* ]]; then
        # return list of available signals
        _signals -
        COMPREPLY+=( $( compgen -W "-s -l" -- "$cur" ) )
    else
        # return list of available PIDs
        _pids
    fi
} &&
complete -F _kill kill

# ex: ts=4 sw=4 et filetype=sh

دارای دیدگاه اسفند 15, 1393 توسط سعيد (394 امتیاز)
آقا بسیار عالی بود

متشکرم
دارای دیدگاه اسفند 15, 1393 توسط amirnami (1,161 امتیاز)
خواهش می کنم
0 امتیاز
پاسخ داده شده اسفند 15, 1393 توسط hojy (566 امتیاز)

مکان سورس رو نمی‌دونم اما فک کنم دستور تایپ شده رو با بانک دستورات  bash و آدرس‌ها مقایسه می‌کنه و پیشنهاد می‌ده که zsh تو این امکان خیلی قوی‌تر از bash هست.
راه ساده تر استفاده از دستور alias است.مثلا:

alias aria2c = 'aria2c -c'

و راه کامل‌تر اینه که یه اسکریپت بنویسی و نامش رو مطابق دستوری که می‌خوای تغییر بدی و بریزیش تو مسیر /usr/local/sbin و اجراییش کنی تا دستور مخصوص به خودتو داشته باشی.

سرور مجازی لینوکس

2,159 سوال

3,311 پاسخ

3,437 دیدگاه

9,388 کاربر

...