คำถามติดแท็ก escape-characters

Escape sequences เช่นการเข้ารหัสคำสั่งเทอร์มินัลและปุ่มฟังก์ชัน

4
Escape sequences ในเอาต์พุตของสคริปต์ที่เรียกจากแอ็พพลิเคชัน ncurses
ขณะนี้ฉันกำลังเรียกใช้ mcabber เป็นลูกค้า Jabber ของฉัน (ซึ่งใช้ ncurses) ในเซสชั่น tmux บน homeserver ของฉัน ในพื้นที่ฉันเรียกใช้ iTerm2 เป็นเทอร์มินัลอีมูเลเตอร์ซึ่งรองรับการกระตุ้นการแจ้งเตือนคำรามผ่านลำดับการหลีกเลี่ยงตัวละคร หมายเหตุ: ทั้งหมดechoในคำถามนี้ทำงานเหมือนprintf %bหรือecho -eในทุบตีและ echoGNU เช่นecho "\e]9;foobar\007"ทำให้ iTerm2 ส่งข้อความคำรามด้วยข้อความ "foobar" อย่างไรก็ตามเมื่ออยู่ในเซสชั่น tmux ลำดับการหลีกเลี่ยงจะถูกทำลาย ดังนั้นการใช้ลำดับ escape character ที่เป็นกรรมสิทธิ์\Ptmuxสามารถใช้ดังนี้: echo "\ePtmux;\e\e]9;foobar\007\e\\" สิ่งนี้ทริกเกอร์ข้อความคำรามจากภายในเซสชัน tmux อย่างไรก็ตามเมื่อฉันใช้สิ่งนี้ในสคริปต์เหตุการณ์ mcabber ของฉันที่ถูกไล่ออกเมื่อได้รับข้อความใหม่จะไม่มีการแจ้งเตือนใด ๆ ขึ้นมาราวกับว่าเสียงสะท้อนถูกส่งไปยังเทอร์มินัลผิด ฉันคิดว่าสิ่งนี้เกี่ยวข้องกับ mcabber ซึ่งเรียกสคริปต์ว่าเป็นแอปพลิเคชัน ncurses ดังนั้นผลลัพธ์จากสคริปต์ทุบตีปกติของฉันจะหายไปและ iTerm 2 ไม่เคยเห็นเลย ฉันพยายามโทร …

2
วิธีการกำหนดสีปัจจุบันของเอาท์พุทคอนโซล?
ฉันรู้ว่าถ้าขั้วสีใช้ได้หนึ่งสามารถสีการส่งออกของมันโดยใช้ตัวหนี แต่มีความเป็นไปได้ที่จะทราบว่าสีใดที่กำลังแสดงอยู่ในขณะนี้ หรือดีกว่าว่าข้อความจะเป็นสีอะไรถ้าฉันจะเอาท์พุทตอนนี้? ฉันขอให้ไม่ทำลายการตั้งค่าสีก่อนหน้านี้เมื่อใช้อักขระเลี่ยงเหล่านี้ อักขระ escape 'เบื้องหน้าสีเริ่มต้น' กำลังรับข้อมูลจากชุดรูปแบบสีแทนที่จะเป็นสีข้อความก่อนที่จะเปลี่ยน

1
เครื่องหมายวงเล็บเหลี่ยมตัวยึดสี่เหลี่ยมจตุรัส A ^ [[- มันหมายความว่าอะไร?
ขออภัยหากมีการถามไปแล้ว แต่ฉันไม่รู้ว่าจะหาตัวเองได้อย่างไร - เมื่อฉันค้นหา "^ [[A" ในเครื่องมือค้นหาใด ๆ มันจะไม่สนใจส่วน "^ [[" ทั้งหมด) อย่างไรก็ตามคำถามของฉัน: บางครั้งใน terminal (สำหรับ Mac) เมื่อฉันกดปุ่มลูกศรตัวอักษร "^ [[A", "^ [[B", "^ [[C" หรือ "^ [[D" ปรากฏขึ้น) . ฉันดูเหมือนจะจำการเผชิญหน้าเมื่อหลายปีก่อนเมื่อใช้ DOS (เป็นไปได้มากที่สุด) เช่นกันและฉันคิดว่ามันเกิดขึ้นบ่อยขึ้นเช่นกัน ทำไมสิ่งนี้ถึงเกิดขึ้นและพวกมันหมายถึงอะไร?

