मैं टर्मिनल में निर्देशिका कैसे बदलूं, और यह जानूं कि मैं किस निर्देशिका में हूं?


15

मैं उबुन्टु सामुदायिक मदद के निर्देशों का पालन कर रहा हूं ; हालाँकि, मैं अभी भी कुछ चीजों के बारे में उलझन में हूँ। मैंने इस पर शोध किया और इस पोस्ट को पाया: निर्देशिका को बदलने के लिए टर्मिनल का उपयोग करना , लेकिन यह मेरे ऊपर है और मुझे अभी भी यकीन नहीं है कि इसके बारे में कैसे जाना जाए। मैं नया हूँ और थोड़ा अतिरिक्त दिशा की आवश्यकता है इसलिए मेरे साथ रहो! ;-) निम्नलिखित मेरे टर्मिनल से स्क्रिप्ट है:

christy@ubuntu:~$ ls
Desktop    examples.desktop     install-tl-unx.tar.gz  Pictures  Templates
Documents  install-pkgs.log     libnautilus-gksu.so    Projects  Videos
Documents  install-pkgs.log     libnautilus-gksu.so    Projects  Videos
christy@ubuntu:~$ cd/
bash: cd/: No such file or directory

मैं कैसे बताता हूं कि किस निर्देशिका में क्या है और मैं निर्देशिका को कैसे नेविगेट करता हूं। मुझे पता है कि मुझे कुछ सरल छोड़ना होगा।


4
आपको कमांड के बाद हमेशा "cd" जैसे स्थान की आवश्यकता होती है। यदि आप "cd /" दर्ज करते हैं, तो आपका कमांड काम करेगा और रूट डायरेक्टरी में जाएगा।
मार्टी फ्राइड

शानदार, मार्टी! आपकी सहायता की बहुत प्रशंसा की जाती है। ;-)
user74713

जवाबों:


19

आपके सत्र lsमें वर्तमान निर्देशिका की सामग्री प्रदर्शित होती है (लेकिन फ़ाइलनाम में डॉट के साथ शुरू होने वाली छिपी हुई फाइलें नहीं)। आप टाइप करके किसी अन्य निर्देशिका में नेविगेट करते हैं cd dirname। यहां आपको एक निर्देशिका के नाम से "dirname" को बदलना होगा जिसे आप बदलना चाहते हैं। आम तौर पर आप अपने घर निर्देशिका के साथ वर्तमान कार्य निर्देशिका के रूप में शुरू करते हैं। आपके मामले में जो सबसे अधिक संभावना है /home/christy। यदि lsआपको "टेम्प्लेट" नामक एक निर्देशिका दिखाई देती है, तो आप "टेम्पलेट" में बदल सकते हैं (= इसे अपनी वर्तमान वर्किंग डाइरेक्टरी बना सकते हैं) कमांड को टाइप करके (स्थान को ध्यान में रखकर):

cd Templates

आप अपनी वर्तमान कार्यशील निर्देशिका को "टेम्प्लेट्स" में बदल देंगे या "ऐसी कोई फ़ाइल या निर्देशिका" नहीं छापेंगे, यदि उस नाम की कोई डायर आपके वर्तमान डाइरेक्ट्री में मौजूद नहीं है। टाइपिंग pwdआपको हमेशा माता-पिता सहित आपके वर्तमान कामकाजी निर्देशिका को पूर्ण पैच देगा।

आप प्रत्येक कमांड को वैकल्पिक तर्क दे सकते हैं। के लिए cdस्ट्रिंग "टेम्पलेट्स" इस तरह के एक वैकल्पिक तर्क था। यदि आप ls -aउदाहरण के लिए टाइप करते हैं, तो lsकमांड छिपी हुई फाइलों को भी प्रिंट करेगा। या इसके साथ ls Templatesआप वर्तमान कार्यशील डीआईआर की सामग्री के बजाय टेंपलेट्स निर्देशिका की सामग्री को प्रिंट करेंगे। आदेश नाम से कम से कम एक स्थान और एक दूसरे से तर्क अलग होना चाहिए। दोनों के बीच एक स्थान की कमी का कारण था कि आपकी कमांड काम नहीं करती थी।

