2>/dev/null சரியாக என்ன செய்கிறது?

What Exactly Does 2 Dev Null Do



நீங்கள் ஒரு புதிய லினக்ஸ் பயனராக இருந்தாலும் அல்லது அனுபவம் வாய்ந்த பாஷ் புரோகிராமராக இருந்தாலும், நீங்கள் 2>/dev/null என்ற ரகசிய கட்டளையை சந்தித்திருக்கலாம். இந்த கட்டளை தொழில்நுட்ப ரீதியாக சிக்கலானதாக தோன்றினாலும், அதன் நோக்கம் மிகவும் எளிது. இது பல்வேறு கட்டளைகளின் வெளியீடுகளை அடக்க பயன்படும் பூஜ்ய சாதனத்தைக் குறிக்கிறது. இந்த கட்டுரை 2>/dev/null கட்டளையின் ஒவ்வொரு பகுதியையும் உடைத்து, அதன் நோக்கத்தை விளக்கி, அது எவ்வாறு பயன்படுத்தப்படுகிறது என்பதற்கான எடுத்துக்காட்டுகளைப் பார்க்கும்.

பூஜ்ய சாதனம் - '/dev/null'

அனைத்து லினக்ஸ் அடிப்படையிலான அமைப்புகளும் மெய்நிகர் சாதனங்கள் என்ற அம்சத்தைக் கொண்டுள்ளன. இந்த மெய்நிகர் சாதனங்கள் இயங்குதளத்தில் உள்ள உண்மையான கோப்புகளைப் போல் தொடர்பு கொள்கின்றன. இத்தகைய மெய்நிகர் சாதனங்களின் வேலை உண்மையான சாதனங்களைப் போன்றது; அவை தரவை எழுதவும் படிக்கவும் பயன்படுத்தப்படுகின்றன. இரண்டிற்கும் உள்ள முக்கிய வேறுபாடு என்னவென்றால், மெய்நிகர் சாதனங்களுக்கான தரவு இயக்க முறைமையால் வழங்கப்படுகிறது.







/dev/null என்பது ஒரு பூஜ்ய சாதனம் - ஒரு சிறப்பு வகை மெய்நிகர் சாதனம். இது ஒவ்வொரு லினக்ஸ் அமைப்பிலும் உள்ளது, மேலும் இந்த சாதனத்தின் நோக்கம் அதற்கு அனுப்பப்படும் எதையும் நிராகரித்து கோப்பின் முடிவை (EOF) படிக்க வேண்டும். பெரும்பாலான மெய்நிகர் சாதனங்கள் தரவைப் படிக்கப் பயன்படுகின்றன; இருப்பினும், /dev /null தனித்துவமானது, ஏனெனில் அது எழுதப்பட்ட எந்த தரவையும் அடக்க பயன்படுகிறது. எளிமையாகச் சொன்னால், லினக்ஸ் இயக்க முறைமைகளில் எழுதப்பட்ட எந்தத் தரவிற்கும் இது ஒரு கருந்துளையாக செயல்படுகிறது.



இப்போது, ​​2> /dev /null கட்டளையின் மீதமுள்ள பகுதிகளைப் பார்ப்போம்



கோப்பு விளக்கம் - '2'

லினக்ஸில் உள்ள ஒவ்வொரு கட்டளை செயலாக்கமும் மூன்று தொடர்புடைய கோப்புகளை உருவாக்குகிறது: நிலையான உள்ளீடு, நிலையான வெளியீடு மற்றும் நிலையான பிழை கோப்புகள். லினக்ஸ் ஆப்பரேட்டிங் சிஸ்டம் இந்த கோப்புகள் ஒவ்வொன்றையும் தனித்துவமான எதிர்மறை அல்லாத முழு எண்ணைக் குறிக்கிறது.





  • நிலையான உள்ளீட்டிற்கு '0'
  • நிலையான வெளியீட்டிற்கு '1'
  • நிலையான பிழைக்கு '2'

நிலையான உள்ளீடு, நிலையான வெளியீடு மற்றும் நிலையான பிழை நீரோடைகளுக்கான தொழில்நுட்ப விதிமுறைகள் முறையே stdin, stdout மற்றும் stderr ஆகும்.

‘2>/dev/null’ கட்டளையில் உள்ள ‘2’ எண் நிலையான பிழை (stderr) ஸ்ட்ரீமை குறிக்கிறது என்பதை நாம் அறிவோம்.



கோப்பு வழிமாற்று ஆபரேட்டர் - ‘>’

