Trabajo en un clúster con muchos usuarios. Hay 50 usuarios en el clúster con la misma primera letra que mi nombre de usuario y un usuario que tiene el mismo nombre hasta la última letra. Cuando complete la tabulación desde /home/e
Me gustaría ver solo /home/elsherbini/
, en lugar de tener que escribir algunos caracteres más, tabular y luego escribir el último.
Parece que FIGNORE no funciona en rutas absolutas, solo en sufijos de archivos. ¿Hay alguna manera de ignorar una lista seleccionada de directorios para completar con pestañas?
GNU bash, versión 4.1.2(1) (x86_64-redhat-linux-gnu)
Respuesta1
Una forma que sugeriría es tener un alias
si solo nos preocupa la home
ruta del directorio, agregar lo siguiente a su profile
sería útil aquí, cualquier alias único que haya creado debe autocompletarse incluso con un primer carácter.
alias myHome="cd /home/elsherbini"
. .profile
my\T
pwd
/home/elsherbini
EDITAR:
La otra manera podría servinculando una llavepero incluso esto requeriría una rápida double click
y right click
, considerando su uso en PuTTY
, si esto ayuda.
completeIt(){ echo "elsherbini"; }
bind -x '"\C-h": completeIt;'
El uso de Control-H
generará su cadena personalizada, diga su nombre de usuario. Uso:
$ cd
elsherbini
Respuesta2
Estoy usando zsh
lo que permite personalizar la finalización muy a fondo. Esta opción evita que se completen ciertos patrones:
autoload -Uz compinit; compinit
# ignore some common patterns that we usually don't want as completions
zstyle ':completion:*' ignored-patterns "/usr/share/iscan" "/usr/lib/iscan" \
"iscan" "/usr/lib/ispell" "ispell" "/usr/lib64" "/usr/lib32" \
"/usr/libx32" "/usr/libexec" "/srv/tftp" "chkwins" "dpkg-buildflags"
Respuesta3
Puede anular el incorporado compgen
para completar directorios simples (como para cd
y ls
). Por ejemplo, ponga esta función en su ~/.bashrc
compgen(){
local IFS=$'\n'
local x tmp
x=$( builtin compgen "$@" ) &&
while read -r tmp; do
[[ "$tmp" =~ ^/home/e && ! "$tmp" =~ ^/home/elsherbini$ ]] ||
echo "$tmp"
done <<< "$x"
}
Ejecuta el incorporado compgen
y filtra la salida para que cualquier línea que comience con la expresión regular ^/home/e
y no coincida ^/home/elsherbini$
se elimine de la lista de posibles terminaciones. Cuidado, las expresiones regulares no se citan en el interior [[]]
.