चूँकि अंतरिक्ष वर्ण का एक विशेष अर्थ है, अगर आपको किसी तर्क का हिस्सा है, तो आपको इसे उद्धृत या बचाना होगा। इसलिए यदि आप उदाहरण के लिए अपनी वर्तमान कार्यशील निर्देशिका को "सोर्स फाइल्स" में बदलना चाहते हैं, तो आपको इनमें से एक कमांड टाइप करने की आवश्यकता है:

cd Source\ Files
cd "Source Files"

ऊपरी रेखा "बच गई" है जबकि निचली रेखा "उद्धृत" है।

यदि आप अपने लिए बेहतर मार्गदर्शक सीखना चाहते हैं: लिनक्स का परिचय ( पीडीएफ ) ( एचटीएमएल )


संपादित करें :

अब ठीक है, क्षमा करें, मैंने आपका लिंक वहां नहीं देखा। आपका पोस्ट थोड़ा भ्रामक था, अब मुझे लगता है कि मैं आपको मिल गया:

इसलिए आप स्रोत संग्रह से टेक्स-लाइव को इंस्टॉल करना चाहते हैं जो आपके द्वारा पोस्ट किए जा रहे "गेटिंग स्टार्टेड" गाइड में जुड़ा हुआ है । ऐसा करने के लिए आपको पहले टेक्स-लाइव की किसी भी पहले से मौजूद इंस्टॉलेशन को हटाना होगा। आप ऐसा करते हुए एक टर्मिनल खोलते हैं:

christy@ubuntu:~$ pwd 
/home/christy # <---- This is the directory you are working in
christy@ubuntu:~$ sudo apt-get remove texlive-*
[sudo] password for christy: 

इस बिंदु पर आपको आपको पासवर्ड दर्ज करना होगा और कुछ उबाऊ संदेशों के साथ पुरस्कृत किया जाएगा, कि मैं यहां छोड़ दूंगा। फिर आपको नाम के संग्रह को डाउनलोड करना होगा install-tl-unx.tar.gz(आपने पहले से ही ऐसा किया है और इसे फिर से डाउनलोड करने की आवश्यकता नहीं है, लेकिन मैं आपको दिखाता हूं कि यह कैसे करना है, केवल मामले में कम नहीं है):

christy@ubuntu:~$ wget http://mirror.ctan.org/systems/texlive/tlnet/install-tl-unx.tar.gz

--2012-07-09 15:08:23--  http://mirror.ctan.org/systems/texlive/tlnet/install-tl-unx.tar.gz
Resolving mirror.ctan.org... 80.237.159.15
Connecting to mirror.ctan.org|80.237.159.15|:80... connected.
HTTP request sent, awaiting response... 302 Found
# ... some more stuff like this ...
Saving to: `install-tl-unx.tar.gz'

100%[=====================================>] 2,530,831   --.-K/s   in 0.1s    

2012-07-09 15:08:23 (17.3 MB/s) - `install-tl-unx.tar.gz' saved [2530831/2530831]

अब जब आपने संग्रह डाउनलोड कर लिया है तो आप उसे अनपैक कर सकते हैं

christy@ubuntu:~$ tar xvf install-tl-unx.tar.gz
install-tl-20120701/
install-tl-20120701/readme-txt.dir/
install-tl-20120701/readme-txt.dir/README.RU-cp1251
# ... bla bla skipping over some more messages like this ...
install-tl-20120701/readme-html.dir/readme.sr.html
install-tl-20120701/readme-html.dir/readme.ru.html
install-tl-20120701/readme-html.dir/readme.de.html

अब जब आप संग्रह को अनपैक कर चुके हैं तो आप उस निर्देशिका में बदल सकते हैं जो अनपैक की गई थी।

christy@ubunut:~$ ls | grep install-tl-  # <---- with this line you find out the number
install-tl-20120701                      # <---- in this case "20120701"
install-tl-unx.tar.gz                    # <---- if just this is present with no number you did something wrong
christy@ubuntu:~$ cd install-tl-20120701 # <---- enter this number here
christy@ubuntu:~$ pwd
/home/christy/install-tl-20120701/       # <--- this is your new working directory

