ในไวยากรณ์s/foo/bar
, \r
และ\n
มีความหมายที่แตกต่างกันขึ้นอยู่กับบริบท
สั้น:
สำหรับfoo
:
\ n = newline (LF บน Linux / Mac, CR + LF บน Windows)
\ r = carriage return (CR)
สำหรับbar
:
\ r = is newline
\ n = null ไบต์
อีกต่อไป (พร้อมหมายเลข ASCII):
NUL
= 0x00 = 0 = Ctrl+ @
LF
= 0x0A = 10 = Ctrl+ J
CR
= 0x0D = 13 = Ctrl+M
นี่คือรายการที่ตัวควบคุม ASCII ใส่พวกเขาในการเป็นกลุ่มผ่านCtrl+ V, +Ctrl---key---
ในทุบตีหรืออื่น ๆ เปลือกหอย Unix / Linux เพียงพิมพ์+Ctrl---key---
ลองCtrl+ Mใน Bash มันเหมือนกับการกดปุ่มEnterเพราะเชลล์รู้ว่ามันหมายถึงอะไรแม้ว่าระบบ Linux จะใช้ไลน์ฟีดสำหรับการกำหนดบรรทัด
ในการแทรกตัวอักษรใน bash การเติมพวกเขาด้วยCtrl+ Vจะใช้งานได้
ลองใน Bash:
echo ^[[33;1mcolored.^[[0mnot colored.
นี้ใช้ลำดับหนี ANSI ใส่สอง^[
's ผ่านCtrl+ ,VEsc
คุณอาจลองCtrl+ V, Ctrl+ M, Enterซึ่งจะทำให้คุณนี้:
bash: $'\r': command not found
จำ\r
จากข้างบน? :>
นี้ASCII ตัวควบคุมรายการจะแตกต่างจากที่สมบูรณ์ตารางสัญลักษณ์ ASCIIในการที่ตัวควบคุมซึ่งจะแทรกเข้าไปในคอนโซล / pseudoterminal / กลุ่มผ่านCtrlคีย์ (ฮ่าฮ่า) สามารถพบได้มี
โดยที่ใน C และภาษาอื่น ๆ ส่วนใหญ่คุณมักจะใช้รหัสฐานแปดเพื่อแสดง 'อักขระ' เหล่านี้
ถ้าคุณอยากจะทราบว่าทั้งหมดนี้มาจาก: TTY demystified นี่คือลิงค์ที่ดีที่สุดที่คุณจะเจอเกี่ยวกับหัวข้อนี้ แต่ระวัง: มีมังกร
TL; DR
โดยปกติfoo
= \n
และ=bar
\r