खोज…


वाक्य - विन्यास

  • निर्यात PS1 = "कुछ" # प्रदर्शित करता है जब बैश टाइप होने की प्रतीक्षा करता है
  • निर्यात PS2 = "दूसरी चीज़" # dsplayed जब स्टेटमेंट अधिक लाइनों तक फैली हो
  • निर्यात PS3 = "चयन कथन के लिए प्रश्न संकेत" # शायद ही कभी चयन के लिए शीघ्र उपयोग किया जाता है। पहले अपनी आवश्यकताओं के लिए PS3 सेट करें, फिर चयन चुनें । देखें मदद का चयन करें
  • निर्यात PS4 = "डिबगिंग के लिए अधिकतर उपयोगी; लाइन नंबर और इतने पर" डिबगिंग बैश स्क्रिप्ट के लिए उपयोग किया जाता है।

पैरामीटर

पलायन विवरण
\ए एक बेल पात्र।
\ घ "वीकनेस मंथ डेट" प्रारूप में तारीख (जैसे, "मई 26 को")।
\ डी {FORMAT} FORMAT को 'strftime' (3) में उत्तीर्ण किया जाता है और परिणाम शीघ्र स्ट्रिंग में डाला जाता है; खाली FORMAT का परिणाम स्थानीय-विशिष्ट समय प्रतिनिधित्व में होता है। ब्रेस की आवश्यकता होती है।
\इ एक बच चरित्र। \ 033 बेशक काम करता है।
\ h होस्टनाम, पहले `'तक। (अर्थात कोई डोमेन हिस्सा नहीं)
\ एच होस्टनाम अंततः डोमेन भाग के साथ
\जे वर्तमान में शेल द्वारा प्रबंधित नौकरियों की संख्या।
\ एल शेल के टर्मिनल डिवाइस के नाम का आधार।
\ n एक नई लाइन।
\ r एक गाड़ी लौटती है।
\ रों शेल का नाम, `$ 0 'का आधार (अंतिम स्लैश के बाद का भाग)।
\ t समय, 24-घंटे में HH: MM: SS प्रारूप।
\ टी समय, 12-घंटे में HH: MM: SS प्रारूप।
@ समय, 12-घंटे सुबह / दोपहर प्रारूप में।
\ए समय, 24-घंटे HH: MM प्रारूप में।
\ यू वर्तमान उपयोगकर्ता का उपयोगकर्ता नाम।
\ v बाश का संस्करण (उदाहरण के लिए, 2.00)
\ वी बैश की रिलीज़, संस्करण + पैचवेल (जैसे, 2.00.0)
\ w वर्तमान वर्किंग डायरेक्टरी, $ HOME के साथ संक्षिप्त रूप में टिल्ड ($ PROMPT_DIRTRIM वैरिएबल का उपयोग करता है)।
\ डब्ल्यू $ PWD का बेसनेम $ टिल्ड के साथ संक्षिप्त रूप में है।
! इस आदेश की इतिहास संख्या।
# इस कमांड की कमांड संख्या।
$ यदि प्रभावी यूआईडी 0, # है , अन्यथा $
\ NNN वह चरित्र जिसका ASCII कोड ऑक्टल वैल्यू NNN है।
\ एक बैकस्लैश।
\ [ गैर-मुद्रण वर्णों का क्रम प्रारंभ करें। यह एक टर्मिनल नियंत्रण अनुक्रम को शीघ्र में एम्बेड करने के लिए इस्तेमाल किया जा सकता है।
\] गैर-मुद्रण वर्णों का एक क्रम समाप्त करें।

PROMPT_COMMAND एनवायरनमेंट वैरिएबल का उपयोग करना

जब एक इंटरैक्टिव बैश इंस्टेंस में अंतिम कमांड किया जाता है, तो मूल्यांकन किया गया PS1 चर प्रदर्शित होता है। वास्तव में PS1 बैश प्रदर्शित करने से पहले लगता है कि PROMPT_COMMAND सेट है या नहीं। इस संस्करण का यह मान एक कॉल करने योग्य प्रोग्राम या स्क्रिप्ट होना चाहिए। यदि यह संस्करण सेट है, तो यह प्रोग्राम / स्क्रिप्ट BEFORE कहलाता है PS1 प्रॉम्प्ट प्रदर्शित होता है।

