आप bash प्रॉम्प्ट में होस्ट आईपी एड्रेस कैसे प्रदर्शित कर सकते हैं?


5

ऊपर की तरह, मैं PS1 या बैश में eth0 का IPv4 पता (या इसका कुछ भाग) प्रदर्शित करना चाहूंगा। क्या इसे करने का कोई तरीका है?


1
परिभाषित: आईपी पता - किस इंटरफ़ेस का? ipv4 / ipv6? लोकलहोस्ट भी?
Sirex

क्या यह "PS1 ऑन (या इन) बैश" कहने वाला है? बस जाँच रहा हूँ।
beroe

जवाबों:


8

मैं अपने में निम्नलिखित का उपयोग करता हूं .bashrc

THEIP=$(ifconfig | grep 'inet addr:'| grep -v '127.0.0.1' | tail -1 | cut -d: -f2 | awk '{ print $1}')
PS1="\[\033[01;31m\]\u@"$THEIP" \w $\[\033[00m\] ";

यह आपको एक संकेत देगा:

root@1.2.3.4 /opt/amazon/jungle $

हटाए \w वर्तमान कार्य निर्देशिका से छुटकारा पाने के लिए या इसे बनाने के लिए \W इसे केवल एक आंशिक कार्य निर्देशिका बनाने के लिए

root@1.2.3.4 jungle $

आप निम्न का उपयोग भी कर सकते हैं, यह मानते हुए कि आपके में केवल एक आईपी पता है /etc/hosts फ़ाइल:

THEIP=$(hostname -i)

दिलचस्प समाधान। सुनिश्चित नहीं है कि ओपी किस ओएस का उपयोग कर रहा है, लेकिन ओएसएक्स में, hostname नहीं है -i विकल्प। आप मूर्खतापूर्ण कुछ कर सकते हैं host $(hostname) | cut -f 4 -d " " अगर कोई डीएनएस उपलब्ध है।
beroe

Ifconfig आउटपुट स्वरूप थोड़ा बदल गया है (मैं ubuntu 18.04 में bash का उपयोग कर रहा हूं), और 'cut' कमांड आवश्यक नहीं लगता है यदि awk कमांड को थोड़ा समायोजित किया जाता है, तो मैं उपयोग कर रहा हूं: THEIP = $ (ifconfig। Grep 'inet) '| grep -v' 127.0.0.1 '| पूंछ -1 | awk' {प्रिंट $ 2} '
geekbrit

3

अस्वीकरण: वस्तुतः इस कम बकवास बनाने के लिए कोई प्रयास नहीं किया गया।

नीचे ऐसा करने का तरीका है ...

PS1=$(ifconfig $(route -n | grep ^0.0.0.0 | awk '{print $NF}') | grep inet | grep -v inet6 | awk '{print $2}')

2

जैसा कि Sirex द्वारा कहा गया है कि आप कमांड प्रतिस्थापन के साथ बहुत सी मुश्किल चीजें कर सकते हैं, मैं निम्नलिखित घोषणा को पसंद करेंगे ip उपयोगिता:

export PS1="IP: $(ip addr show dev eth0 | grep "inet " | cut -d" " -f6) #" या कुछ इस तरह का।

एक अन्य विकल्प उपकरण का उपयोग करना है facter जो आपके सिस्टम के बारे में इतनी सरल जानकारी प्रदान करता है facter ipaddress_eth0 आपको आईपी-पता देता है। तो नया उदाहरण होगा

export PS1="IP: $(facter ipaddress_eth0) #

facter यदि आप चाहें तो आपको स्क्रिप्टिंग के लिए बहुत अधिक सिस्टम informations का उपयोग करने की अनुमति देता है। बस अमल करो facter यह देखने के लिए कि यह पूरे विन्यास में क्या है। यदि आप चाहें तो आप अपने स्वयं के तथ्यों को भी घोषित कर सकते हैं /etc/facts.d


0

मैंने @ SomeGuyOnAComputer का उत्तर लिया है और इसे थोड़ा सुधार दिया है:

IP=$( ifconfig | grep ^eth -A2 | grep 'inet addr:' | cut -d: -f2 | awk '{ print $1 }' ) PS1='\n\[\033[00;32m\]\u@$IP \[\033[00;33m\]\w\n\\$\[\033[00m\] '

मेरे पास मेरी मशीन पर एक डॉकटर कंटेनर चल रहा था, इसलिए जब मैंने @ SomeGuyOnAComputer की कमांड चलाई तो यह डॉकर का IP पता उठा रहा था। नया संस्करण उस रेखा की तलाश करता है जो 'एथ' से शुरू होती है और मिलान रेखा (-अ 2) सूचना के बाद 2 पंक्तियों को प्रिंट करती है। बाकी @ SomeGuyOnAComputer के संस्करण की तरह है।


0

मैं इस विन्यास का उपयोग कर रहा हूँ।

pyclean () {

        find . -type f -name "*.py[co]" -delete -print
        find . -type f -name ".DS_Store" -delete -print

        find . -type d -name "__pycache__" -delete -print

}
IP=$( ifconfig | grep ^eth -A2 | grep 'inet addr:' | cut -d: -f2 | awk '{ print $1 }' )
export PS1="\e[1;32m\D{%T} @$IP\e[1;34m\w/\e[m\n\$ "

00:02:03 @ 10.112.202.108 ~ / शाहिद / ansible / $
Mohammad Shahid Siddiqui

0

आप भी इसे पसंद कर सकते हैं-

IP=$( ifconfig | grep ^eth -A2 | grep 'inet addr:' | cut -d: -f2 | awk '{ print $1 }' )
PS1='\e[1;34m\D{%T} \[\033[00;39m\]\u\[\033[00;32m\]@$IP \[\033[00;33m\]\w/\n\\$\[\033[00m\] '

-2

अपना IP चर निर्यात करें: निर्यात MYIP = $ (ifconfig | grep inet | egrep -v "127 | inet6" | awk '{print $ 2}') अपना बैश चर निर्यात करें: निर्यात PS1 = '[\ u @ "$ MYIP" \ W] \ $'


(1) निर्यात क्यों मदद करेगा? (२) आप जानते हैं कि 192.168.1.127 एक मान्य IP पता है, है ना?
G-Man
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.