பாஷில் stdin, stderr மற்றும் stdout என்றால் என்ன

What Are Stdin Stderr



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

எப்படி என்று பார்க்கலாம் ஸ்ட்டின் , stderr , மற்றும் stdout வேலை செய்கிறது மற்றும் நீங்கள் அவற்றை எவ்வாறு பயன்படுத்தலாம்.







stdin, stdout மற்றும் stderr

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



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



சிறப்பு நீரோடைகளின் விரைவான முறிவைப் பெறுவோம்.





  • stdin: நிலையான உள்ளீட்டைக் குறிக்கிறது. இது உரையை உள்ளீடாக எடுத்துக்கொள்கிறது.
  • stdout: நிலையான வெளியீட்டைக் குறிக்கிறது. ஒரு கட்டளையின் உரை வெளியீடு stdout ஸ்ட்ரீமில் சேமிக்கப்படுகிறது.
  • stderr: நிலையான பிழையை குறிக்கிறது. ஒரு கட்டளை பிழையை எதிர்கொள்ளும் போதெல்லாம், பிழை செய்தி இந்த ஸ்ட்ரீமில் சேமிக்கப்படும்.

லினக்ஸில், கிட்டத்தட்ட அனைத்து ஸ்ட்ரீம்களும் கோப்புகள் போல நடத்தப்படுகின்றன. நீங்கள் ஒரு கோப்பைப் படிக்க/எழுதுவது போல, இந்த ஸ்ட்ரீம்களிலிருந்து தரவைப் படிக்கலாம்/எழுதலாம்.

எந்தவொரு கோப்பையும் அணுகுவதற்கான எளிதான வழி, அதனுடன் தொடர்புடைய தனித்துவமான கோப்பு விளக்க எண்ணைப் பயன்படுத்துவதாகும். இந்த ஸ்ட்ரீம்களின் விஷயத்தில், அவை ஒவ்வொன்றிற்கும் தனித்துவமான மதிப்புகள் ஒதுக்கப்பட்டுள்ளன.



  • 0: ஸ்ட்டின்
  • 1: stdout
  • 2: stderr

செயலில் stdin, stdout மற்றும் stderr

நடவடிக்கை மூலம் இந்த ஸ்ட்ரீம்களைப் பற்றி மேலும் கற்றுக்கொள்வதன் மூலம் தொடங்குவோம், நாங்கள் ஸ்ட்டினுடன் தொடங்குவோம்.

பின்வரும் கட்டளையை இயக்கவும்.

$படி

கட்டளைக்கு விசைப்பலகையிலிருந்து உள்ளீடு தேவைப்படும். இங்கே, படிக்கும் கருவி stdin இலிருந்து உள்ளீட்டைப் பெறுகிறது. இப்போது stdout ஐப் பார்ப்போம்.

முதலில் கட்டளையை இயக்கவும்.

$ls -தி

இங்கே, ls கட்டளை தற்போதைய கோப்பகத்தில் கோப்பு (களை) பட்டியலிடுகிறது. பட்டியல் இவர்களுக்கு அனுப்பப்பட்டுள்ளது stdout மற்றும் முனையம் அதை அச்சிடுகிறது. ஸ்டெடரை இப்போது சரிபார்க்கலாம்.

ஒரு பிழை ஏற்பட பல்வேறு வழிகள் உள்ளன. இந்த எடுத்துக்காட்டுக்கு, தவறான வாதத்தை அனுப்பினால் பிழை ஏற்படும்.

$ls -திஎதையும்

இங்கே, எதுவும் கோப்பு இல்லை. அதனால் தான் ls returns என்ற செய்தி அனுப்பப்படுகிறது stderr .

குழாய் பதித்தல்

இது ஸ்ட்டின் மற்றும் ஸ்ட்டவுட் ஸ்ட்ரீம்களை முழுமையாகப் பயன்படுத்தும் ஒரு பொதுவான நுட்பமாகும். அதை ஒரு உதாரணத்துடன் விளக்குவோம்.

$வெளியே எறிந்தார் 'வணக்கம் உலகம்' | பிடியில்வணக்கம்

இங்கே, தி குழாய் அமைப்பதற்கு அடையாளம் பொறுப்பு. வெளியீடு வெளியே எறிந்தார் ஜெனரேட்ஸ் இதில் எழுதப்பட்டுள்ளது stdout ஸ்ட்ரீம். பின்னர், குழாய் ஸ்ட்ரவுட்டின் உள்ளடக்கத்தை grep கட்டளைக்காக stdin க்கு திருப்பி விடுகிறது. எந்த உள்ளடக்கத்தில் ஆபரேஷன் செய்ய வேண்டும் என்று grep க்குத் தெரியும்.

அடுத்த கட்டளைக்கு ஸ்டேடர் மற்றும் ஸ்டட்அவுட் இரண்டையும் குழாய் செய்ய விரும்பினால், அதற்குப் பிறகு | & ஐப் பயன்படுத்தவும்.

$வெளியே எறிந்தார்வணக்கம் உலகம்| & பூனை

$எதையும்| & பூனை

நீரோடைகளை திருப்பிவிடுகிறது