# just a stupid function, we will use to demonstrate
# we check the date if Hour is 12 and Minute is lower than 59
lunchbreak(){ 
   if (( $(date +%H) == 12 && $(date +%M) < 59 )); then 
      # and print colored \033[ starts the escape sequence 
      # 5; is blinking attribute
      # 2; means bold
      # 31 says red
      printf "\033[5;1;31mmind the lunch break\033[0m\n";
   else
      printf "\033[33mstill working...\033[0m\n"; 
   fi; 
}

# activating it
export PROMPT_COMMAND=lunchbreak

PS2 का उपयोग करना

PS2 प्रदर्शित होता है जब एक कमांड एक से अधिक लाइन में फैलता है और बैश अधिक कीस्ट्रोक का इंतजार करता है। यह तब भी प्रदर्शित होता है जब एक कंपाउंड कमांड जैसे कि ... do..done और alike दर्ज किया जाता है।

export PS2="would you please complete this command?\n" 
# now enter a command extending to at least two lines to see PS2

PS3 का उपयोग करना

जब चयन कथन निष्पादित किया जाता है, तो यह दिए गए आइटमों को एक संख्या के साथ उपसर्ग करता है और फिर PS3 प्रॉम्प्ट प्रदर्शित करता है:

export PS3="  To choose your language type the preceding number : "
select lang in EN CA FR DE; do
   # check input here until valid.
   break
done

PS4 का उपयोग करना

पीएस 4 प्रदर्शित होता है जब बैश डिबगिंग मोड में होता है।

#!/usr/bin/env bash

# switch on debugging
set -x

# define a stupid_func
stupid_func(){
   echo I am line 1 of stupid_func
   echo I am line 2 of stupid_func
}

# setting the PS4 "DEBUG" prompt
export PS4='\nDEBUG level:$SHLVL subshell-level: $BASH_SUBSHELL \nsource-file:${BASH_SOURCE} line#:${LINENO} function:${FUNCNAME[0]:+${FUNCNAME[0]}(): }\nstatement: '

# a normal statement
echo something

# function call
stupid_func

# a pipeline of commands running in a subshell 
( ls -l | grep 'x' )

PS1 का उपयोग करना

PS1 सामान्य सिस्टम प्रॉम्प्ट है जो यह दर्शाता है कि bash कमांड में टाइप होने का इंतजार करता है। यह कुछ एस्केप सीक्वेंस को समझता है और फंक्शंस या प्रोगाम को निष्पादित कर सकता है। जैसा कि बैश को डिस्प्ले प्रांप्ट के बाद कर्सर को पोजिशन करना है, उसे यह जानना होगा कि प्रॉम्प्ट स्ट्रिंग की प्रभावी लंबाई की गणना कैसे करें। PS1 चर के भीतर वर्णों के गैर मुद्रण अनुक्रमों को इंगित करने के लिए, बचे हुए ब्रेसिज़ का उपयोग किया जाता है: \ [ वर्णों का गैर मुद्रण अनुक्रम ] । सभी कहा जा रहा है सभी PS * var के लिए सही है।

(ब्लैक कैरेट कर्सर इंगित करता है)

#everything not being an escape sequence will be literally printed
export PS1="literal sequence "  # Prompt is now:
literal sequence ▉

# \u == user \h == host \w == actual working directory
# mind the single quotes avoiding interpretation by shell
export PS1='\u@\h:\w > ' # \u == user, \h == host, \w actual working dir
looser@host:/some/path > ▉

# executing some commands within PS1
# following line will set foreground color to red, if user==root, 
# else it resets attributes to default
# $( (($EUID == 0)) &&  tput setaf 1)
# later we do reset attributes to default with
# $(  tput sgr0 )
# assuming being root:
PS1="\[$( (($EUID == 0)) &&  tput setaf 1 \]\u\[$(tput sgr0)\]@\w:\w \$ "
looser@host:/some/path > ▉  # if not root else <red>root<default>@host....    


Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow