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 ).