"20120701" संख्या एक टाइमस्टैम्प कह रही है कि आपके पास टेक्स-लाइव का कौन सा संस्करण है। यह संख्या आपके लिए अलग हो सकती है लेकिन कमांड ls | grep install-t1-आपको बताएगी कि इसके बजाय आपको क्या उपयोग करना है। यदि यह सब काम करता है, तो आप यहाँ से संस्थापन स्क्रिप्ट चला सकते हैं:

christy@ubuntu:~$ sudo ./install-tl
[sudo] password for jan: 
Loading http://ftp.univie.ac.at/packages/tex/systems/texlive/tlnet/tlpkg/texlive.tlpdb
Installing TeX Live 2012 from: http://ftp.univie.ac.at/packages/tex/systems/texlive/tlnet
Platform: x86_64-linux => 'x86_64 with GNU/Linux'
# ... bla bla and so on bla ...
Actions:
  <I> start installation to hard disk
  <H> help
  <Q> quit

Enter command: I
# ... and so on ...

यहां से बस इंस्टॉल स्क्रिप्ट द्वारा पूछे गए सवालों के जवाब दें और आपको ठीक होना चाहिए।


@ con-f-use: बढ़िया जानकारी! अब, मेरी मूल पोस्ट में टर्मिनल स्क्रिप्ट का जिक्र करते हुए: इनस्टॉल-tl-unx.tar.gz क्या डायरेक्टरी है और मैं इसे कैसे चलाऊँ? मैं स्थापित कमांड से परिचित हूं, लेकिन मुझे लगता है कि मुझे पैकेज स्थापित करने की आवश्यकता है? टारबॉल को अनपैक करने के कमांड @ ubuntu-manual.org/getinvolved/editors हैं । यदि आप मुझे सही दिशा में इंगित कर सकते हैं ... बहुत बहुत धन्यवाद; आप अत्यंत ज्ञानवर्धक रहे हैं।
user74713

कोई दिक्कत नहीं है। मुझे यकीन नहीं है, आपका लक्ष्य आखिर में क्या है, इसलिए अधिक जानकारी के बिना आपकी मदद करना थोड़ा मुश्किल है। जाहिरा तौर पर आप TeX-Live को 'install-tl-unx.tar.gz' आर्काइव से इंस्टॉल करने की कोशिश कर रहे हैं। ऐसा करने के लिए आपको पहले स्क्रिप्ट को अनपैक करना होगा, इंस्टॉल स्क्रिप्ट चलाने से। मैं जल्द ही ऐसा करने के लिए कुछ निर्देशों के साथ अपनी पोस्ट को ऊपर संपादित करूंगा।
con-f-use

10

कार्यकारी सारांश (TL; DR)

  • pwdयह जानने के लिए उपयोग करें कि आप कहां हैं (या अपने प्रॉम्प्ट में :और बीच में देखें $)।
  • cdनिर्देशिका को अन्यत्र बदलने के लिए उपयोग करें । विंडोज के विपरीत, हमेशा एक स्थान का पालन cdकरना चाहिए ; जैसे आदेश और काम नहीं करेंगे, लेकिन करेंगे और करेंगे।cd/cd..cd /cd ..

आप कहां हैं, यह जानना

रास्ता 1: भागो pwd

वर्तमान में आप जो निर्देशिका कर रहे हैं वह शेल-विशिष्ट (और आमतौर पर, एप्लिकेशन-विशिष्ट) है। आप एक शेल चला रहे हैं जहाँ आप एक डायरेक्टरी में हैं, और दूसरा शेल आप दूसरी डायरेक्टरी में हैं।

यह जानने के लिए कि आप वर्तमान में किस निर्देशिका में हैं, चलाएँ:

pwd

उदाहरण के लिए (एक शेल से जो मेरे मशीन पर अब खुला है)

ek@Kip:~$ pwd
/home/ek

यह मुझे बताता है कि मैं निर्देशिका में हूं /home/ek/home(कुछ भ्रामक रूप से) वह निर्देशिका है जिसमें मानव उपयोगकर्ताओं की होम निर्देशिकाएं होती हैं (यह स्वयं किसी उपयोगकर्ता की होम निर्देशिका नहीं है)। मानव उपयोगकर्ता के usernameपास घर निर्देशिका है ।/home/username

rootउपयोगकर्ता में एक घर निर्देशिका नहीं है /home। इसके बजाय, rootघर निर्देशिका है /root। यह रूट निर्देशिका के साथ भ्रमित नहीं होना है , जो है /