இந்த ஸ்ட்ரீம்கள் எவ்வாறு செயல்படுகின்றன என்பது இப்போது எங்களுக்குத் தெரியும், நீங்கள் அவற்றை எவ்வாறு திருப்பிவிடலாம் என்பதைப் பார்ப்போம். பைப்பிங் என்பது திசைமாற்றத்தின் ஒரு வடிவம். இருப்பினும், இது stdin மற்றும் stdout ஐ மட்டுமே உள்ளடக்கியது. பாஷ் மூன்று ஸ்ட்ரீம்களிலும் குறிப்பிட்ட கட்டுப்பாட்டை அனுமதிக்கிறது.

Stdout உள்ளடக்கத்தை ஒரு கோப்பிற்கு திருப்பிவிட, இலக்கு கோப்பு பெயரைத் தொடர்ந்து> கோணத்தைச் சேர்க்கவும்.

$வெளியே எறிந்தார்வணக்கம் உலகம்>வணக்கம். உரை

இங்கே, எதிரொலி கட்டளையின் வெளியீடு hello.txt கோப்பில் சேமிக்கப்படும்.

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

$வெளியே எறிந்தார் 'வணக்கம் உலகம்' >>வணக்கம். உரை

ஸ்டடினின் குறிக்கோள் உள்ளீட்டில் வேலை செய்வதாகும். இதையும் திருப்பி விடலாம். உதாரணமாக, விசைப்பலகையிலிருந்து உள்ளீட்டை தட்டச்சு செய்வதற்கு பதிலாக, அதை ஒரு கோப்பிலிருந்து ஏற்றலாம்.

இந்த கட்டளையில், பூனை அதன் உள்ளீட்டை நேரடியாக hello.txt கோப்பிலிருந்து எடுக்கும்.

$பூனை <வணக்கம். உரை

வேறு உதாரணத்துடன் வழிமாற்றைப் பார்ப்போம். இந்த நேரத்தில், இது ஒரு பைதான் ஸ்கிரிப்டை உள்ளடக்கியது.

$# pyin.py
$ பெயர்= உள்ளீடு('பெயரை உள்ளிடுக n')
$மின்னஞ்சல் = உள்ளீடு('மின்னஞ்சலை உள்ளிடவும் n')
$அச்சு('உங்கள் பெயர் %s மற்றும் மின்னஞ்சல் %s'%(பெயர், மின்னஞ்சல்))

ஸ்கிரிப்டுக்கான உள்ளீடு hello.txt இல் அமைந்துள்ளது.

$பூனைவணக்கம். உரை

ஸ்கிரிப்டுக்கு உள்ளீடாக கோப்பை அனுப்புவோம்.

$ பைதான் 3 பைன்.பை <வணக்கம்.txt

சுவாரஸ்யமாக, நீங்கள் இரண்டையும் திருப்பி விடலாம் ஸ்ட்டின் மற்றும் stdout அதே கட்டளை வரியில். இங்கே, பின்வரும் கட்டளை hello.txt ஐப் பயன்படுத்தும் ஸ்ட்டின் மற்றும் அனுப்பவும் stdout ஒரு கோப்பிற்கான கட்டளை.

$ பைதான் 3 பைன்.பை <வணக்கம்.txt >வெளியீடுtxt

ஸ்டெடரை திருப்பிவிடுவது ஸ்டட்அவுட்டைப் போன்றது. இருப்பினும், ஸ்டெடரைக் குறிக்க நீங்கள் ஐடி 2 விளக்கத்தைக் குறிப்பிட வேண்டும். இல்லையெனில், அது stdout ஐப் பயன்படுத்தும்.

இங்கே, நான் உள்ளடக்கத்தை திருப்பி விடுகிறேன் stderr ஒரு உரை கோப்புக்கு.

$எதையும்2>பிழை. உரை

Stdout மற்றும் Stderr ஐ திருப்பிவிடுகிறது

ஆம், இரண்டையும் ஒரே நேரத்தில் திருப்பிவிட முடியும். திசைதிருப்புவதற்கு முன் விளக்கம் ஐடி 1 மற்றும் 2 ஐ குறிப்பிட வேண்டியது உங்களுக்கு தேவையானது.

$வெளியே எறிந்தார்வணக்கம் உலகம்1>வெளியீடு.லாக்2>பிழைதிருத்தம். வலைப்பதிவு

இறுதி எண்ணங்கள்

ஸ்ட்டின் , stdout , மற்றும் stderr இயல்பாகவே அற்புதமான அம்சங்கள் பேஷ் சலுகைகள். நீங்கள் பேஷ் ஸ்கிரிப்டிங்கில் இருந்தால், அவற்றைப் பயன்படுத்துவது தந்திரமான சூழ்நிலைகளில் நம்பமுடியாத அளவிற்கு பயனுள்ளதாக இருக்கும்.

பாஷ் ஸ்கிரிப்டிங் பற்றி மேலும் அறிய வேண்டுமா? இத்துடன் ஆரம்பிக்கலாம் பாஷ் ஸ்கிரிப்டிங்கிற்கான தொடக்க வழிகாட்டி !

மகிழுங்கள்!