Bash: मैं एक स्क्रीन सत्र में कमान इतिहास कैसे प्राप्त करूं?
command-line gnu-screen (5)
अगर मैं screen -dmS name
साथ एक स्क्रीन सत्र शुरू करता हूँ, तो मैं उस स्क्रीन सत्र के इतिहास को एक स्क्रिप्ट के साथ कैसे उपयोग करूं?
↑ का प्रयोग, अंतिम निष्पादित कमांड स्क्रीन में भी दिखाई देता है।
जब आप किसी टर्मिनल (या शेल) से exit
तो शैल अपने इतिहास को $ HISTFILE लिखता है, इसलिए अपने टर्मिनल में इसका इतिहास प्राप्त करने के लिए आप टर्मिनल में exit
सकते हैं जिसे आप इतिहास चाहते हैं और यह लिखा जाएगा।
cat $HISTFILE
#or tac, less, $EDITOR, ... depending on how you want to "access" it
screen
आपके द्वारा टाइप किए जाने वाले आदेशों का इतिहास नहीं रखता है आपका शैल इतिहास को नहीं रख सकता या हो सकता है चूंकि आप bash
का इस्तेमाल करते हैं, इसलिए आप history
कमांड का उपयोग कर सकते हैं।
screen
को इतिहास खोज का एक कच्चा सन्निकटन दिखाई देता है (यह केवल कमांड लाइन के लिए स्क्रॉलबैक बफ़र की खोज करता है। screen
"इतिहास" कमांड के तहत screen
मैन पेज को देखें ( Ca {
डिफ़ॉल्ट रूप से)
history
सभी इतिहास कमांड दिखाएगा।
इसका उपयोग करें: पटल एल के साथ स्क्रीन-एल टर्मिनल इनपुट और आउटपुट की कॉपी को स्क्रीनग्राम नाम की फ़ाइल में संग्रहीत करेगी या यदि आप इसे नाम के लिए -S का उपयोग करते हैं, तो लॉग फ़ाइल को स्क्रीन नाम मिलता है
मैंने अपनी अगली पंक्तियों को मेरे। में डाल दिया।
case "$TERM" in
screen)
declare SCREEN_NAME=$(echo $STY | sed -nr 's/[^.]*\.(.*)/\1/p')
if [[ $SCREEN_NAME ]]; then
HISTFILE="${HISTFILE}.${SCREEN_NAME}.${WINDOW}"
declare -p HISTFILE
fi
unset SCREEN_NAME
;;
*)
;;
esac
मेरा डिफ़ॉल्ट .bashrc मूलतः 'xterm * | rxvt *)' मान के साथ 'केस' है, इसलिए मैंने इसे केवल मेरी 'स्क्रीन' हिस्से को इसमें शामिल किया यदि आपके पास यह 'मामला' नहीं है, तो आप इसके बजाए अगले उपयोग कर सकते हैं:
if [[ $TERM == screen ]]; then
declare SCREEN_NAME=$(echo $STY | sed -nr 's/[^.]*\.(.*)/\1/p')
if [[ $SCREEN_NAME ]]; then
HISTFILE="${HISTFILE}.${SCREEN_NAME}.${WINDOW}"
declare -p HISTFILE
fi
unset SCREEN_NAME
fi
और मेरे पास मेरे सभी स्क्रीन की सभी विंडो के लिए एक स्वयं की bash_history है
नोट: यह काम नहीं करता chroot में!