تا 90% تخفیف روی همه دوره‌ها + گارانتی بازگشت وجه + مدرک معتبر + منتورینگ استاد
پایان تخفیف تا:
مشاهده دوره‌ها
0

نشان دادن اسم فایل ها هنگام زدن کلید TAB در ادامه دستور cat

سلام دوستان. من میخوام زمانی که دستور cat رو در ترمینال وارد کردم و کلید TAB رو زدم فقط اسم فایل ها برام نشون داده بشه. چون که بصورت پیش فرض هم اسم فایل ها و هم دایرکتوری نشون داده میشه. تا جایی که اطلاع دارم برای رسیدن به این هدف باید cat رو customize کنی و بعد کامپایلش کنی . متاسفانه انجام این کار دانش برنامه نویسی میخواد که فعلا من ندارمش. راهکار دیگه ای وجود داره ؟

پرسیده شده در 1399/01/18 توسط

1 پاسخ

2

با نوشتن Bash Function به هدفم رسیدم. توی دایرکتوری /etc/bash_completion.d/ یه فایل به اسم cat_no_dirs ایجاد کردم و کد های زیر رو توش نوشتم :

_cat_no_dirs ()
{
    COMPREPLY=()
    cur=($(compgen -o plusdirs -f -- "${COMP_WORDS[COMP_CWORD]}"))
    for ((i=0; i < ${#cur[@]}; i++)); do
        [ -d "${cur[$i]}" ] && continue
        COMPREPLY+=(${cur[$i]})   
    done
    return 0
}
complete -F _cat_no_dirs cat

برای اینکه هر Interactive Shell ای که باز می کنید این تابع عمل کنه فایل etc/bash.bashrc/ رو باز کنید و قسمت زیر رو Uncomment کنید :

if ! shopt -oq posix; then
 if [ -f /usr/share/bash-completion/bash_completion ]; then
   . /usr/share/bash-completion/bash_completion
 elif [ -f /etc/bash_completion ]; then
   . /etc/bash_completion
 fi
fi

کد بالا علاوه بر اجرای توابع داخل فایل etc/bash_completion/ توابع داخل دایرکتوری /etc/bash_completion.d/ رو هم اجرا می کنه. حالا یکبار Logout و Login کنید. حالا هر bash shell ای باز کنید و کلید TAB رو بعد از دستور cat توی یه دایرکتوری که هم فایل داره هم فولدر از روی کیبوردتون بزنید فقط فایل ها رو تو پایین میبینید. 

پاسخ در 1399/01/20 توسط

پاسخ شما