1
ทำไมฉันต้องหลบหนี“ จุด” สองครั้ง?
ฉันรู้ว่าเราสามารถหลบหนีอักขระพิเศษเช่น*(){}$มี\เพื่อให้เป็นตัวอักษรถือว่า ตัวอย่างเช่น\*หรือ\$ แต่ในกรณีที่.ฉันต้องทำสองครั้งอย่าง\\.อื่นก็ถือว่าเป็นตัวละครพิเศษ ตัวอย่าง: man gcc | grep \\. ทำไมถึงเป็นเช่นนั้น?

2
เชลล์อื่นที่ไม่ใช่ Bash และ Zsh สนับสนุนการอ้างอิง ANSI-C หรือไม่ เช่น $ 'string'
ฉันมีเชลล์สคริปต์ที่ใช้สิ่งต่อไปนี้เพื่อพิมพ์เครื่องหมายถูกสีเขียวในผลลัพธ์: col_green="\e[32;01m" col_reset="\e[39;49;00m" echo -e "Done ${col_green}✓${col_reset}" หลังจากที่ได้อ่านเกี่ยวกับการทุบตีของANSI-C Quotingผมรู้ว่าผมสามารถใช้มันเมื่อตั้งค่าตัวแปรสีของฉันและเอา-eธงจากฉันก้อง col_green=$'\e[32;01m' col_reset=$'\e[39;49;00m' echo "Done ${col_green}✓${col_reset}" ดูเหมือนว่าน่าสนใจเพราะมันหมายถึงข้อความที่พิมพ์อย่างถูกต้องไม่ว่ามันจะถูกส่งผ่านไปยังเสียงสะท้อนในตัวของ Bash หรือการใช้งานภายนอก/bin/echo(ฉันใช้บน macOS) แต่สิ่งนี้ทำให้สคริปต์พกพาน้อยลงหรือไม่ ฉันรู้ว่า Bash และ Zsh สนับสนุนรูปแบบการอ้างอิงนี้ แต่ฉันไม่แน่ใจเกี่ยวกับคนอื่น

1
สัญลักษณ์แปลก ๆ บนหน้าจอเมื่อใช้ grep?
มีความคิดอะไรที่ทำให้เกิดสิ่งนี้ สิ่งเดียวที่แสดงคือรหัส ISO และพื้นที่ว่างโดยไม่ใช้ grep ซอฟต์แวร์ที่ใช้ คำสั่ง: ./trans --id --input /path/to/txt | grep ISO | grep [a-z] root@box /test # alias grep alias grep='grep --color=auto' root@box /test # type grep grep is aliased to `grep --color=auto' เอาท์พุทปกติ:

