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

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

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

2
ทำไม Ctrl-D (EOF) ออกจากเชลล์?
คุณกำลัง "จบไฟล์" โดยการใส่ลำดับการหลบหนีนี้หรือไม่นั่นคือเซสชันเชลล์เชิงโต้ตอบถูกมองว่าเป็นสตรีมไฟล์จริงโดยเชลล์เช่นเดียวกับสตรีมไฟล์อื่น ๆ ถ้าเป็นเช่นนั้นไฟล์ไหน? หรือCtrl+ Dสัญญาณเป็นเพียงตัวยึดตำแหน่งซึ่งหมายความว่า "ผู้ใช้ป้อนข้อมูลเสร็จแล้วและคุณอาจยุติ"

12
การลบ chars ควบคุม (รวมถึงรหัสคอนโซล / สี) ออกจากสคริปต์
ฉันสามารถใช้คำสั่ง "สคริปต์" เพื่อบันทึกเซสชันแบบโต้ตอบที่บรรทัดคำสั่ง อย่างไรก็ตามสิ่งนี้รวมถึงตัวควบคุมและรหัสสีทั้งหมด ฉันสามารถลบอักขระควบคุม (เช่น backspace) ด้วย "col -b" แต่ฉันไม่พบวิธีที่ง่ายในการลบรหัสสี โปรดทราบว่าฉันต้องการใช้บรรทัดคำสั่งในวิธีปกติดังนั้นไม่ต้องการปิดการใช้งานสีที่นั่น - ฉันแค่ต้องการลบพวกเขาออกจากสคริปต์ออก นอกจากนี้ฉันรู้ว่าสามารถเล่นและลองค้นหา regexp เพื่อแก้ไขสิ่งต่าง ๆ แต่ฉันหวังว่าจะมีวิธีที่ง่ายกว่า (และเชื่อถือได้มากกว่า - จะเกิดอะไรขึ้นถ้ามีรหัสที่ฉันไม่รู้เมื่อฉันพัฒนา regexp) ในการแสดงปัญหา: spl62 tmp: script สคริปต์เริ่มทำงานแล้วไฟล์คือ typescript spl62 lepl: ls add-licence.sed build-example.sh commit-test push-docs.sh add-licence.sh build.sh delete-licence.sed setup.py asn build-test.sh delete-licence.sh src build-doc.sh clean doc-src test.ini spl62 lepl: …

5
วิธีการหลีกเลี่ยงคำพูดในเปลือก?
ฉันมีปัญหากับการหลบหนีตัวละครในทุบตี ฉันต้องการหลีกเลี่ยงคำพูดเดี่ยวและคู่ในขณะที่รันคำสั่งภายใต้ผู้ใช้อื่น สำหรับวัตถุประสงค์ของคำถามนี้สมมติว่าฉันต้องการที่จะสะท้อนต่อไปนี้บนหน้าจอ: 'single quote phrase' "double quote phrase" ฉันจะหลีกเลี่ยงตัวอักษรพิเศษทั้งหมดได้อย่างไรหากฉันต้องเปลี่ยนไปใช้ผู้ใช้อื่น: sudo su USER -c "echo \"'single quote phrase' \"double quote phrase\"\"" แน่นอนว่านี่ไม่ได้ผลลัพธ์ที่ถูกต้อง

11
ฉันจะล้างประวัติเทอร์มินอล Gnome ได้อย่างไร
เมื่อเราใช้clearคำสั่งหรือCtrl+ Lในเทอร์มินัลมันจะทำการล้างเทอร์มินัล แต่เรายังสามารถเลื่อนกลับเพื่อดูคำสั่งที่ใช้ล่าสุด มีวิธีล้างเทอร์มินัลอย่างสมบูรณ์หรือไม่?

