Cuando elimino una "palabra" en Bash, se detendrá en ciertos caracteres como _
y /
. Por ejemplo, si escribo
/foo/bar
y active backward-kill-word
(normalmente asignado a Alt –Retroceso y/o Ctrl –w ), el texto restante es
/foo/
. Esto no corresponde a $COMP_WORDBREAKS
o readline
's rl_completer_word_break_characters
. ¿Cómo puedo detectar (preferiblemente en un sistema en ejecución, en lugar de los valores predeterminados en el código, ya que presumiblemente se pueden anular) qué caracteres se utilizan para determinar los saltos de palabra?
Respuesta aceptada:
La documentación de bash dice:
backward-kill-word (M-Rubout)
Mata la palabra detrás del punto. Los límites de las palabras son los mismos que los utilizados por la palabra hacia atrás.
Y
backward-word (M-b)
Retrocede al inicio de la palabra actual o anterior. Las palabras se componen de caracteres alfanuméricos (letras y dígitos).
El manejo de backward-word
en Bash 4.2 se realiza en el código libreadline incluido (text.c:rl_backward_word
). La palabra descanso se basa en rl_alphabetic
, que a su vez se basa en isalnum
función. Esto depende de la configuración regional, pero no se puede configurar directamente en bash.
Tenga en cuenta que Bash 4.0 introdujo otro tipo de "palabra" con shell-forward-word
y shell-backward-word
acciones (y matar equivalentes). Estos se rompen solo en los metacaracteres de shell (()<>;&|"
) y espacios en blanco (posiblemente dependientes de la configuración regional a través de isblank
), manejado en el código bash principal (bashline.c
).