Quando elimino una "parola" in Bash, si ferma a determinati caratteri come _
e /
. Ad esempio, se digito
/foo/bar
e attiva backward-kill-word
(in genere mappato su Alt –Backspace e/o Ctrl –con ), il testo rimanente è
/foo/
. Questo non corrisponde a $COMP_WORDBREAKS
o readline
's rl_completer_word_break_characters
. Come posso rilevare (preferibilmente in un sistema in esecuzione, piuttosto che i valori predefiniti nel codice, poiché presumibilmente possono essere sovrascritti) quali caratteri vengono utilizzati per determinare le interruzioni di parola?
Risposta accettata:
La documentazione di bash afferma:
backward-kill-word (M-Rubout)
Uccidi la parola dietro il punto. I limiti delle parole sono gli stessi di quelli usati dalla parola all'indietro.
E
backward-word (M-b)
Torna all'inizio della parola corrente o precedente. Le parole sono composte da caratteri alfanumerici (lettere e cifre).
La gestione di backward-word
in Bash 4.2 viene eseguito nel codice libreadline in bundle (text.c:rl_backward_word
). L'interruzione di parola è basata su rl_alphabetic
, che a sua volta si basa su isalnum
funzione. Dipende dalle impostazioni locali, ma non è configurabile direttamente in bash.
Nota che Bash 4.0 ha introdotto un altro tipo di "parola" con shell-forward-word
e shell-backward-word
azioni (e uccidere equivalenti). Questi si interrompono solo sui metacaratteri della shell (()<>;&|"
) e spazi vuoti (possibilmente dipendenti dalle impostazioni locali tramite isblank
), gestito nel codice bash principale (bashline.c
).