Bash: मैं एक स्क्रीन सत्र में कमान इतिहास कैसे प्राप्त करूं?




command-line gnu-screen (5)

जब आप किसी टर्मिनल (या शेल) से exit तो शैल अपने इतिहास को $ HISTFILE लिखता है, इसलिए अपने टर्मिनल में इसका इतिहास प्राप्त करने के लिए आप टर्मिनल में exit सकते हैं जिसे आप इतिहास चाहते हैं और यह लिखा जाएगा।

cat $HISTFILE
#or tac, less, $EDITOR, ... depending on how you want to "access" it

अगर मैं screen -dmS name साथ एक स्क्रीन सत्र शुरू करता हूँ, तो मैं उस स्क्रीन सत्र के इतिहास को एक स्क्रिप्ट के साथ कैसे उपयोग करूं?

का प्रयोग, अंतिम निष्पादित कमांड स्क्रीन में भी दिखाई देता है।


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 में!





gnu-screen