Když smažu „slovo“ v Bash, zastaví se na určitých znacích, jako je _ a / . Například když napíšu
/foo/bar
a aktivujte backward-kill-word (obvykle mapováno na Alt –Backspace a/nebo Ctrl –w ), zbývající text je
/foo/
. To není odpovídají $COMP_WORDBREAKS nebo readline rl_completer_word_break_characters . Jak mohu zjistit (nejlépe v běžícím systému, spíše než výchozí hodnoty v kódu, protože je lze pravděpodobně přepsat), které znaky se používají k určení dělení slov?
Přijatá odpověď:
Dokumentace bash uvádí:
backward-kill-word (M-Rubout)Zabijte slovo za bodem. Hranice slov jsou stejné jako ty, které používá zpětné slovo.
A
backward-word (M-b)Přesun zpět na začátek aktuálního nebo předchozího slova. Slova se skládají z alfanumerických znaků (písmen a číslic).
Zpracování backward-word v Bash 4.2 se provádí v přibaleném kódu libreadline (text.c:rl_backward_word ). Rozdělení slov je založeno na rl_alphabetic , který sám spoléhá na isalnum funkce. To je závislé na národním prostředí, ale nelze jej konfigurovat přímo v bash.
Všimněte si, že Bash 4.0 zavedl další typ „word“ s shell-forward-word a shell-backward-word akce (a ekvivalenty zabíjení). Tyto se lámou pouze u metaznaků shellu (()<>;&|" ) a mezery (pravděpodobně závislé na národním prostředí pomocí isblank). ), zpracovaný v hlavním bash kódu (bashline.c ).