ሰባት ያልተጠበቁ Bash ተለዋዋጮች

ስለ ተከታታይ ማስታወሻዎች መቀጠል ያነሰ የሚታወቅ ተግባራት bash፣ የማታውቁት ሰባት ተለዋዋጮችን አሳይሃለሁ።

1) PROMPT_COMMAND

የተለያዩ ጠቃሚ መረጃዎችን ለማሳየት መጠየቂያውን እንዴት እንደሚጠቀሙበት አስቀድመው ያውቁ ይሆናል፣ ነገር ግን ጥያቄው በታየ ቁጥር የሼል ትዕዛዝን ማሄድ እንደሚችሉ ሁሉም ሰው የሚያውቅ አይደለም።

እንደ እውነቱ ከሆነ፣ ብዙ የተወሳሰቡ የፈጣን ተቆጣጣሪዎች በጥያቄው ውስጥ የሚታየውን መረጃ ለመሰብሰብ ትዕዛዞችን ለማስፈጸም ይህንን ተለዋዋጭ ይጠቀማሉ።

ይህንን በአዲስ ሼል ውስጥ ለማስኬድ ይሞክሩ እና በክፍለ ጊዜው ምን እንደሚሆን ይመልከቱ፡

$ PROMPT_COMMAND='echo -n "writing the prompt at " && date'

2) HISTTIMEFORMAT

ከሮጡ history በኮንሶል ውስጥ, ከዚህ ቀደም በመለያዎ ስር የተፈጸሙ ትዕዛዞችን ዝርዝር ይደርስዎታል.

$ HISTTIMEFORMAT='I ran this at: %d/%m/%y %T '

አንዴ ይህ ተለዋዋጭ ከተዋቀረ በኋላ አዲስ ግቤቶች ከትእዛዙ ጋር ጊዜውን ይመዘግባሉ, ስለዚህ ውጤቱ እንደዚህ ይመስላል:

1871 ይህንን ሮጥኩ፡ 01/05/19 13፡38፡07 ድመት /etc/resolv.conf 1872 ይህንን ሮጥኩ፡ 01/05/19 13፡38፡19 curl bbc.co.uk 1873 ሮጬዋለሁ። 01/05/19 13:38:41 sudo vi /etc/resolv.conf 1874 ይህን ሮጥኩ: 01/05/19 13:39:18 curl -vvv bbc.co.uk 1876 ይህን ሮጥኩ: 01 /05/19 13:39:25 ሱዶ ሱ -

ቅርጸት ከ ቁምፊዎች ጋር ይዛመዳል man date.

3) CDPATH

በትዕዛዝ መስመሩ ላይ ጊዜ ለመቆጠብ፣ ትዕዛዞችን በሚሰጡበት ጊዜ በቀላሉ ማውጫዎችን ለመቀየር ይህንን ተለዋዋጭ መጠቀም ይችላሉ።

እንዲሁም PATH፣ ተለዋዋጭ CDPATH በኮሎን-የተለያዩ መንገዶች ዝርዝር ነው። ትዕዛዙን ሲያሄዱ cd አንጻራዊ በሆነ መንገድ (ማለትም መሪ slash የለም)፣ በነባሪነት ዛጎሉ ተዛማጅ ስሞችን ለማግኘት በአካባቢዎ አቃፊ ውስጥ ይታያል። CDPATH መሄድ የሚፈልጉትን ማውጫ ለማግኘት በሰጡት ዱካዎች ውስጥ ይፈልጋል።

ከጫኑ CDPATH በዚህ መንገድ

$ CDPATH=/:/lib

እና ከዚያ አስገባ:

$ cd /home
$ cd tmp

ከዚያ ሁል ጊዜ ወደ ውስጥ ትገባለህ /tmp የትም ብትሆን።

