Estoy buscando completar la tabulación en mis alias de línea de comando, por ejemplo, digamos que definí el siguiente alias:
alias apt-inst='sudo aptitude install'
¿Hay alguna manera de obtener las terminaciones proporcionadas por aptitude cuando presiono la tecla de tabulación? es decir, cuando escribo 'sudo aptitude install gnumer' y presiono el tabulador, aptitude completa esto a gnumeric, o si hay dudas enumera todos los paquetes disponibles comenzando con gnumer. Si lo hago usando mi alias, nada, no se completa.
Respuesta aceptada:
Hay un gran hilo sobre esto en los foros de Ubuntu. Ole J propone la siguiente función de definición de finalización de alias:
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"
}
Úselo para definir una función de finalización para su alias, luego especifique esa función como completadora para el alias:
make-completion-wrapper _apt_get _apt_get_install apt-get install
complete -F _apt_get_install apt-inst
Prefiero usar alias para agregar argumentos siempre usados a programas existentes. Por ejemplo, con grep
, siempre quiero omitir dispositivos y archivos binarios, así que hago un alias para grep
. Para agregar nuevos comandos como grepbin
, uso un script de shell en mi ~/bin
carpeta. Si esa carpeta está en su ruta, se completará automáticamente.