एक पारंपरिक खोल के लिए एक काम का मसौदा:
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
अब हम स्क्रीन को एक फाइल में कैच कर सकते हैं। सूडो की जरूरत है।
id=${ttyid//\/dev\/tty}
sudo cat /dev/vcs$id > screen.dump
एप्रोपोस screendump
: इसलिए नामित कार्यक्रम मेरे लिए और अधिक काम नहीं करता है। शायद पुराने गुठली के लिए ही। / dev / pts / N ने मेरे लिए भी काम नहीं किया। हो सकता है कि आपको कुछ वैकल्पिक MKDEV / dev में हों - मुझे कुछ के बारे में याद है /dev/cuaN
, लेकिन मैं गलत हो सकता हूं।
हम screen.dump का उपयोग करने के बजाय आउटपुट को पाइप करना चाहते हैं। लेकिन किसी तरह यह काम नहीं करता है - कभी-कभी यह ENTER का इंतजार करता है।
कैप्चरिंग फीडफीड्स के साथ एक सामान्य टेक्स्टफाइल नहीं है, लेकिन उदाहरण के लिए - एक क्रम में 80x50 चार्ट।
अंतिम 2 लाइनों को चुनने के लिए, कमांड के आउटपुट के लिए 1, और प्रॉम्प्टिंग लाइन के लिए एक, मैं इसे वापस करता हूं, 160 वर्ण चुनें, फिर से वापस लाएं और 80 चुनें।
rev vcs4.dat | sed 's/\(.\{160\}\).*/\1/g' | rev | sed 's/\(.\{80\}\).*/\1/g'
बस अगर आपने कभी सोचा है कि एक rev
कार्यक्रम क्यों है ।
आलोचना:
- पहले कमांड दर्ज किए जाते हैं, इस प्रकार लाइन को आगे बढ़ाया जाता है। अच्छी तरह से - 3-अंतिम पंक्ति या कुछ लेने के लिए सिर्फ एक संख्यात्मक एक्सर्साइज़। मैंने मुख्य रूप से एक अलग विंडो में काम किया।
- हर किसी के पास 80x50 की स्क्रीन नहीं है। खैर, हम जानते हैं। आपकी खुशी के लिए $ COLUMNS और $ ROWS है।
- आउटपुट सबसे नीचे नहीं है। एक ताजा और युवा खोल ऊपरी पंक्तियों में हो सकता है। अच्छी तरह से सरल है: मूल्यांकन करें कि क्या चल रहा है। किस प्रॉम्प्ट का उपयोग किया जाता है। कुछ शीघ्र पहचान करें और शेल-प्रॉम्प्ट के साथ अंतिम पंक्ति ढूंढें। इससे पहले की लाइन (या 2. पहले) में डायरेक्टरी होनी चाहिए।
पहला आरेख स्पष्टीकरणहोम के साथ बनाया गया है