2
ปัญหาในสคริปต์ด้วยช่องว่างในชื่อไฟล์
ฉันมีสคริปต์ที่ scp เป็นไฟล์จากโฮสต์ระยะไกลกลับสู่ท้องถิ่น บางครั้งชื่อไฟล์มีช่องว่าง scp ไม่ชอบช่องว่างในชื่อไฟล์ ด้วยเหตุผลบางประการความพยายามของฉันในการจัดการช่องว่างไม่ได้ส่งผลให้เส้นทาง scp ที่ถูกต้อง รหัส: PATH=/var/root/Documents/MyFile OG-v1.2.3.pkg scp $PATH Me@10.1.10.33:/Users/Me/Desktop ผลลัพธ์ใน Cannot find directory: var/root/Documents/MyFile Cannot find directory: OG-v1.2.3.pkg การใส่ PATH ในเครื่องหมายคำพูด"$PATH"ทำให้เกิดข้อผิดพลาดเดียวกัน การสลับช่องว่างสำหรับช่องว่างที่หลบหนียังไม่ทำงานแม้ว่าเท่าที่ฉันสามารถบอกได้ก็ควรจะ: ESC_PATH=${PATH/' '/'\ '} แม้ว่าการพิมพ์พา ธ ที่หลบหนีแสดงว่าการแก้ไขทำงานได้: echo $ESC_PATH > /var/root/Documents/MyFile\ OG-v1.2.3.pkg

3
มีประโยชน์ใด ๆ ในการหลีกเลี่ยงซีเควนเชียลของ tput หรือไม่?
ในผู้คน ' .*rcแฟ้ม' ฉันเห็นออนไลน์หรือในรหัสต่าง ๆ ผมมักจะเห็นผู้คนจำนวนมากที่ตนเองใช้ลำดับหนี ANSI tputแทนการใช้ ฉันมีความเข้าใจที่tputเป็นสากล / ปลอดภัยกว่าดังนั้นฉันจึงสงสัยว่า: มีเหตุผลอย่างใดอย่างหนึ่งที่ควรใช้ลำดับหลีกเลี่ยงแทนtput? (การพกพาความทนทานต่อข้อผิดพลาดขั้วผิดปกติ ... ?)

2
ลำดับการหลีกหนี gnome-terminal ANSI สำหรับ“ CTRL + arrow / s” คืออะไร?
ฉันพยายามที่จะกำหนดค่าทุบตีฉัน~/.inputrcจะตั้งค่าเหล่านี้ (หมายเหตุ: ←, →หมายถึงซ้ายและขวาปุ่มลูกศร) Ctrl+ ←- ควรกระโดดกลับคำ Ctrl+ →- ควรกระโดดไปข้างหน้าคำ ขณะนี้ฉันมีสิ่งนี้ในของฉัน~/.inputrcและมันใช้งานไม่ได้ Ctrl + arrowผลิตอะไร "\eC-5C":forward-word "\eC-5D":backward-word ฉันแน่ใจว่าลำดับการหลบหนีของฉันผิด ลำดับการหลีกเลี่ยงที่ถูกต้องสำหรับCtrl + arrowชุดค่าผสมคืออะไร? terminal: tmux ภายใน gnome-terminal


3
วิธีการพิมพ์อักขระควบคุมด้วย escape sequences?
ฉันกำหนดสีแดงโดยใช้ tput red=$(tput setaf 1) เพื่อ colorize คำเตือนในโปรแกรมของฉัน ใช้งานได้ดี: printf '%sfail\n' "$red" # prints 'fail' in red แต่มีอยู่ครั้งหนึ่งที่ฉันต้องการพิมพ์ลำดับหลบหนีตามที่เป็นอยู่สิ่งที่ชอบ: \ E [31mfail ฉันจะทำสิ่งนี้ได้อย่างไร ฉันรู้ว่า printf มี%qธง แต่สิ่งอื่น ๆ ที่ฉันไม่ต้องการหลบหนี

4
มีบริการ pastebin ที่รองรับการหลีกเลี่ยงเทอร์มินัลหรือไม่
มีบริการ Pastebin ที่รองรับสีหรือไม่? ฉันเข้าใจว่าบางคนมีไวยากรณ์ซุกซน แต่ฉันต้องการทำสีโดยพลการโดยเฉพาะอย่างยิ่งการใช้ลำดับการหลบหนีขั้ว ตัวอย่างเช่นฉันต้องการทำ: grep --color=force foo /etc/motd | pastebinit ไม่มีใครรู้เช่นเว็บไซต์ที่ยอดเยี่ยม?
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.