Wenn ich ein „Wort“ in Bash lösche, stoppt es bei bestimmten Zeichen wie _
und /
. Zum Beispiel, wenn ich
/foo/bar
und aktiviere backward-kill-word
(normalerweise zugeordnet zu Alt –Rücktaste und/oder Strg –w ), der restliche Text ist
/foo/
. Dies nicht entsprechen $COMP_WORDBREAKS
oder readline
‘s rl_completer_word_break_characters
. Wie kann ich erkennen (vorzugsweise in einem laufenden System, anstatt die Standardwerte im Code, da sie vermutlich überschrieben werden können), welche Zeichen verwendet werden, um Wortumbrüche zu bestimmen?
Akzeptierte Antwort:
In der Bash-Dokumentation heißt es:
backward-kill-word (M-Rubout)
Töte das Wort hinter dem Punkt. Wortgrenzen sind die gleichen wie die von Backward Word.
Und
backward-word (M-b)
Zum Anfang des aktuellen oder vorherigen Wortes zurückgehen. Wörter bestehen aus alphanumerischen Zeichen (Buchstaben und Ziffern).
Der Umgang mit backward-word
in Bash 4.2 erfolgt im gebündelten libreadline-Code (text.c:rl_backward_word
). Der Wortumbruch basiert auf rl_alphabetic
, das selbst auf isalnum
angewiesen ist Funktion. Dies ist vom Gebietsschema abhängig, aber nicht direkt in Bash konfigurierbar.
Beachten Sie, dass Bash 4.0 mit dem shell-forward-word
einen weiteren „Wort“-Typ eingeführt hat und shell-backward-word
Aktionen (und Kill-Äquivalente). Diese brechen nur bei Shell-Metazeichen (()<>;&|"
) und Leerzeichen (möglicherweise abhängig vom Gebietsschema über isblank
). ), behandelt im Haupt-Bash-Code (bashline.c
).