ในprintf '%s\t%s\n' foo bar, ไม่เอาท์พุทprintffoo<TAB>bar<LF>
f, o, b, aและrมีตัวอักษรกราฟิกเดียวกว้าง
เมื่อรับตัวอักษรเหล่านั้นเทอร์มินัลจะแสดงสัญลักษณ์และเลื่อนเคอร์เซอร์ไปหนึ่งคอลัมน์ทางด้านขวายกเว้นว่าได้มาถึงขอบด้านขวาของหน้าจอแล้ว (กระดาษในเครื่องพิมพ์ดีดดั้งเดิม) ซึ่งในกรณีนี้อาจป้อนบรรทัด และกลับไปที่ขอบด้านซ้ายของหน้าจอ (ตัด) หรือเพียงแค่ทิ้งอักขระขึ้นอยู่กับเทอร์มินัลและวิธีการกำหนดค่า
<Tab>และ<LF>เป็นอักขระควบคุมสองตัว <LF>(aka newline) เป็นตัวคั่นบรรทัดในข้อความ Unix แต่สำหรับเทอร์มินัลเพียงป้อนบรรทัด (เลื่อนเคอร์เซอร์หนึ่งตำแหน่งลง) ดังนั้นไดรเวอร์เทอร์มินัลในเคอร์เนลจะแปลเป็นจริง<CR>(กลับไปที่ขอบด้านซ้ายของหน้าจอ) <LF>(เลื่อนเคอร์เซอร์ลง) ( stty onlcrโดยทั่วไปจะเป็นค่าเริ่มต้น)
<Tab> บอกให้เทอร์มินัลเลื่อนเคอร์เซอร์ไปที่แท็บหยุดถัดไป (ซึ่งในเทอร์มินัลส่วนใหญ่จะอยู่ห่างกัน 8 ตำแหน่งโดยค่าเริ่มต้น แต่ยังสามารถกำหนดค่าให้ตั้งค่าได้ทุกที่) โดยไม่ต้องเติมช่องว่างด้วยช่องว่าง
ดังนั้นหากอักขระเหล่านั้นถูกส่งไปยังเทอร์มินัลพร้อมแท็บหยุดทุก 8 คอลัมน์ในขณะที่เคอร์เซอร์อยู่ที่จุดเริ่มต้นของบรรทัดว่างนั่นจะส่งผลให้:
foo bar
พิมพ์บนหน้าจอที่บรรทัดนั้น หากพวกเขาถูกส่งในขณะที่เคอร์เซอร์อยู่ในตำแหน่งที่สามในบรรทัดที่มีxxxxyyyyzzzzที่จะส่งผลใน:
xxfooyyybarz
ในเทอร์มินัลที่ไม่สนับสนุนการจัดระเบียบคุณสามารถกำหนดค่าไดรเวอร์เทอร์มินัลให้แปลแท็บเหล่านั้นเป็นลำดับของช่องว่างได้ ( stty tab3)
อักขระ SPC ในเครื่องพิมพ์ดีดดั้งเดิมจะย้ายเคอร์เซอร์ไปทางขวาขณะที่ backspace ( \b) จะย้ายไปทางซ้าย ตอนนี้ในอาคารทันสมัย SPC ย้ายไปทางขวาและลบ (เขียนอักขระเว้นวรรคตามที่คุณคาดหวัง) ดังนั้นการจี้ของ\bต้องเป็นสิ่งที่ใหม่กว่า ASCII บนขั้วที่ทันสมัยที่สุดก็จริงลำดับตัวอักษร: <Esc>, ,[C
มีลำดับการหลีกเลี่ยงเพิ่มเติมเพื่อเลื่อนnอักขระไปทางซ้ายขวาขึ้นลงหรือตำแหน่งใด ๆ บนหน้าจอ มีลำดับการหลีกเลี่ยงอื่น ๆ ที่จะลบ (เติมด้วยช่องว่าง) ส่วนของบรรทัดหรือภูมิภาคของหน้าจอ ฯลฯ
ลำดับผู้ที่มักจะใช้โดยการใช้งานภาพเหมือนvi, lynx, mutt, dialogที่เขียนข้อความที่ตำแหน่งพลบนหน้าจอ
ในตอนนี้เทอร์มินัลอีมูเลเตอร์ X11 และอุปกรณ์อื่นที่ไม่ใช่ X11 อย่าง GNU screenช่วยให้คุณสามารถเลือกพื้นที่ของหน้าจอเพื่อคัดลอก เมื่อคุณเลือกส่วนหนึ่งของสิ่งที่คุณเห็นในตัวviแก้ไขคุณไม่ต้องการคัดลอกลำดับ escape ทั้งหมดที่ใช้ในการสร้างเอาต์พุตนั้น คุณต้องการเลือกข้อความที่คุณเห็นที่นั่น
เช่นถ้าคุณเรียกใช้:
printf 'abC\rAC\bB\t\e[C\b\bD\n'
ซึ่งจำลองเซสชั่นการแก้ไขที่คุณป้อนabCกลับไปยังจุดเริ่มต้นให้แทนที่abด้วยAC, Cมีย้ายไปที่ป้ายแท็บถัดไปแล้วหนึ่งคอลัมน์มากขึ้นไปทางขวาแล้วสองคอลัมน์ไปทางซ้ายแล้วป้อนBD
คุณเห็น:
ABC D
นั่นคือABCช่องว่าง 4 Dคอลัมน์
หากคุณเลือกที่ด้วยเมาส์ในxtermหรือputtyพวกเขาจะจัดเก็บในส่วนที่เลือกABC4 ตัวอักษรพื้นที่และไม่DabC<CR>AC<BS>B<Tab><Esc>[C<BS><BS>D
สิ่งที่เกิดขึ้นในการเลือกคือสิ่งที่ถูกส่งโดยprintfแต่ผ่านการประมวลผลทั้งไดรเวอร์เทอร์มินัลและเทอร์มินัลอีมูเลเตอร์
สำหรับชนิดอื่น ๆ ของการเปลี่ยนแปลงให้ดู<U+0065><U+0301>( eตามสำเนียงเฉียบพลันรวม) เปลี่ยนไป<U+00E9>( éแบบฟอร์มก่อนแต่ง) xtermโดย
หรือecho abcว่าปลายถูกแปลไปโดยคนขับรถมินัลก่อนที่จะส่งไปยังสถานีหลังจากที่ABCstty olcuc
ตอนนี้<Tab>Like <LF>เป็นหนึ่งในอักขระควบคุมบางตัวที่บางครั้งพบได้ในไฟล์ข้อความ (เช่น<CR>ในไฟล์ข้อความ MSDOS และบางครั้ง<FF>เป็นตัวแบ่งหน้า)
ดังนั้นเทอร์มินัลอีมูเลเตอร์บางคนเลือกที่จะคัดลอกเมื่อเป็นไปได้ในบัฟเฟอร์การคัดลอกเพื่อเก็บไว้ (โดยทั่วไปไม่ใช่กรณี<CR>หรือ<LF>แม้ว่า)
ยกตัวอย่างเช่นในอาคารเช่น VTE-based gnome-terminal, คุณอาจจะเห็นว่าเมื่อคุณเลือกการส่งออกของprintf 'a\tb\n'ในบรรทัดที่ว่างเปล่าgnome-terminalร้านค้าจริงa\tbในการเลือกแทน X11 a, 7 bช่องว่างและ
แต่สำหรับการส่งออกของprintf 'a\t\bb\n'ร้านค้ามันa, 6 ช่องว่างและbและสำหรับprintf 'a\r\tb\n', a7 bช่องว่างและ
มีอีกหลายกรณีที่เทอร์มินัลจะพยายามคัดลอกอินพุตจริงเช่นเมื่อคุณเลือกสองบรรทัดหลังจากทำงานในprintf 'a \nb\n'ที่ที่ส่วนท้ายที่มองไม่เห็นจะถูกเก็บรักษาไว้ หรือเมื่อเลือกสองบรรทัดจะไม่มีอักขระ LF เมื่อทั้งสองบรรทัดเกิดจากการตัดที่ขอบขวา
ตอนนี้ถ้าคุณต้องการเก็บเอาท์พุทของprintfลงในการX11เลือกคลิปบอร์ดที่ดีที่สุดคือการทำมันโดยตรงเช่น:
printf 'foo\tbar\n' | xclip -sel c
โปรดทราบว่าเมื่อคุณวางลงในxtermเทอร์มินัลหรืออื่น ๆ ส่วนใหญ่xtermแล้วแทนที่\nด้วย\rเพราะเป็นตัวละครที่xtermส่งเมื่อคุณกดEnter(และไดรเวอร์เทอร์มินัลอาจแปลมันกลับไป\n)