4
ฉันจะค้นหารายการรหัสเทอร์มินัลคีย์เพื่อทำการแมปทางลัดใน bash ได้ที่ไหน
ตัวอย่างเช่น: "\e[1;5C" "\e[Z" "\e-1\C-i" ฉันรู้เพียงเศษ ๆ ชิ้น ๆ เช่น\eย่อมาจาก Escape และC-for Ctrlแต่ตัวเลขเหล่านี้ ( 1) และตัวอักษร ( Z) คืออะไร อะไรคือ;, [และ-ป้ายบอก? มีเพียงการทดลองและข้อผิดพลาดหรือมีรายการรหัสทุบตีที่สมบูรณ์และคำอธิบายของไวยากรณ์หรือไม่

2
รหัสยกเว้น ANSI ของฉันจะไปที่ใดเมื่อฉันไปที่กระบวนการอื่น ฉันสามารถเก็บไว้ได้ไหม
บางครั้งฉันต้องการที่จะส่งสัญญาณออกมาเป็นสีเช่นกระบวนการ grep ... แต่เมื่อฉันส่งไปยังกระบวนการอื่นเช่น sed, รหัสสีจะหายไป ... มีวิธีในการรักษารหัสเหล่านี้เหมือนเดิมหรือไม่? นี่คือตัวอย่างที่สูญเสียผลลัพธ์สี: echo barney | grep barney | sed -n 1,$\ p

7
มีเหตุผลใดบ้างที่ฉันได้รับ ^ [[เมื่อฉันกดลูกศรขึ้นที่หน้าจอเข้าสู่ระบบของคอนโซล?
เมื่อใดก็ตามที่ฉันเข้าสู่ระบบคอนโซลฉันกดupลูกศรโดยเจตนาเพื่อดูคำสั่งที่พิมพ์ไว้ก่อนหน้านี้ ^[[Aแต่ฉันเห็นนี้ แต่เมื่อฉันกดCtrl Alt Print Screen Scroll Lock Pause Break Page Up Page Down Winปุ่มไม่ได้สะท้อนเสียงตัวละครใด ๆ อะไรคือเหตุผลเบื้องหลัง การ^[[Aเรียงลำดับของตัวละครมีความหมายอะไรหรือไม่?

5
วิธีทำให้เทอร์มินัลแสดง user @ machine เป็นตัวอักษรหนา
ฉันเคยเห็นในบางช็อตหน้าจอ (จำไม่ได้ว่าอยู่ที่ไหนบนเว็บ) ว่าเทอร์มินัลสามารถแสดง[username@machine /]$ตัวอักษรตัวหนา ฉันรอคอยที่จะได้รับสิ่งนี้เช่นกันเพราะฉันมักจะพบว่าตัวเองเลื่อนผ่านเอาต์พุตยาว ๆ เพื่อค้นหาบรรทัดแรกหลังจากคำสั่งของฉันลำบาก ฉันจะทำให้ชื่อผู้ใช้เป็นตัวหนาและมีสีได้อย่างไร?

2
จะหลีกเลี่ยงการโจมตีแบบ escape sequence ในเทอร์มินอลได้อย่างไร?
การอ่านรายละเอียดของ CVE-2009-4487 (ซึ่งเกี่ยวกับอันตรายของลำดับการหลบหนีในล็อกไฟล์)ฉันรู้สึกประหลาดใจเล็กน้อย ในการอ้างอิงCVE-2009-4487 : nginx 0.7.64 เขียนข้อมูลลงในไฟล์บันทึกโดยไม่ต้องฆ่าตัวละครที่ไม่สามารถพิมพ์ได้ซึ่งอาจทำให้ผู้โจมตีจากระยะไกลสามารถแก้ไขชื่อของหน้าต่างหรืออาจเรียกใช้คำสั่งตามอำเภอใจหรือเขียนทับไฟล์ผ่านคำขอ HTTP ที่มีลำดับการหลบหนี เห็นได้ชัดว่านี่ไม่ได้เกี่ยวกับรูความปลอดภัยใน nginx แต่ในเทอร์มินัลอีมูเลเตอร์ แน่นอนว่าบางทีcatการบันทึกไฟล์ไปยังเครื่องเทอร์มินัลนั้นเกิดขึ้นโดยบังเอิญเท่านั้น แต่grepการใช้ไฟล์บันทึกนั้นเป็นเรื่องปกติ lessบางที sanitizes escape sequences แต่ใครจะรู้ว่าคำสั่ง shell ใดไม่เปลี่ยนลำดับ escape ... ฉันมักจะเห็นด้วยกับการตอบสนองวานิช : ภูมิปัญญาของเทอร์มินัล - การตอบสนอง - การหลบหนีโดยทั่วไปถูกตั้งคำถามอย่างสม่ำเสมอ แต่ก็ยังไม่มีโปรแกรมการจำลองเทอร์มินัลใหญ่ ๆ ที่เห็นว่าเหมาะสมที่จะละทิ้งลำดับเหล่านี้ซึ่งอาจเป็นไปได้ [.. ] แทนที่จะโทษใด ๆ และทุกโปรแกรมที่เขียน logfiles มันจะมีประสิทธิผลมากขึ้นจากมุมมองด้านความปลอดภัยเพื่อให้โปรแกรมการจำลอง terminal หยุดหยุดทำสิ่งที่โง่และแก้ไขปัญหาความปลอดภัยนี้และอื่น ๆ อีกครั้ง และสำหรับทุกคน ดังนั้นคำถามของฉัน: ฉันจะรักษาความปลอดภัย xterm ของฉันได้อย่างไรซึ่งจะไม่สามารถดำเนินการคำสั่งหรือเขียนทับไฟล์ผ่านทางลำดับการหลีกเลี่ยงได้อีกต่อไป? …

4
ทำรูปแบบการค้นหาที่เน้นสีน้อยลงแทนที่จะทำให้เป็นตัวเอียง
เพื่อความเข้าใจของฉันคนใช้lessเป็นเพจเจอร์และเมื่อค้นหาคำหลักที่ใช้lessมัน "เน้น" คำหลักที่มีตัวเอียง ฉันพบว่าไม่สะดวกจริง ๆ ดังนั้นฉันจึงต้องการเปลี่ยนสิ่งนี้เป็นสิ่งที่ต้องการเป็นกลุ่มset hlsearchที่รูปแบบที่พบมีพื้นหลังที่แตกต่างกัน ฉันพยายามที่จะวิ่งman -P vim systemdแต่ที่เลิกกับสถานะข้อผิดพลาดที่ 1 lessเพื่อให้ดูเหมือนว่าฉันติดอยู่กับ ไม่มีอะไรที่ฉันสามารถค้นพบได้ในความman lessช่วยเหลือนั้น (ฉันพบว่าตัวเลือก-Gนั้นจะปิดการเน้นด้วยกันทั้งหมดซึ่งยิ่งแย่กว่าตัวเอียง) ที่ถูกกล่าวว่าไม่มีใครรู้วิธีการบรรลุการเน้นการค้นหา (เปลี่ยนสีพื้นหลัง) ในหน้าคน? FYI ฉันใช้งาน Ubuntu 14.10 ฉันเจอคำถามนี้ดูเหมือนว่าจะถามเกี่ยวกับสิ่งเดียวกัน แต่ฉันไม่แน่ใจว่าฉันทำตามวิธีการทำงานนี้ ( LESS_TERMCAP_so) lessหน้าคนไม่ได้พูดถึงเรื่องนี้ (ฉันได้ผลลัพธ์แปลก ๆ ด้วยวิธีนี้)

3
วิธีการป้องกันเอาท์พุทคอนโซลแบบสุ่มไม่ให้แตกขั้ว?
มีคำถามมากมายเกี่ยวกับ SE cat /dev/urandomที่แสดงวิธีการกู้คืนจากสถานีทำลายโดยมี สำหรับผู้ที่ไม่คุ้นเคยกับปัญหานี้ - นี่คือสิ่งที่เกี่ยวกับ: คุณดำเนินการcat /dev/urandomหรือเทียบเท่า (ตัวอย่างcat binary_file.dat) ขยะถูกพิมพ์ ที่จะโอเค ... ยกเว้น terminal ของคุณยังคงพิมพ์ขยะแม้กระทั่งหลังจากที่คำสั่งเสร็จเรียบร้อยแล้ว! นี่คือภาพหน้าจอของข้อความที่พิมพ์ผิดที่อยู่ในความเป็นจริงเอาต์พุต g ++: ฉันเดาว่าคนที่ถูกต้องเกี่ยวกับข้อผิดพลาด C ++ บางครั้งก็เป็นความลับเกินไป! วิธีการแก้ปัญหาตามปกติคือการเรียกใช้stty sane && resetแม้ว่ามันจะน่ารำคาญที่จะเรียกใช้ทุกครั้งที่เกิดเหตุการณ์นี้ ด้วยเหตุนี้สิ่งที่ฉันต้องการมุ่งเน้นในคำถามนี้คือเหตุผลดั้งเดิมว่าทำไมสิ่งนี้จึงเกิดขึ้นและวิธีป้องกันมิให้เครื่องแตกหลังจากคำสั่งดังกล่าวออก ฉันไม่ได้มองหาวิธีแก้ปัญหาเช่นการส่งคำสั่งที่ละเมิดไปtrหรือxxdเพราะคุณต้องรู้ว่าโปรแกรม / ไฟล์เอาต์พุตไบนารีก่อนที่คุณจะเรียกใช้ / พิมพ์จริงและจำเป็นต้องจดจำทุกครั้งที่คุณส่งออกข้อมูลดังกล่าว . ฉันสังเกตเห็นพฤติกรรมเดียวกันใน URxvt, PuTTY และ Linux frame buffer ดังนั้นฉันไม่คิดว่านี่เป็นปัญหาเฉพาะเทอร์มินัล ผู้ต้องสงสัยหลักของฉันคือการที่เอาท์พุทแบบสุ่มมีบางส่วนหลบหนีรหัส ANSI ที่พลิกเข้ารหัสอักขระ (ในความเป็นจริงถ้าคุณเรียกใช้cat /dev/urandomอีกครั้งโอกาสที่มันจะUnbreakขั้วซึ่งดูเหมือนจะยืนยันทฤษฎีนี้) หากนี่ถูกต้องรหัสหลบหนีนี้คืออะไร มีวิธีมาตรฐานในการปิดการใช้งานหรือไม่

3
หลีกเลี่ยงลำดับด้วย "echo -e" ในกระสุนที่แตกต่างกัน
ฉันเพิ่งสังเกตเห็นว่าดูเหมือนว่าแฟล็ก-eไม่มีอยู่สำหรับechoคำสั่งในเชลล์ของฉันบน Linux นี่เป็นเพียงการตั้งค่าที่สับสนหรือเป็น "ปกติ" หรือไม่ ตัวอย่างรหัสบางส่วน: #!/bin/sh echo -e "\e[3;12r\e[3H" พิมพ์: -e \e[3;12r\e[3H ก่อนหน้านี้ทำงานได้! ฉันเดาว่าsttyคำสั่งบางอย่างผิดพลาดไปอย่างมากและตอนนี้มันไม่ทำงานอีกต่อไป ใครบางคนบอกว่าฉันเป็นจริงเพียงshbash

8
ฉันจะนับจำนวนครั้งที่ลำดับไบต์เกิดขึ้นในไฟล์ได้อย่างไร
ฉันต้องการนับกี่ครั้งที่ลำดับของไบต์เกิดขึ้นภายในไฟล์ที่ฉันมี ตัวอย่างเช่นฉันต้องการค้นหาจำนวนครั้งที่\0xdeadbeefเกิดขึ้นภายในไฟล์ที่ปฏิบัติการได้ ตอนนี้ฉันกำลังใช้ grep: #/usr/bin/fish grep -c \Xef\Xbe\Xad\Xde my_executable_file (ไบต์ถูกเขียนในลำดับย้อนกลับเนื่องจาก CPU ของฉันเป็น endian น้อย) อย่างไรก็ตามฉันมีปัญหาสองประการเกี่ยวกับวิธีการของฉัน: \Xnnลำดับการหลบหนีเหล่านั้นใช้ได้เฉพาะในเปลือกปลาเท่านั้น grep กำลังนับจำนวนบรรทัดที่มีหมายเลขเวทย์มนตร์ของฉัน หากรูปแบบเกิดขึ้นสองครั้งในบรรทัดเดียวกันมันจะนับเพียงครั้งเดียว มีวิธีแก้ไขปัญหาเหล่านี้หรือไม่? ฉันจะทำให้หนึ่งซับนี้ทำงานในเปลือก Bash และนับจำนวนครั้งอย่างถูกต้องรูปแบบที่เกิดขึ้นภายในไฟล์ได้อย่างไร

2
ความแตกต่างระหว่าง \ e และ ^ [
Gilles เขียนว่า : ตัวละคร 27 = 033 = 0x1b = ^[=\e Demizey เขียนว่า : ^ [เป็นเพียงการนำเสนอของ ESCAPE และ \ e ถูกตีความว่าเป็นอักขระ ESCAPE จริง จากนั้นฉันก็พบบรรทัดนี้จากบทความ TechRepublic ตรวจสอบให้แน่ใจว่าคุณเขียนลำดับของคีย์เป็น \ e [24 ~ แทนที่จะเป็น ^ [[24 ~] นี่เป็นเพราะ ^ [ลำดับนั้นเทียบเท่ากับปุ่ม [Esc] ซึ่งแสดงโดย \ e ในเชลล์ ตัวอย่างเช่นถ้าลำดับของคีย์เป็น ^ [[OP ผลการผูกโค้ดที่จะใช้จะเป็น \ e [OP แต่ฉันใช้การแม็พที่ใช้ …

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.