மற்றொரு வெள்ளிக்கிழமை வரவேற்கிறோம் ...
முனையத்தின் ஒரு சிறிய பகுதியை அறிந்து கொள்ள வேண்டிய நேரம் இது. மிகவும் யோசித்த பிறகு நான் ஒரு இடுகையை உருவாக்க முடிவு செய்தேன் நிலையான நீரோடைகள்; இது மேலோட்டமாக இருக்கும் என்றாலும், இது எல்லோரும் தெரிந்து கொள்ள வேண்டிய ஒன்று என்று நான் நினைக்கிறேன்.
நிலையான ஸ்ட்ரீம்
நிலையான ஸ்ட்ரீம் இது பயனருக்கும் முனையத்திற்கும் இடையிலான பல தொடர்பு சேனல்களால் ஆனது. இந்த உள்ளீடு / வெளியீடு “சேனல்கள்” ஒரு கட்டளை செயல்படுத்தப்படும்போது தகவலைக் காண்பிக்கும் அல்லது கைப்பற்றும்.
3 I / O இணைப்புகள்: ஸ்ட்டின் நிலையான உள்ளீடு, stdout நிலையான வெளியீடு, stderr நிலையான பிழை.
stdin: நிலையான உள்ளீடு
நிலையான உள்ளீடு என்பது ஒரு கட்டளையிலிருந்து தகவல்களை குழாய்கள், திருப்பிவிடுதல், விசைப்பலகை போன்றவற்றின் மூலம் கைப்பற்றும் வழியாகும். கோப்பு விவரிப்பான் 0 உடன் அதை அடையாளம் காண்கிறோம்.
Stdin க்கு ஒரு எடுத்துக்காட்டு:
வரிசை <பட்டியல்
இது பட்டியலில் உள்ள அனைத்து தகவல்களையும் எடுக்கும் - இந்த விஷயத்தில் தோராயமாக எழுதப்பட்ட எண்கள் - மற்றும் கோப்பை ls கட்டளைக்கு திருப்பி விடும்போது, அது எண் பட்டியலை அகர வரிசைப்படி வரிசைப்படுத்துகிறது. இந்த எடுத்துக்காட்டில் கொடிகள் மறைமுகமாக உள்ளன.
stdout: நிலையான வெளியீடு
நிலையான வெளியீடு, அதன் பெயர் குறிப்பிடுவது போல, ஒரு கட்டளையின் வெளியீட்டை கன்சோல் வழியாகக் காட்டுகிறது. நாம் ls ஐ எழுதினால், அது திரையில் நமக்குக் காண்பிக்கும் அனைத்து தகவல்களும் நிலையான வெளியீடு ஆகும். இது விவரிப்பாளர் 1 ஆல் குறிப்பிடப்படுகிறது.
இப்போது நான் பாஷ் ஹஹாஹாவை நேசிப்பதால், பாஷில் எழுதப்பட்ட ஸ்கிரிப்டைக் கொண்டு stdin மற்றும் stdout ஐ நிறுவ முயற்சிக்கிறேன். 🙂
test.sh
#! / பின் / பாஷ் என்றால் [-t 0]; பின்னர் "நீங்கள் stdout ஐப் பயன்படுத்துகிறீர்கள்" elif [-t 1]; பின்னர் எதிரொலி "நீங்கள் stdin ஐப் பயன்படுத்துகிறீர்கள்" வேறு எதிரொலி "மிருகத்தனமான பிழை" fi
இப்போது ஸ்கிரிப்டை எவ்வாறு பயன்படுத்துவது என்பதை விளக்கும் ஸ்கிரீன் ஷாட். ஸ்கிரிப்ட் பயன்பாட்டுடன் ஒரு குழாயைத் திருப்பி அல்லது பயன்படுத்தும்போது சோதனை -t stdout ஸ்கிரிப்ட் மட்டுமே செயல்படுத்தப்படுகிறதா என்பதை அறிய, இல்லையென்றால் அது வெளிப்படையாக stdin.
bash test.sh ls | bash test.sh bash test.sh </ etc / passwd
கட்டளையை மாற்றியமைக்க நினைவில் வைத்துக் கொள்ளுங்கள், எனவே நீங்கள் கற்றுக்கொள்ளுங்கள்.
stderr: நிலையான பிழை
நிரல்கள் பிழைகள் அல்லது கண்டறிதல்களைக் காண்பிக்கும் வழி நிலையான பிழை. இது விவரிப்பாளர் 2 ஆல் குறிப்பிடப்படுகிறது.
கருத்தைப் புரிந்து கொள்ள, இதுதான் நிலைமை: ஒரு கட்டளையிலிருந்து ஒரு பிழையைச் சேமிக்க விரும்பும்போது, முதலில் நாம் நினைப்பது வெளியீட்டை எளிய உரைக்கு திருப்பிவிடுவது.
ls> info.txt
இது வேலை செய்யும், கட்டளை தகவல் வெற்று உரை கோப்பில் சேமிக்கப்படும். ஆனால் பிழையைச் சேமிக்கும்போது, அதை சேமிக்காது, ஆனால் அதை திரையில் காண்பிக்கும் மற்றும் எளிய உரை கோப்பு காலியாக உள்ளது.
கோப்பில் stderr ஐ சேமிக்க குறிக்க 2> ஐப் பயன்படுத்தினால்:
ls foo 2> info.txt
இப்போது அது உரை கோப்பில் பிழை தகவலை சேமிக்கும்.
பெரும்பாலானவை ஓடு &> உடன் ஒற்றை கட்டளை கட்டளையில் stderr மற்றும் stdout ஐ சேமிக்க அனுமதிக்கவும், அங்கு Foo என்பது இல்லாத கோப்பகமாகும்
ls பதிவிறக்கங்கள் Foo &> info.txt
இந்த கோப்பில் Fos இல் ls ஐ இயக்கும்போது பிழையின் தகவல்கள் இருக்கும், மேலும் பதிவிறக்கங்களின் கீழ் உள்ள கோப்பகங்களை பட்டியலிடும்.
இறுதியாக, அது என்ன பிரபலமானது 2> & 1?
எளிய, stderr ஐ stdout க்கு திருப்பி விடுங்கள். அது &> மற்றும் 1 இன் நடுவில் அது stdout க்கு திருப்பி விடப்படும் என்பதாகும். அது இல்லாவிட்டால், அது இதுபோன்றதாக இருக்கும் ... "பிழையை 1 கோப்புக்கு திருப்பி விடுங்கள்".
இதன் மூலம் திருப்பிவிட முடியும்:
- ஒரு கோப்புக்கு stdout
- ஒரு கோப்புக்கு stderr
- stdout to stderr
- stderr to stdout
- ஒரு கோப்புக்கு stderr மற்றும் stdout
- மற்றவர்கள் மத்தியில்
இன்றைய மக்களுக்கு அதுதான். நிறுத்தியதற்கு நாங்கள் படித்து நன்றி கூறுகிறோம். 😀
சுவாரஸ்யமானது. உங்கள் பயிற்சிகளுக்கு நன்றி, நான் பாஷை மிகவும் விரும்புகிறேன்.
அன்பே, சுவாரஸ்யமானது, இருப்பினும் பின்வரும் வரியில் உங்களுக்கு பிழை உள்ளது:
"கோப்பை ls கட்டளைக்கு திருப்பி விடும்போது", அது "மற்றும் கோப்பை வரிசையாக்க கட்டளைக்கு திருப்பி விடும்போது" இருக்க வேண்டும்.
ஒரு வாழ்த்து.
உரையின் தொடக்கத்தில் ஒரு பிழை உள்ளது, நீங்கள் "ls" கட்டளையை குறிக்கும்போது, அது "sort" ஆக இருக்க வேண்டும்:
The பட்டியலில் உள்ள அனைத்து தகவல்களையும் எடுத்துக் கொள்ளுங்கள்-இந்த வழக்கில் தோராயமாக எழுதப்பட்ட எண்கள்-, மற்றும் கோப்பை ls கட்டளைக்கு திருப்பி விடும்போது (இங்கே அது வரிசையாக இருக்கும்) »
உங்கள் படைப்புகளைப் பகிர்ந்தமைக்கு வாழ்த்துக்கள் மற்றும் நன்றி
இது கிரானுக்கு சிறந்தது, அங்கு வெளியீட்டை சுத்தப்படுத்த வேண்டும் (/ dev / null) ஆனால் பிழைகள் கோப்புகளில் சேமிக்கப்பட வேண்டும். மேலும், நான் இதைச் செய்யும்போது, அவை எப்போது தோல்வியுற்றன என்பதைக் குறிப்பிட தேதி கட்டளையைப் பயன்படுத்துகிறேன்.
பாஷ் (ஷ்) யுனிக்ஸ் தத்துவத்தால் உருவாக்கப்பட்ட இந்த கருவிகளைக் கொண்டுள்ளது "ஒரு காரியத்தைச் செய்யுங்கள், அதைச் சிறப்பாகச் செய்யுங்கள்"
சரி, நான் எதையும் கண்டுபிடிக்கவில்லை
ஹஹா அது நன்றாக விளக்கப்பட்டுள்ளது, உங்களுக்கு என்ன புரியவில்லை?