रास्ता 2: अपने संकेत की जाँच करें।

आपके प्रॉम्प्ट के लिए डिफ़ॉल्ट कॉन्फ़िगरेशन यह है कि यह बताता है कि आप वर्तमान में किस निर्देशिका में हैं। आपका प्रॉम्प्ट वह टेक्स्ट है जो आपको सूचित करता है कि शेल एक कमांड को स्वीकार करने के लिए तैयार है।

उदाहरण में आपने हमें अपने प्रश्न में दिखाया, आपका संकेत है:

christy@ubuntu:~$

christyआपका उपयोगकर्ता नाम है यह @चरित्र ubuntuआपके कंप्यूटर के होस्ट नाम से इसे अलग करता है। (यदि आप एक लाइव सीडी चला रहे हैं, तो इसका होस्टनाम होगा ubuntu, और कुछ लोग चुनते हैं कि स्थापना के दौरान उनके कंप्यूटर का नाम भी है।)

यह :चरित्र उस निर्देशिका के नाम से अलग करता है जो आप वर्तमान में हैं। इस मामले में, जिसका प्रतिनिधित्व किया जाता है ~~अपने घर निर्देशिका के लिए आशुलिपि है। जब आप अपनी होम निर्देशिका में नहीं होते हैं, तो आपको एक पूर्ण निर्देशिका नाम देखना चाहिए। उदाहरण के लिए:

ek@Kip:~$ cd /var/log
ek@Kip:/var/log$

