เปลือก bash เก็บเซสชันเทอร์มินัลจริงไว้ที่ไหน ฉันต้องการอ่านเอาต์พุตของคำสั่งที่ฉันใช้ก่อนหน้านี้ ทั้งหมดที่ฉันสามารถหา googling คือวิธีการเก็บผลลัพธ์ของคำสั่ง
เนื่องจากเอาต์พุตจะแสดงบนหน้าจอจึงต้องเก็บไว้ที่ใดที่หนึ่ง ดังนั้นคำถามของฉันคือ: ที่ไหน
เปลือก bash เก็บเซสชันเทอร์มินัลจริงไว้ที่ไหน ฉันต้องการอ่านเอาต์พุตของคำสั่งที่ฉันใช้ก่อนหน้านี้ ทั้งหมดที่ฉันสามารถหา googling คือวิธีการเก็บผลลัพธ์ของคำสั่ง
เนื่องจากเอาต์พุตจะแสดงบนหน้าจอจึงต้องเก็บไว้ที่ใดที่หนึ่ง ดังนั้นคำถามของฉันคือ: ที่ไหน
คำตอบ:
Bash เก็บประวัติคำสั่งที่คุณเรียกใช้เท่านั้น (ซึ่งคุณสามารถดึงข้อมูลได้ด้วยการพิมพ์history
) หากคุณไม่ได้ตั้งค่าการเลื่อนกลับไปเป็นจำนวนที่สูงมากไม่มีวิธีการดูผลลัพธ์ที่เก่ากว่าค่าที่ตั้งไว้ของการเลื่อนกลับ นอกจากนี้ยังมีการตั้งค่านี้เป็นจำนวนที่สูงมากจะทำให้เลื่อนซบเซาของคุณตั้งแต่สายจะถูกเก็บไว้ในหน่วยความจำ
ในการจัดเก็บคำสั่งในอนาคตและผลลัพธ์ของพวกเขามีตัวเลือกน้อย:
การใช้ screen
เริ่มต้นหน้าจอscreen
เซสชั่นโดยการป้อน เมื่อคุณอยู่ในหน้าจอให้กดCtrl- aแล้วแล้วใส่: log
I / O ทั้งหมดจะถูกบันทึกในscreenlog
ไฟล์ในไดเรกทอรีที่คุณเริ่มscreen
คำสั่ง
การใช้ script
script
คุณสามารถเริ่มต้นด้วยการพิมพ์ สคริปต์เซสชั่นจะเริ่มต้นที่จะจับภาพทุก I / O typescript
ไฟล์ชื่อ คุณสามารถออกจากscript
เซสชันโดยCtrl- d และดูบันทึกในtypescript
ไฟล์
การใช้ tee
ทีเป็นเครื่องมือที่มีประโยชน์ คุณสามารถทำสิ่งนี้:
$ bash | tee log.txt
สิ่งนี้จะเปิด bash shell ใหม่ภายในอันที่คุณทำงานอยู่ เมื่อคุณexit
ออกจากสิ่งนี้คุณจะเห็นผลลัพธ์ในไฟล์ที่เรียกว่าlog.txt
ทางอื่น
ตามที่ดัสตินเคิร์กแลนด์แนะนำในโพสต์นี้คุณสามารถใช้byobuได้เช่นกัน แม้ว่าฉันไม่เคยใช้เครื่องมือ screencasting terminal เช่นShelrยังเสียงเหมือนตัวเลือก
มีคำถามมากมายที่เกี่ยวข้องกับคำถามนี้ แต่คำถามทั้งหมดเริ่มต้นด้วยสมมติฐาน (ขวา) ว่าเอาต์พุตไม่ได้ถูกบันทึก
ดังนั้นคำถามของฉันคือ: ที่ไหน
ไม่มีที่ไหนเลย: เอาต์พุตของ Bash (และเชลล์อื่น ๆ ที่ฉันรู้จัก) ไม่ถูกบันทึก
เนื่องจากเอาต์พุตจะแสดงบนหน้าจอจึงต้องเก็บไว้ที่ใดที่หนึ่ง
มันเป็นไปได้ แต่ส่วนใหญ่ไม่ได้อยู่ในข้อความธรรมดาและไม่ได้อยู่บนดิสก์ (แม้ว่านี่จะขึ้นอยู่กับเทอร์มินัลอีมูเลเตอร์): เป็นไปได้มากที่สุดและอย่างน้อยในกรณีส่วนใหญ่ในส่วนหน่วยความจำที่จัดสรรโดยเทอร์มินัลอีมูเลเตอร์
อย่างไรก็ตามแน่นอนว่ามันไม่ได้ถูกบันทึกไว้ในไฟล์อย่างน้อยก็ไม่ใช่เชลล์และฉันไม่รู้เทอร์มินัลอีมูเลเตอร์ที่บันทึกเอาท์พุทเป็นไฟล์ตามค่าเริ่มต้น
อันที่จริงนี่ไม่ได้หมายความว่ามันเป็นไปไม่ได้ที่จะบันทึกผลลัพธ์ของเทอร์มินัล: ก่อนอื่นฉันจะพูดถึงบางสิ่งที่ฉันคิดว่าไม่ค่อยมีใครรู้เพราะฉันไม่เคยเห็นใครพูดถึงเรื่องนี้อย่างน้อยที่นี่บน Ask Ubuntu: Konsole scrollback ไปยังไฟล์ (อาจมีเทอร์มินัลอีมูเลเตอร์อื่น ๆ ที่มีฟังก์ชั่นดังกล่าว Konsole เป็นเพียงหนึ่งเดียวที่ฉันรู้จัก) ถึงแม้ว่านี่จะถูก จำกัด โดยขนาดการเลื่อนของ Konsole
ซึ่งมักจะไม่ค่อยมีประโยชน์จริง ๆ และส่วนใหญ่คุณจะต้องมองหาโซลูชัน "เหมาะสม" เพื่อบันทึกผลลัพธ์ทั้งหมดของเซสชันไปยังไฟล์ ( ฉันจะบันทึกอินพุตและเอาต์พุตทั้งหมดในเซสชันเทอร์มินัลได้อย่างไรและคำตอบของรอน )
มีคำสั่งชื่อเป็นสคริปต์หากไม่ได้ติดตั้งไว้ก็apt-get install script
จะทำมัน
จากนั้นใน terminal เพียงแค่พิมพ์สคริปต์
และทำสิ่งที่คุณต้องการหลังจากที่คุณทำเพียงพิมพ์ exit จากนั้นจะมีไฟล์ที่สร้างขึ้นในไดเรกทอรีปัจจุบันของคุณพร้อมข้อมูล stdout และ stdin ทั้งหมด
หวังว่ามันจะช่วยคุณ
สิ่งนี้ไม่เกี่ยวข้องกับเชลล์ของคุณ ( bash
) มันเป็นคุณสมบัติของเทอร์มินัลอีมูเลเตอร์ที่คุณใช้ มันถูกเก็บไว้ใน "scrollback buffer" ของเทอร์มินัล ฉันยังไม่ได้สามารถที่จะหาคำอธิบายที่ชัดเจนใด ๆ ที่ว่านี้จะถูกเก็บไว้ แต่ประสบการณ์ส่วนตัว/tmp
ได้แสดงให้ฉันว่ามันจะถูกเก็บไว้ที่ไหนสักแห่งใน
เนื่องจากคำตอบของคำถามที่เชื่อมโยงกับคำแนะนำด้านบนจะมีการจัดเก็บในไฟล์นิรนาม หากต้องการดูสิ่งที่ฉันหมายถึงเปิดไฟล์ใหม่ด้วยโปรแกรมแก้ไขข้อความ:
gedit newfile
เขียนบรรทัดข้อความลงในไฟล์และบันทึก ตอนนี้ในขณะที่ไฟล์นั้นยังคงเปิดอยู่ให้เปิดเทอร์มินัลแล้วลบมัน:
rm newfile
เนื่องจากคุณยังคงเปิดไฟล์อยู่gedit
คุณจึงสามารถเขียนต่อไปได้ คุณสามารถเขียนข้อมูลลงหลายกิกะไบต์ได้แม้ว่าจะมีการลบไฟล์ นั่นเป็นเพราะลบไฟล์เพียงแค่เอาลิงค์ที่ชี้ไปที่ของinode หากตัวให้คำอธิบายไฟล์นั้นถูกเปิดไว้โดยโปรแกรมอื่นข้อมูลสามารถถูกเขียนลงไปได้โดยไม่จำเป็นต้องมีลิงค์ (ไฟล์) จริงที่ตรงกับตัวบอกไฟล์บนระบบไฟล์อีกต่อไป
ทั้งหมดนี้คือการบอกว่าประวัติเทอร์มินัลของคุณอาจได้รับการบันทึกโดยใช้กลอุบายเช่นนั้นบางแห่งในไฟล์ที่ถูกลบ/tmp
มา สิ่งที่คุณอาจต้องการคือเพิ่มขนาดบัฟเฟอร์การเลื่อนของเทอร์มินัลอีมูเลเตอร์เพื่อให้คุณสามารถเลื่อนขึ้นและดูได้ รายละเอียดของวิธีการทำเช่นนี้ขึ้นอยู่กับการจำลอง terminal ที่คุณใช้ ส่วนใหญ่มีสวิตช์บรรทัดคำสั่งที่ให้คุณและนี่ก็มีอีกหลายวิธีที่มีวิธีตั้งค่า GUI ตัวอย่างเช่นในgnome-terminal
(ค่าเริ่มต้นบน Ubuntu) คือแก้ไข -> การตั้งค่า -> โปรไฟล์ --- คลิกที่โปรไฟล์ของคุณ -> แก้ไข -> การเลื่อน -> จำกัด การเลื่อนกลับไปที่ NNN:
script
คำอธิบายที่ยอมรับได้
เทอร์มินัลเซสชันถูกเก็บไว้ใน.bash_history
ไฟล์ ป้อนสิ่งนี้ในเทอร์มินัลของคุณecho $HISTFILE
ซึ่งจะให้เส้นทางของ.bash_history
ไฟล์