2012-09-28 12 views
9

केवल तभी बैश में एक ठेठ शीघ्र संकेत:दिखाएँ काम गिनती की तरह कुछ में अशून्य

PS1="\[email protected]\h:\w\$ " 

, जिसे आप \j का उपयोग कर पृष्ठभूमि नौकरियों की संख्या, जैसे दिख सकते हैं:

PS1="\[email protected]\h:\w [\j]\$ " 

कौन सा उपयोगी है, क्योंकि हर अब और फिर मैं भूल जाता हूं कि मेरे पास एक रोका गया काम है और केवल तभी नोटिस करता है जब मैं शेल से मैन्युअल रूप से लॉगआउट करता हूं।

हालांकि, 95% समय, पृष्ठभूमि नौकरी की गणना 0 है और इसे तत्काल में दिखाया जाना आवश्यक है।

मैं प्रॉम्प्ट में जॉब गिनती कैसे दिखा सकता हूं, लेकिन केवल अगर यह nonzero है?

उत्तर

14

आप उदा। ऐसा कुछ करें:

PS1='\[email protected]\h:\w $([ \j -gt 0 ] && echo [\j])\$ ' 
+0

ध्यान दें कि यह बंद कर दिया पता चलता है ** और ** नौकरियों चल रहा है (हालांकि भेद कोई फर्क नहीं सकता आप के लिए) – ashirley

2

स्वीकृत उत्तर मेरे लिए काम नहीं करता है (मुझे बैश v4.2.46 मिल गया है)।

[: \j: integer expression expected 

मैं PROMPT_COMMAND उपयोग करने के लिए ही कार्यक्षमता को प्राप्त करने के लिए किया था: यह इस तरह एक त्रुटि फेंकता

export PROMPT_COMMAND=__prompt_command 
function __prompt_command() { 
    local JOBS=$(jobs | wc -l | tr -d 0) 
    PS1="\[email protected]\h:\w [${JOBS}]\$ " 
} 
+0

ऐसा इसलिए हो सकता है क्योंकि '4.3()' कमांड प्रतिस्थापन वाक्यविन्यास बैश 4.3 में पेश किया गया था। '' 'PS1 = '\ u @ \ h: \ w' [\ j -gt 0] &&cho [\ j] '\ $'' '' '' '' प्रयास करें। – wjandrea

+0

@wjandrea मैं बैश विशेषज्ञ नहीं हूं, लेकिन मुझे शक है। यहां तक ​​कि "जीएनयू बैश में, संस्करण 4.1.2 (1) - कृपया" यह वाक्यविन्यास काम करता है। मैंने किसी भी बैश ट्यूटोरियल में $ (...) वाक्यविन्यास के बारे में कुछ चेतावनी नहीं देखी है। –

+0

हुह, हाँ, मैं पूरी तरह गलत हूं, क्षमा करें। – wjandrea

संबंधित मुद्दे