نشان دادن اسم فایل ها هنگام زدن کلید TAB در ادامه دستور cat
سلام دوستان. من میخوام زمانی که دستور cat رو در ترمینال وارد کردم و کلید TAB رو زدم فقط اسم فایل ها برام نشون داده بشه. چون که بصورت پیش فرض هم اسم فایل ها و هم دایرکتوری نشون داده میشه. تا جایی که اطلاع دارم برای رسیدن به این هدف باید cat رو customize کنی و بعد کامپایلش کنی . متاسفانه انجام این کار دانش برنامه نویسی میخواد که فعلا من ندارمش. راهکار دیگه ای وجود داره ؟
1 پاسخ
با نوشتن 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 توی یه دایرکتوری که هم فایل داره هم فولدر از روی کیبوردتون بزنید فقط فایل ها رو تو پایین میبینید.