(समाप्त करने के लिए क्या मतलब है शीघ्र के प्रत्येक भाग: संकेतों का है कि इस परिपाटी निम्न के लिए, या तो एक $या एक #। चरित्र प्रकट होता है $, इस मामले में के रूप में, इसका मतलब है कि यह एक सामान्य उपयोगकर्ता खोल है एक। #चरित्र यह एक है का मतलब होगा rootखोल।)

तुम कहाँ हो बदलना

आपके "सीडी" कमांड ने काम क्यों नहीं किया।

निर्देशिका बदलने के लिए, cdकमांड का उपयोग करें ।

तुम दौड़ गए cd/। यह काम नहीं करता है क्योंकि आपने वास्तव में cdकमांड नहीं चलाया था । उबंटू और अन्य यूनिक्स-जैसे ऑपरेटिंग सिस्टम (वास्तव में, यूनिक्स-शैली के गोले में bash, जैसे कि आप जिस शेल का उपयोग कर रहे हैं), एक कमांड का नाम केवल एक स्थान या पंक्ति के अंत में माना जाता है।

इसलिए विंडोज में कमांड प्रॉम्प्ट के विपरीत (जहां cd\इसकी व्याख्या की जाती है cd \और cd..इसे उसी रूप में व्याख्या की जाती है cd ..), bash(शेल आप उबंटू में उपयोग कर रहे हैं), cd/एक मान्य कमांड नहीं है। आपको अवश्य उपयोग करना चाहिए cd /

cd/का अर्थ है "वर्तमान निर्देशिका में प्रविष्टि जिसका नाम है cdऔर जो एक निर्देशिका भी है।" इस तरह की एक उपनिर्देशिका मौजूद है या नहीं, इसे कमांड के रूप में नहीं चलाया जा सकता है, इसलिए किसी भी तरह से आपको एक त्रुटि मिलेगी (हालांकि आपको जो त्रुटि मिलेगी वह अलग होगी):

ek@Kip:~$ cd/
bash: cd/: No such file or directory
ek@Kip:~$ mkdir cd
ek@Kip:~$ cd/
bash: cd/: Is a directory

अपने होम निर्देशिका में जा रहा है

अपने घर निर्देशिका में जाने के लिए, cdबिना किसी तर्क के अपने आप चलाएं :

cd

कुछ लोग अपने होम डायरेक्टरी को स्पष्ट रूप से नाम देना पसंद करते हैं। आप इसके पूर्ण नाम का उपयोग कर सकते हैं, या

cd ~

लेकिन cdअपने आप में पर्याप्त है।

एक निर्देशिका बढ़ रहा है

निर्देशिका को वर्तमान निर्देशिका की मूल निर्देशिका में बदलने के लिए (अर्थात, इसमें जो निर्देशिका है), उपयोग करें:

cd ..

..वर्तमान निर्देशिका की मूल निर्देशिका का प्रतिनिधित्व करता है। यदि आप रूट डायरेक्टरी ( /) में हैं, तो एक अपवाद है: ..बस प्रतिनिधित्व करता है/ । तो चल रहा cd ..है एक निर्देशिका जब कहीं भी चलता है लेकिन /; जब आप दौड़ते हैं /, तो आप अंदर रहते हैं /

हर निर्देशिका में एक ..प्रविष्टि होती है। उन सभी में एक .प्रविष्टि भी होती है जो वर्तमान निर्देशिका को संदर्भित करती है। यह cd .हालांकि चलाने के लिए बहुत नहीं है । आप हमेशा वहीं रहें जहां आप हैं।

निरपेक्ष और सापेक्ष पथ

यदि आप cdकिसी ऐसी चीज़ से शुरू करते हैं जो a से शुरू नहीं होती है/ , तो यह मौजूदा डायरेक्टरी के भीतर उस डायरेक्टरी में जाने की कोशिश करती है ।

उदाहरण के लिए, यदि आप भाग गए

cd var/log

फिर यह उस जगह के varउपनिर्देशिका में जाने की कोशिश करेगा जहां आप वर्तमान में हैं, और मेंlog उपनिर्देशिका में। जब तक दोनों मौजूद नहीं हैं, और उन स्थानों में, वह cdआदेश विफल हो जाएगा (और आप वहीं रहेंगे जहां आप मूल रूप से थे)।

यदि आप रूट डायरेक्टरीlog के varउपनिर्देशिका के उपनिर्देशिका पर जाना चाहते हैं , तो इसके बजाय इसे चलाएं:

cd /var/log

आप वर्तमान में सिर्फ अगर /हैcd var/log के बराबर cd /var/log

एक रास्ता जो शुरू होता है / वह निरपेक्ष है। इसे हल करने का तरीका इस बात पर निर्भर नहीं करता है कि आप वर्तमान में कहां हैं।

रास्ता ~भी पूर्ण है, क्योंकि यह (अनिवार्य रूप से) आशुलिपि के लिए है $HOMEHOMEएक पर्यावरण चर , और अभिव्यक्ति है$HOME वर्तमान उपयोगकर्ता के घर निर्देशिका के पूर्ण, पूर्ण पथ पर फैलती है।

~नोटेशन का उपयोग किसी अन्य उपयोगकर्ता के घर निर्देशिका का प्रतिनिधित्व करने के लिए भी किया जा सकता है । यदि आप लिखते हैं , तो यह होम निर्देशिका का प्रतिनिधित्व करता है।~usernameusername

इससे पहले कि आप पहले कहाँ थे

वर्तमान में आप जिस निर्देशिका में हैं, वह PWDपर्यावरण चर में संग्रहीत है । आपके द्वारा अंतिम निर्देशिका को OLDPWDपर्यावरण चर में संग्रहीत किया गया है। आप OLDPWDउसी तरह देख सकते हैं जिस तरह से आप किसी भी पर्यावरण चर को देखेंगे:

echo $OLDPWD

क्योंकि यह जानकारी संग्रहीत है, cdजहाँ आप पहले थे, वापस आने के लिए एक विशेष, त्वरित और आसान तरीका है। जैसा कि pst007x कहता है , आप जिस अंतिम निर्देशिका में थे, उस पर जाने के लिए:

cd -

यदि आप उस शेल में पहले से कोई निर्देशिका नहीं थे , तो OLDPWDपर्यावरण चर सेट नहीं किया गया होगा, और चलाने की कोशिश करने cd -में त्रुटि होगी (और आप वहीं रहेंगे जहां आप हैं):

ek@Kip:~$ cd -
bash: cd: OLDPWD not set

जहाँ आप एक मालिक की तरह बदल रहे हैं

pushd तथा popd : निर्देशिका स्टैक

निर्देशिका नामों के ढेर की कल्पना करें। द्वारा एक ढेर , मेरा मतलब है कुछ है जहाँ आप कुछ यह शीर्ष पर चला जाता है जोड़ते हैं, और आप एक बार में केवल एक बात निकाल सकते हैं और बात आप निकालना हमेशा शीर्ष पर वर्तमान में है।

आप किसी भी निर्देशिका को स्टैक पर चलाकर धक्का दे सकते हैं dir:

pushd dir

यदि आप वर्तमान निर्देशिका को स्टैक के शीर्ष पर धकेलना चाहते हैं, तो आप उपयोग कर सकते हैं .(जो ऊपर बताया गया है, हमेशा वर्तमान निर्देशिका का प्रतिनिधित्व करता है):

pushd .

फिर आप अपने व्यवसाय के बारे में जा सकते हैं, निर्देशिकाओं को जितना चाहें बदल सकते हैं। जब आप पिछली निर्देशिका में वापस जाना चाहते हैं, तो आपने स्टैक पर धक्का दिया था pushd, भागो:

popd

यह उस निर्देशिका में जाता है, और पॉप भी होता है ढेर बंद यह। अब स्टैक एक डायरेक्टरी छोटा है। यदि स्टैक पर एकमात्र निर्देशिका थी, तो स्टैक अब खाली है।

आपके पास आकार का एक स्टैक 1 से अधिक हो सकता है। यही है, आप pushdस्टैक पर कई निर्देशिकाओं को पुश करने के लिए अलग-अलग कमांड का उपयोग कर सकते हैं । प्रत्येक बाद की popdकमांड (और पॉप, यानी, स्टैक से, दूर जाएगी) ) सबसे हाल ही में धकेल दी गई डायरेक्ट्री पॉप नहीं होगी।

