2013-02-27 52 views
12

सबसे पहले मुझे नीचे एक उदाहरण दिखाएं।मैं सभी बैश इतिहास कैसे देख सकता हूं?

खोल में (1) मैंने निम्न आदेश दिया था।

$ ping google.com 
PING google.com (74.125.235.164) 56(84) bytes of data. 
64 bytes from nrt19s12-in-f4.1e100.net (74.125.235.164): icmp_seq=1 ttl=54 time=2.85 ms 
64 bytes from nrt19s12-in-f4.1e100.net (74.125.235.164): icmp_seq=2 ttl=54 time=3.42 ms 

और उसके बाद, एक और खोल खोलें (2) और इतिहास देखें।

$ history 
. 
. 
. 
8720 exit 
8721 clear 
8722 history 

इस मामले में, खोल इतिहास खोल (1) द्वारा निष्पादित नहीं देख सकते हैं, लेकिन मैं हर खोल में bash इतिहास के सभी देखना चाहते हैं।

तो मेरा सवाल यह है कि मैं सभी बैश इतिहास कैसे देख सकता हूं? क्या किसी को पता है कि कैसे हैक करना है?

अग्रिम में बहुत बहुत धन्यवाद!

उत्तर

12

आप histappend खोल विकल्प पर गौर करना चाहिए और -a झंडा history रहे हैं:

histappend

सेट करते हैं, तो इतिहास सूची का मूल्य द्वारा नाम की फ़ाइल में जोड़ा जाता है HISTFILE परिवर्तनीय जब फ़ाइल को ओवरराइट करने के बजाय, खोल निकलता है।

history

-a 'नई' इतिहास लाइनों (इतिहास लाइनों वर्तमान बैश सत्र की शुरुआत के बाद दर्ज की गई) इतिहास फाइल करने के लिए जोड़ें।

आप अपने PROMPT_COMMAND में history -a डाल, तो आप हमेशा-अप-टू-डेट .bash_history फ़ाइल मिल जाएगा।

अपने .bashrc

संपादित करें और यह अंत है को यह संलग्न:

10
cat ~/.bash_history 

भी काम करेगा, हालांकि मैं अभी

का उपयोग करते हैं
vim ~/.bash_history 

और फिर का उपयोग

1

पर आप उन्नत शैल इतिहास की तरह कुछ इंस्टॉल कर सकते हैं, जो प्रत्येक कमांड को sqlite3 डेटाबेस में लॉग करेगा। यह कमांड लाइन से डेटाबेस से पूछताछ के लिए एक उपकरण के साथ आता है। https://github.com/barabo/advanced-shell-history

इस सेटअप के साथ, आपके पास सभी सत्रों में कमांड इतिहास का एक एकीकृत दृश्य होगा। आपको वर्तमान कार्यशील निर्देशिका (या उपट्री), कमांड निकास कोड, कमांड अवधि आदि के लिए कमांड इतिहास जैसी चीजें भी मिलती हैं।

पूर्ण प्रकटीकरण: मैंने टूल लिखा और बनाए रखा।