เปิดเมนูหลัก

แบ็กสแลช (\) (อังกฤษ: backslash) เป็นเครื่องหมายการพิมพ์ที่ใช้มากในคอมพิวเตอร์ ลักษณะเป็นภาพสะท้อน ของเครื่องหมายทับ(หรือแสลช)ธรรมดา (/) เครื่องหมายนี้อยู่ที่ U+005C \ reverse solidus (92decimal) ในยูนิโคดและแอสกี

\
เครื่องหมายวรรคตอน

กิลเลอเมต ( « » )
จุดไข่ปลา ( , ... )
จุลภาค ( , )
ซอลิดัส ( )
ทวิภาค ( : )
ทับ ( / )
นขลิขิต ( ), [ ], { }, < >
บุพสัญญา ( " )
ปรัศนี ( ? )
มหัพภาค ( . )
ยัติภังค์ ( -, )
ยัติภาค ( , , , )
สัญประกาศ ( _ )
เสมอภาค ( = )
อะพอสทรอฟี ( ', ʻ, )
อัญประกาศ ( “ ”, ‘ ’, " " )
อัฒภาค ( ; )
อัศเจรีย์ ( ! )

การแบ่งคำ

มหรรถสัญญา
เว้นวรรค ( ) () ()
อินเทอร์พังก์ ( · )

การพิมพ์ทั่วไป

แคเรต ( ^ )
เซกชัน ( § )
ดอกจัน ( * )
แด็กเกอร์ ( ) ( )
ทิลเดอ ( ~ )
นัมเบอร์ ( # )
นูเมอโร ( )
บวกและลบ (+ −)
บวกหรือลบ (±)
บุลเลต ( )
แบ็กสแลช ( \ )
ปรัศนีกลับหัว ( ¿ )
เปอร์เซ็นต์ ( %, ‰, )
พิลโครว์ ( )
ไพป์ ( |, ¦ )
ไพรม์ ( )
สกุลเงิน ( ¤ ) ¢, $, , £, ¥, ,
องศา ( ° )
ออเบอลุส (÷)
อันเดอร์สกอร์ ( _ )
อัศเจรีย์กลับหัว ( ¡ )
แอมเพอร์แซนด์ ( & )
แอต ( @ )

การพิมพ์เฉพาะทาง

กรณฑ์ ( )
ซาร์แคซึมมาร์ก
ดัชนี ( )
เพราะฉะนั้น ( )
ลอซินจ์ ( )
อ้างอิง ( )
อินเทอร์รอแบง ( )
แอสเทอริซึม ( )
ไอรอนนีมาร์ก ( ؟ )

เครื่องหมายไทย

โคมูตร ( )
ตีนครุ ( )
ไปยาลน้อย ( )
ไปยาลใหญ่ ( ฯลฯ )
ฟองมัน ( )
ไม้ยมก ( )
อังคั่น ( , ฯะ, , ๚ะ )

ประวัติแก้ไข

บ็อบ เบเมอร์ ได้เพิ่มอักขระ \ ลงใน ASCII [1] ในวันที่ 18 กันยายน 1961, [2] โดยมีสาเหตุจากการศึกษาความถี่ของตัวอักษร การเพิ่มเครื่องหมาย \ มีจุดประสงค์โดยเฉพาะให้ตัวดำเนินการบูลีน ALGOL ∧ (และ) กับ ∨ (หรือ) สามารถประกอบจากสัญลักษณ์ที่มีใน ASCII เป็น /\ กับ \/ ตามลำดับ [3][4] ตัวดำเนินการทั้งสองนี้รวมอยู่ในภาษาซีรุ่นแรกที่มาพร้อมกับรับบปฏิบัติการ Unix V6 Unix V7 และปัจจุบัน BSD 2.11

การใช้งานแก้ไข

ในภาษาโปรแกรมหลายภาษา เช่น ซี เพิร์ล พีเอชพี ไพทอน และในภาษาสคริปต์ยูนิกซ์ ใช้แบ็กสแลชเป็นอักขระหลีก (escape character) เพื่อระบุว่าให้ปฎิบัติกับอักขระที่ตามมาเป็นพิเศษ (ถ้าปกติอักขระตัวนั้นไม่มีความหมายพิเศษ) หรือเป็นปกติ (ถ้าอักขระตัวนั้นมีความหมายพิเศ) ตัวอย่างเช่นภายในสตริงภาษาซี ลำดับ\n จะให้ค่าเป็นอักขระขึ้นบรรทัดใหม่ แทนที่จะเป็นตัวอักษร 'n' ตรง ๆ และลำดับ \" หมายถึงเครื่องหมายคำพูดคู่ตรง ๆ แทนที่จะเป็นความหมายพิเศษของเครื่องหมายคำพูดคู่ซึ่งใช้ลงท้ายสตริง ในทำนองเดียวกัน ภาษาของนิพจน์ปรกติ (regular expression) ต่าง ๆ ใช้เครื่องหมายนี้เปลี่ยนระหว่างอักขระตามตัวอักษรกับอักขระควบคุม (metacharacter) จากลักษณะการใช้งานนี้ ลำดับแบ็กสแลชคู่ \\ จะหมายถึงอักขระแบ็กสแลชตามตัวอักษรปกติ

นอกเหนือจากในสตริง การใช้งาน \ โดยทั่วไป มีแค่การใช้ลงท้ายบรรทัดเพื่อระบุให้ละเว้นอักขระขึ้นบรรทัดใหม่ที่ต่อท้าย ดังนั้นบรรทัดถัดจากนั้นจะถูกปฏิบัติเสมือนว่าเป็นส่วนหนึ่งของบรรทัดเดิม ในบริบทนี้อาจเรียกว่า "ความต่อเนื่อง" [5]

ภาษาโปรแกรม ALGOL 68 ใช้ "\" เป็น สัญลักษณ์เลขชี้กำลังฐานสิบ โดยมีตัวเลือก 4 แบบ: e, E, \, หรือ 10 ตัวอย่าง: 6.0221415e23 6.0221415E23 , 6.0221415\23 หรือ 6.02214151023 [6]

ในภาษา APL \ เรียกว่า Expand เมื่อใช้เพื่อแทรก fill element ลงในอาร์เรย์และ Scan เมื่อใช้ทำ prefix reduction (cumulative fold)

แบ็กสแลชใช้ในระบบ TeX และในไฟล์ RTF เพื่อเริ่มแท็กมาร์กอัป ในภาษาแฮสเกลล์ ใช้แบ็กสแลชในการระบุทั้งอักขระพิเศษและฟังก์ชันแลมบ์ดา (เนื่องจากเป็นสัญลักษณ์ ASCII ที่คล้ายกลับ อักษรแลมบ์ดา λ) [7]

MS-DOS 2.0 ซึ่งเปิดตัว ค.ศ. 1983 คัดลอกระบบไฟล์แบบลำดับชั้นมาจากยูนิกซ์ จึงใช้ เครื่องหมายทับ(ไปข้างหน้า)[8] แต่ได้เพิ่มแบ็กสแลช (อาจมาจากการเสนอของ IBM[9]) สำหรับการพิมพ์พาธในพรอมต์ของอินเทอร์พรีเตอร์บรรทัดคำสั่ง ในขณะที่ยังคงรักษาความเข้ากันได้กับ MS-DOS 1.0 โดยที่เครื่องหมายทับเป็นตัวบ่งชี้ตัวเลือกบรรทัดคำสั่ง (เช่น การพิมพ์ "DIR/W" จะระบุตัวเลือก "wide" ให้คำสั่ง "DIR" ดังนั้นจะต้องใช้วิธีอื่นในการเรียกใช้โปรแกรมที่เรียกว่า W ภายในไดเรกทอรีที่เรียกว่า DIR) นอกเหนือจาก COMMAND.COM ส่วนอื่น ๆ ทั้งหมดของระบบปฏิบัติการ ยอมรับทั้งสองตัวอักษรในการระบุพาธ แต่ระเบียบปกติของไมโครซอฟต์ ยังคงใช้แบ็กสแลชและ API ที่ย้อนกลับเส้นทาง ใช้แบ็กสแลช[10] ในบางรุ่น อักขระตัวเลือกสามารถเปลี่ยนจาก / เป็น - ผ่าน SWITCHAR ซึ่งอนุญาตให้ COMMAND.COM รักษาการใช้ / ในชื่อคำสั่ง

ตระกูลระบบปฏิบัติการ ไมโครซอฟท์ วินโดวส์ สืบทอดการทำงานจาก MS-DOS และยังคงรองรับอักขระทั้งสองแบบ แต่โปรแกรมและระบบย่อยแต่ละตัวของวินโดวส์ อาจผิดพลาดและยอมรับตัวคั่นพาธ เฉพาะแบ็กสแลช หรืออาจตีความเครื่องหมายทับธรรมดาผิดเมื่อใช้ในลักษณะนี้ บางโปรแกรมจะยอมรับเครื่องหมายทับเท่านั้นหากพาธอยู่ในเครื่องหมายคำพูดคู่[11] ความล้มเหลวของระบบรักษาความปลอดภัยของไมโครซอฟต์ในการรับรู้ถึงทิศทางที่ไม่คาดคิดในพาธท้องถิ่นและบนอินเทอร์เน็ตในขณะที่ส่วนอื่น ๆ ของระบบปฏิบัติการยังคงปฏิบัติหน้าที่อยู่นั้น เคยนำไปสู่ปัญหาทางความปลอดภัยที่ร้ายแรง โดยแหล่งข้อมูลที่ไม่ควรเข้าถึงได้ อาจเข้าถึงผ่านด้วยเส้นทางที่ใช้สูตรเฉพาะเช่น http://example.net/secure\private.aspx [12] [13]

ในวิชาคณิตศาสตร์ ใช้เครื่องหมายเหมือนแบ็กสแลชแสดงส่วนเติมเต็ม[14] และบางครั้งใช้เพื่อแสดงถึงปริภูมิคอเซตขวา (right coset space)[15]

ในภาษาโปรแกรม BASIC บางแบบ ใช้แบ็กสแลชเป็นสัญลักษณ์ของตัวดำเนินการการ หารแบบเลขจำนวนเต็ม (integer division)[16]

ใน MATLAB และ GNU Octave เครื่องหมายแบ็กสแลชใช้แสดงการหารเมทริกซ์ทางซ้ายในขณะที่เครื่องหมายทับใช้สำหรับการหารเมทริกซ์ทางขวา[17]

ใน PHP เวอร์ชัน 5.3 ขึ้นไปจะใช้แบ็กสแลชเพื่อระบุเนมสเปซ

ความสับสนในการใช้งานแก้ไข

ในรหัสอักขระภาษาญี่ปุ่น ISO 646 (รหัส 7 บิต ที่ปรับมาจาก ASCII) JIS X 0201 (รหัส 8 บิต) และ Shift JIS (รหัสหลายไบต์ที่เป็น 8 บิตสำหรับ ASCII) ตำแหน่ง 0x5C ที่ใช้เป็นแบ็กสแลชใน ASCII กลับใช้แทนเครื่องหมายเยน (¥) ส่วนในรหัสอักขระภาษาเกาหลี ใช้เป็นเครื่องหมายวอน (₩) แต่โปรแกรมคอมพิวเตอร์จะยังคงมองรหัสนี้ว่าเป็นแบ็กสแลช ทำให้เกิดความสับสนในการทำงาน โดยเฉพาะในชื่อไฟล์ Ms-DOS[18] เนื่องจากการใช้รหัสสำหรับแบ็กสแลชในการแทนเครื่องหมายเยน ในปัจจุบันฟอนต์ยูนิโคดบางฟอนต์เช่น MS Mincho ก็จะแสดงเครื่องหมายแบ็กสแลชเป็น ¥ ทำให้อักขระที่ตำแหน่ง 00A5 กับ 005C หน้าตาเหมือนกัน นอกจากนี้ ISO 646 เวอร์ชันอื่น ๆ ก็มีการแทนที่แบ็กสแลชด้วยอักขระอื่น ๆ เช่น Ö (เยอรมัน, สวีเดน) Ø (เดนมาร์ก, นอร์เวย์) ç (ฝรั่งเศส) และ Ñ (สเปน) ซึ่งนำไปสู่ปัญหาทำนองเดียวกัน

อ้างอิงแก้ไข

  1. "Mini-Biography of Bob Bemer". Thocp.net. สืบค้นเมื่อ 2013-06-16.
  2. "How ASCII Got Its Backslash" Archived 2013-01-11 at WebCite, Bob Bemer
  3. "How ASCII Got Its Backslash" Archived 2013-01-11 at WebCite, Bob Bemer
  4. Bob Bemer (2002-07-07). "The Great Curly Brace Trace Chase". Computer History Vignettes. Bob Bemer. Archived from the original on 2009-06-04. สืบค้นเมื่อ 2009-10-11.
  5. "GNU 'make' manual". Gnu.org. สืบค้นเมื่อ 2013-06-16.
  6. "Revised Report on the Algorithmic Language Algol 68". September 1973. สืบค้นเมื่อ April 30, 2007.
  7. O'Sullivan, Stewart, and Goerzen, Real World Haskell, ch. 4: anonymous (lambda) functions, p.99
  8. "Why is the DOS path character "\"?". Blogs.msdn.com. 2005-06-24. สืบค้นเมื่อ 2013-06-16.
  9. Necasek, Michal (24 May 2019). "Why Does Windows Really Use Backslash as Path Separator?". OS/2 Museum. Archived from the original (html) on 24 May 2019. สืบค้นเมื่อ 28 May 2019.
  10. "Path.GetFullPath Method". .NET Framework Class Library. Microsoft. Archived from the original on 21 December 2008. สืบค้นเมื่อ 2009-01-02.
  11. "When did Windows start accepting forward slash as a path separator?". Bytes.com. Archived from the original on 6 February 2009. สืบค้นเมื่อ 2009-01-02.
  12. Kaplan, Simone (2004). "Microsoft Probes Flaw in ASP.NET". DevSource, sponsored by Microsoft. Ziff Davis Enterprise Holdings Inc. Archived from the original on 2013-01-21. สืบค้นเมื่อ 2009-06-14.
  13. Burnett, Mark (2004). "Security Holes That Run Deep". SecurityFocus. สืบค้นเมื่อ 2009-06-14.
  14. "Quantities and units – Part 2: Mathematical signs and symbols to be used in the natural sciences and technology". ISO 80000-2:2009. International Organization for Standardization.
  15. "Definition:Coset Space". ProofWiki. สืบค้นเมื่อ 1 February 2017.
  16. "Arithmetic Operators in Visual Basic". Visual Basic Language Features: Operators and Expressions. MSDN. สืบค้นเมื่อ 7 October 2012.
  17. Eaton, John W.; David Bateman; Søren Hauberg (February 2011). "GNU Octave: A high-level interactive language for numerical computations" (PDF). Free Software Foundation. p. 145. สืบค้นเมื่อ 7 October 2012.
  18. "When is a backslash not a backslash?". Blogs.msdn.com. สืบค้นเมื่อ 2013-06-16.