'>' சின்னம் கோப்பு வழிமாற்று ஆபரேட்டர் என அறியப்படுகிறது. அதன் நோக்கம் அதன் இடதுபுறம் உள்ளதை வலது பக்கத்தில் உள்ள கட்டளைகளுக்கு இயக்குவதாகும். எளிமையாகச் சொன்னால், இடதுபுறத்தில் உள்ள எந்தத் தரவும் ஆபரேட்டரின் வலது பக்கத்திற்கு இயக்கப்படும்.

இதுவரை, 2>/dev/null கட்டளையின் ஒவ்வொரு கூறுக்கும் பின்னால் உள்ள நோக்கத்தை நாங்கள் புரிந்து கொண்டோம். இது பிழை ஸ்ட்ரீமை /dev /null க்கு அனுப்புகிறது, இது அதை நிராகரிக்கிறது. வேறு வார்த்தைகளில் கூறுவதானால், இந்த கட்டளை பிழை வெளியீடுகளை நிராகரிக்க மற்றும் ஒடுக்க பயன்படுகிறது. இருப்பினும், நீங்கள் ஒரு அனுபவமிக்க லினக்ஸ் வீரராக இருந்தால், முனையத்தில் பின்வரும் கட்டளையை இயக்குவதன் மூலம் /dev /null கோப்பின் உள்ளடக்கங்களைப் பார்க்கலாம்:

$ls -தி /தேவ்/ஏதுமில்லை

இந்த கட்டளை பொதுவாக பிழைகளின் அடிப்படையில் வெளியீட்டை வடிகட்ட வேண்டிய சூழ்நிலைகளில் அல்லது தவறான விளக்கங்களுடன் தொடர்புடைய எந்த வெளியீட்டையும் நிராகரிக்க விரும்பும் போது பயன்படுத்தப்படுகிறது. முன்னோக்கி நகரும் போது, ​​உபுண்டு கணினியில் அதன் பயன்பாட்டின் எடுத்துக்காட்டுகளைப் பார்ப்போம்.

2>/dev/null ஐப் பயன்படுத்துதல்

2>/dev/null கட்டளை பிழைகளை நிராகரிக்கப் பயன்படுகிறது என்பதை நாம் அறிந்திருப்பதால், அது எப்போதும் மற்ற கட்டளைகளுடன் இணைந்து பயன்படுத்தப்படும். பின்வரும் உதாரணங்களில் இதேபோன்ற அணுகுமுறையைக் காண்போம். பயன்பாட்டு மெனு மூலம் அல்லது Ctrl + Alt + T விசைப்பலகை குறுக்குவழியைப் பயன்படுத்தி முனையத்தை நீங்கள் திறக்கலாம்.

முதல் எடுத்துக்காட்டில், / sys / கோப்பகத்தில் ஒரு சீரற்ற சரத்துக்கான தேடலை நாங்கள் நடத்துவோம் (இந்த விஷயத்தில் ஹெலோவர்ல்ட்). தேடுவதற்கான கட்டளை grep, மற்றும் அதன் வாதம் தேடல் சரமாக இருக்கும். உங்கள் சரத்தைத் தேட பின்வரும் கட்டளையை உள்ளிடவும்.

$பிடியில் -ஆர்ஹலோலோல்ட்/sys/

இந்த தேடல் கட்டளை ரூட் அணுகல் இல்லாமல் பயன்படுத்தப்படுவதால் பல பிழைகள் காட்டப்படும். இந்த பிழைகளை நிராகரிக்க 2>/dev/null கட்டளையைப் பயன்படுத்தி அதன் பிழை ஸ்ட்ரீமை/dev/null க்கு அனுப்புவோம்.

$பிடியில் -ஆர்ஹலோலோல்ட்/sys/ 2> /தேவ்/ஏதுமில்லை

கட்டளையின் வெளியீடு கடைசி கட்டத்தை விட மிகவும் நேர்த்தியாகவும் எளிமையாகவும் இருப்பதை நாம் காணலாம். காரணம், பிழைகள் 2> /dev /null ஐப் பயன்படுத்தி நிராகரிக்கப்படுகின்றன, மேலும் grep கட்டளையால் எங்கள் சரம் 'helloworld' உடன் பொருந்தும் எந்த கோப்பையும் கண்டுபிடிக்க முடியவில்லை என்பதால், அது எந்த வெளியீட்டையும் காட்டாது.

