In der Syntax s/foo/bar
, \r
und \n
unterschiedliche Bedeutungen haben, je nach Kontext.
Kurz:
Für foo
:
\ n = Newline (LF unter Linux / Mac, CR + LF unter Windows)
\ r = Wagenrücklauf (CR)
Für bar
:
\ r = ist Zeilenumbruch
\ n = Null-Byte.
Länger (mit ASCII-Nummern):
NUL
= 0x00 = 0 = Ctrl+ @
LF
= 0x0A = 10 = Ctrl+ J
CR
= 0x0D = 13 = Ctrl+M
Hier ist eine Liste der ASCII-Steuerzeichen . Fügen Sie sie über Ctrl+ V, Ctrl+ in Vim ein ---key---.
Geben Sie in Bash oder den anderen Unix / Linux-Shells einfach Ctrl+ ein---key--- .
Versuchen Sie Ctrl+ Min Bash. Es ist dasselbe wie Schlagen Enter, da die Shell erkennt, was gemeint ist, obwohl Linux-Systeme Zeilenvorschübe zur Zeilenbegrenzung verwenden.
Um Literale in Bash einzufügen, funktioniert es auch , wenn Sie ihnen Ctrl+ voranstellen V.
Versuchen Sie es in Bash:
echo ^[[33;1mcolored.^[[0mnot colored.
Dies verwendet ANSI-Escape-Sequenzen . Fügen Sie die beiden ^[
über Ctrl+ V, Esc.
Sie können auch versuchen, Ctrl+ V, Ctrl+M , Enter, die Sie dies:
bash: $'\r': command not found
Erinnere dich an die \r
du von oben? :>
Diese Liste der ASCII-Steuerzeichen unterscheidet sich von einer vollständigen ASCII-Symboltabelle darin , dass die Steuerzeichen, die über die in eine Konsole / Pseudoterminal / Vim eingefügt werdenCtrl Schlüssel (haha) werden.
Während in C und den meisten anderen Sprachen normalerweise die Oktalcodes verwendet werden, um diese 'Zeichen' darzustellen.
Wenn Sie wirklich wissen wollen, woher das alles kommt: Der TTY entmystifiziert . Dies ist der beste Link, den Sie zu diesem Thema finden, aber Vorsicht: Es gibt Drachen.
TL; DR
Normalerweise foo
= \n
und bar
= \r
.