ร่างที่ใช้งานได้สำหรับเชลล์แบบดั้งเดิม:
ttyid=$(readlink /proc/$$/fd/1)
\___/ \______/ \___/ | | |
| | | | | \- 0: stdin
| | | | | 1: stdout <- our interest
| | | | | 2: stderr
| | | | \- fd is, maybe, filedescriptor
| | | |
| | | \- $$ is the PID of the current process (shell,
| | | in our case)
| | |
| | \- you know, much runtime stuff is here
| |
| \- readlink extracts the symbolic link of /proc/$$/fd/1
| lrwx------ 1 stefan stefan 64 2011-03-18 09:11
| /proc/22159/fd/1 -> /dev/pts/4
|
\- /dev/tty3 for real shell, /dev/pts/3 for xterm
ตอนนี้เราสามารถแมวหน้าจอเป็นไฟล์ ต้องการ sudo
id=${ttyid//\/dev\/tty}
sudo cat /dev/vcs$id > screen.dump
Apropos screendump
: โปรแกรมที่ตั้งชื่อแล้วไม่ได้ผลสำหรับฉันอีกแล้ว อาจเป็นเพราะเมล็ดที่แก่กว่าเท่านั้น / dev / pts / N ก็ไม่ได้ผลสำหรับฉันเช่นกัน บางทีคุณอาจต้องเลือก MKDEV เป็นตัวเลือกใน / dev - ฉันจำได้อย่างมืดมนเกี่ยวกับบางส่วน/dev/cuaN
แต่ฉันอาจผิด
เราต้องการที่จะส่งออกท่อแทนที่จะใช้ screen.dump แต่อย่างใดมันไม่ทำงาน - บางครั้งมันก็รอ ENTER
การจับภาพไม่ใช่ไฟล์ข้อความปกติที่มี linefeeds แต่ด้วย - ตัวอย่างเช่น - 80x50 chars ในลำดับเดียว
ในการเลือก 2 บรรทัดสุดท้าย 1 สำหรับเอาต์พุตของคำสั่งและอีกหนึ่งบรรทัดสำหรับบรรทัดที่พร้อมท์ฉันจะเปลี่ยนมันเลือก 160 chars เปลี่ยนกลับอีกครั้งแล้วเลือก 80
rev vcs4.dat | sed 's/\(.\{160\}\).*/\1/g' | rev | sed 's/\(.\{80\}\).*/\1/g'
ในกรณีที่คุณเคยสงสัยว่าทำไมมีrev
โปรแกรม
วิจารณ์:
- คำสั่งแรกจะถูกป้อนดังนั้นการย้ายสาย ahed ดี - แค่การออกกำลังกายเป็นตัวเลขเพื่อเลือกบรรทัดที่ 3 - สุดท้ายหรือบางอย่าง ฉันทำงานเป็นหลักในหน้าต่างอื่น
- ไม่ใช่ทุกคนที่มีหน้าจอ 80x50 ก็ใช่เรารู้ มี $ COLUMNS และ $ ROWS เพื่อความสุขของคุณ
- ผลลัพธ์ไม่ได้อยู่ที่ด้านล่าง เปลือกสดและอ่อนอาจอยู่ในแถวบน ง่ายมาก ๆ ประเมินว่าเชลล์ทำงานอะไร ใช้พรอมต์ใด ทำการตรวจหาพร้อมต์บางอย่างและค้นหาบรรทัดสุดท้ายด้วย shell-prompt บรรทัดก่อนหน้า (หรือ 2 ก่อน) ควรมีไดเรกทอรี
ไดอะแกรมแรกนั้นสร้างขึ้นพร้อมกับอธิบายว่า