/Dev /null இன் பயன்பாட்டை நன்கு புரிந்துகொள்ள, எந்த வலைத்தளத்தையும் (google.com எங்கள் விஷயத்தில்) பிங் செய்வதற்கான பின்வரும் உதாரணத்தைப் பார்ப்போம். பின்வரும் கட்டளையை செயல்படுத்துவதன் மூலம் நீங்கள் google.com ஐ பிங் செய்யலாம்:

$பிங்கூகுள் காம்

தோல்வியுற்ற அனைத்து பிங்குகளையும் நாம் விலக்க விரும்பினால், நாம் 2>/dev/null கட்டளையைப் பயன்படுத்தலாம்:

$பிங்கூகுள் காம்2> /தேவ்/ஏதுமில்லை

இந்த வழக்கில், நிலையான பிழை ஸ்ட்ரீம் (இது தோல்வியடைந்த பிங்குகளை google.com க்கு காட்டுகிறது) அவற்றை நிராகரிக்கும் மெய்நிகர் சாதனம் /dev /null க்கு அனுப்பப்படும்.

எவ்வாறாயினும், தோல்வியுற்ற பிங்ஸை மட்டுமே நாம் பார்க்க விரும்பினால், பின்வரும் கட்டளையை இயக்கலாம்:

$பிங்கூகுள் காம்1> /தேவ்/ஏதுமில்லை

இங்கே, அதை நிராகரிக்கும் /dev /null சாதனத்திற்கு நிலையான வெளியீட்டு ஸ்ட்ரீமை (stdout) அனுப்புகிறோம். இதன் விளைவாக, google.com சேவையகத்தை அடையத் தவறிய பிங்ஸ் மட்டுமே எஞ்சியுள்ளது. இருப்பினும், எங்கள் விஷயத்தில், தோல்வியடைந்த பிங்குகள் எதுவும் இல்லை. நாம் stdout மற்றும் stderr ஐ வெவ்வேறு இடங்களுக்கு இயக்கலாம். வெளியீட்டை நிராகரித்து பிழைகளை ஒரு பதிவில் அல்லது நேர்மாறாக சேமிக்க விரும்பினால் இது உதவியாக இருக்கும். பிங் கட்டளையின் நிலையான வெளியீட்டை நிராகரிக்கும் போது பிழை பதிவில் தோல்வியுற்ற பிங்குகளை சேமிக்க பின்வரும் கட்டளையை இயக்கலாம்:

$பிங்கூகுள் காம்1> /தேவ்/ஏதுமில்லை2>error.log

சந்தர்ப்பங்களில், நீங்கள் ஒரு கட்டளையின் அனைத்து வெளியீடுகளையும் (நிலையான வெளியீடு மற்றும் நிலையான பிழைகள் உட்பட) அடக்க விரும்பலாம். சற்றே வித்தியாசமான முறையில் /dev /null சாதனத்தைப் பயன்படுத்தி நாம் இதை அடையலாம். அனைத்து வெளியீடுகளையும் அடக்க பின்வரும் கட்டளையை நீங்கள் தட்டச்சு செய்யலாம்:

$பிங்கூகுள் காம்>தேவ்/ஏதுமில்லை2> &1

இங்கே கட்டளைகளின் வரிசை மிகவும் முக்கியமானது என்பதை நினைவில் கொள்க. பிங் கட்டளையை செயல்படுத்திய பிறகு, '>/dev/null' கணினியை வெளியீட்டை அடக்கச் சொல்கிறது, மேலும் '2> & 1' நிலையான பிழை ஸ்ட்ரீமை நிலையான வெளியீட்டிற்கு வழிநடத்துகிறது. இந்த வழியில், கட்டளையின் அனைத்து வெளியீடுகளும் நிராகரிக்கப்படுகின்றன.

முடிவுரை

இந்த கட்டுரையில் 2>/dev/null கட்டளை மற்றும் எளிய எடுத்துக்காட்டுகளை நாங்கள் துண்டித்துள்ளோம், மேலும் இதன் ஒவ்வொரு பிட் என்ன செய்கிறது என்பதை இப்போது நீங்கள் புரிந்துகொள்வீர்கள். இருப்பினும், இது பனிப்பாறையின் நுனி மட்டுமே; பாஷ் நிரலாக்கத்தில் பூஜ்ய சாதனங்கள் பல வழிகளில் பயன்படுத்தப்படுகின்றன. கோப்பு இருப்பைச் சரிபார்ப்பது, தொகுப்பு நிறுவல்களை தானியங்குபடுத்துதல் மற்றும் தேவையற்ற விதிவிலக்குகளில் இயங்குவதைத் தவிர்ப்பது ஆகியவை சில மேம்பட்ட பயன்பாடுகளில் அடங்கும்.