यहाँ एक उदाहरण है:

ek@Kip:~$ cd /etc/apt/sources.list.d
ek@Kip:/etc/apt/sources.list.d$ pushd .
/etc/apt/sources.list.d /etc/apt/sources.list.d
ek@Kip:/etc/apt/sources.list.d$ pushd /home/ek
~ /etc/apt/sources.list.d /etc/apt/sources.list.d
ek@Kip:~$ cd /var/log/apt
ek@Kip:/var/log/apt$ pushd .
/var/log/apt /var/log/apt /etc/apt/sources.list.d /etc/apt/sources.list.d
ek@Kip:/var/log/apt$ cd
ek@Kip:~$ popd
/var/log/apt /etc/apt/sources.list.d /etc/apt/sources.list.d
ek@Kip:/var/log/apt$ popd
/etc/apt/sources.list.d /etc/apt/sources.list.d
ek@Kip:/etc/apt/sources.list.d$ cd /
ek@Kip:/$ pushd usr
/usr / /etc/apt/sources.list.d
ek@Kip:/usr$ cd
ek@Kip:~$ popd
/ /etc/apt/sources.list.d
ek@Kip:/$ popd
/etc/apt/sources.list.d
ek@Kip:/etc/apt/sources.list.d$ popd
bash: popd: directory stack empty
ek@Kip:/etc/apt/sources.list.d$

pushdऔर की popdतुलना में बहुत कम बार उपयोग किया जाता है cd। उनके पास अन्य, और भी अधिक उन्नत उपयोग हैं। भागो help pushdऔरhelp popd विवरण के लिए।

अधिक सीखना और प्रलेखन तक पहुँचना

cdऔर pwdअधिक उन्नत उपयोग भी हैं। उनके बारे में जानने के लिए दौड़ें help cdऔर man pwd

helpके लिए है खोल builtinsmanस्टैंडअलोन कमांड के लिए है - कमांड जो अलग-अलग प्रक्रियाओं के रूप में चलती हैं और अलग-अलग निष्पादन योग्य के रूप में मौजूद हैं। typeआदेश का पता चलता है, तो एक कमांड शेल builtin है या नहीं और, अगर नहीं, जहां कार्यक्रम इसे चलाता स्थित है। उदाहरण के लिए, आप चला सकते हैं type help, type typeया type man


5

उदाहरण के लिए:

cd Desktop/ यदि आप अपनी होम निर्देशिका में हैं, तो डेस्कटॉप निर्देशिका में जाता है।

cd - पिछली निर्देशिका में वापस जाता है।

cd / आपको रूट डायरेक्टरी पर ले जाता है।

cd ~/Desktop आपको अपने डेस्कटॉप निर्देशिका में ले जाएगा, चाहे आप कहीं भी हों।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.