Saya mencari penyelesaian tab pada alias baris perintah saya, misalnya, katakanlah saya mendefinisikan alias berikut:
alias apt-inst='sudo aptitude install'
Apakah ada cara untuk mendapatkan penyelesaian yang disediakan oleh aptitude ketika saya menekan tombol tab? yaitu ketika saya menulis 'Sudo aptitude install gnumer' dan tekan tab, aptitude menyelesaikan ini ke gnumeric, atau jika ada ketidakpastian daftar semua paket yang tersedia dimulai dengan gnumer. Jika saya melakukannya menggunakan alias saya, tidak ada – tidak ada penyelesaian.
Jawaban yang Diterima:
Ada utas hebat tentang ini di forum Ubuntu. Ole J mengusulkan fungsi definisi penyelesaian alias berikut:
function make-completion-wrapper () {
local function_name="$2"
local arg_count=$(($#-3))
local comp_function_name="$1"
shift 2
local function="
function $function_name {
((COMP_CWORD+=$arg_count))
COMP_WORDS=( "[email protected]" ${COMP_WORDS[@]:1} )
"$comp_function_name"
return 0
}"
eval "$function"
echo $function_name
echo "$function"
}
Gunakan untuk mendefinisikan fungsi pelengkap alias Anda, lalu tentukan fungsi itu sebagai pelengkap alias:
make-completion-wrapper _apt_get _apt_get_install apt-get install
complete -F _apt_get_install apt-inst
Saya lebih suka menggunakan alias untuk menambahkan argumen yang selalu digunakan ke program yang ada. Misalnya, dengan grep
, saya selalu ingin melewatkan perangkat dan file biner, jadi saya membuat alias untuk grep
. Untuk menambahkan perintah baru seperti grepbin
, saya menggunakan skrip shell di ~/bin
. saya map. Jika folder itu ada di jalur Anda, folder itu akan dilengkapi secara otomatis.