ነገር ግን፣ ይጠንቀቁ፣ ምክንያቱም በዝርዝሩ ውስጥ አካባቢያዊውን ካልገለጹ (.) አቃፊ፣ ከዚያ ሌላ አቃፊ መፍጠር አይችሉም tmp እና እንደተለመደው ወደ እሱ ይሂዱ

$ cd /home
$ mkdir tmp
$ cd tmp
$ pwd
/tmp

ውይ!

ይህ የአካባቢያዊ ማህደር በጣም በሚታወቀው ተለዋዋጭ ውስጥ እንዳልተካተተ ሳውቅ ከተሰማኝ ግራ መጋባት ጋር ተመሳሳይ ነው። PATHግን በ PATH ተለዋዋጭዎ ውስጥ ማድረግ አለብዎት ምክንያቱም ከአንዳንድ የወረዱ ኮድ የሐሰት ትዕዛዝ ለማስኬድ ሊታለሉ ይችላሉ።

የእኔ በመነሻ ነጥብ ተዘጋጅቷል፡-

CDPATH=.:/space:/etc:/var/lib:/usr/share:/opt

4) SHLVL

አስበህ ታውቃለህ፣ መተየብ exit አሁን ካለህበት የባሽ ሼል ወደ ሌላ "ወላጅ" ሼል ያስወጣሃል ወይስ የኮንሶል መስኮቱን ሙሉ በሙሉ ይዘጋል?

ይህ ተለዋዋጭ በባሽ ሼል ውስጥ ምን ያህል ጥልቀት እንዳለህ ይከታተላል። አዲስ ተርሚናል ከፈጠሩ ወደ 1 ተቀናብሯል፡

$ echo $SHLVL
1

ከዚያ ሌላ የሼል ሂደት ከጀመሩ ቁጥሩ ይጨምራል፡-

$ bash
$ echo $SHLVL
2

ይህ ለመውጣት ወይም ላለመውጣት እርግጠኛ በማይሆኑበት ስክሪፕቶች ውስጥ በጣም ጠቃሚ ሊሆን ይችላል፣ ወይም የት እንዳሉ ይከታተሉ።

5) LINENO

ተለዋዋጭው የአሁኑን ሁኔታ ለመተንተን እና ለማረም ጠቃሚ ነው LINENOበክፍለ-ጊዜው እስካሁን የተፈጸሙትን የትእዛዞች ብዛት ሪፖርት የሚያደርግ፡-

$ bash
$ echo $LINENO
1
$ echo $LINENO
2

ይህ ብዙውን ጊዜ ስክሪፕቶችን ሲያስተካክል ጥቅም ላይ ይውላል። እንደ መስመሮችን ማስገባት echo DEBUG:$LINENO, በስክሪፕቱ ውስጥ የት እንዳሉ (ወይም እንደሌለዎት) በፍጥነት መወሰን ይችላሉ.

6) REPLY

እንደ እኔ ብዙውን ጊዜ እንደዚህ አይነት ኮድ የሚጽፉ ከሆነ፡-

$ read input
echo do something with $input

ተለዋዋጭውን ስለመፍጠር መጨነቅ ሳያስፈልግህ ሊያስገርምህ ይችላል፡

$ read
echo do something with $REPLY

ይህ ተመሳሳይ ነገር ያደርጋል.

7) TMOUT

ለደህንነት ሲባል በፕሮዳክሽን ሰርቨሮች ላይ ለረጅም ጊዜ ከመቆየት ወይም በአጋጣሚ አደገኛ ነገር በተሳሳተ ተርሚናል ውስጥ እንዳይሰራ ለማድረግ፣ይህን ተለዋዋጭ ማዘጋጀት እንደ ጥበቃ ነው።

ለተወሰኑ ሰከንዶች ምንም ነገር ካልገባ, ዛጎሉ ይወጣል.

ማለትም ይህ አማራጭ ነው። sleep 1 && exit:

$ TMOUT=1

ምንጭ: hab.com

አስተያየት ያክሉ