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

Redirect Stdout Stderr File



நீங்கள் ஒரு கட்டளை வெளியீட்டை ஒரு கோப்பிற்கு திருப்பி விடும்போது, ​​பிழை செய்திகள் முனைய சாளரத்தில் அச்சிடப்படுவதை நீங்கள் கவனிப்பீர்கள். பாஷ் போன்ற எந்த லினக்ஸ் ஷெல்லிலும் செயல்படுத்தப்படும் எந்த கட்டளையும் மூன்று வழக்கமான I/O ஸ்ட்ரீம்களைப் பயன்படுத்துகிறது. ஒவ்வொரு ஸ்ட்ரீமையும் குறிக்க ஒரு எண் கோப்பு விளக்கம் பயன்படுத்தப்படுகிறது.

  • நிலையான உள்ளீட்டு ஸ்ட்ரீம் (stdin): 0
  • நிலையான வெளியீட்டு ஸ்ட்ரீம் (stdout): 1
  • நிலையான பிழை ஸ்ட்ரீம் (stderr): 2

இந்த இடுகையில், stdout மற்றும் stderr கோப்புகளுக்கு திருப்பி விடப்படும் தகவலைப் புரிந்துகொள்வோம்.







நிலையான வெளியீடு (stdout):

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



நிலையான பிழை (stderr):

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



Stdout மற்றும் stderr ஐ ஒரு கோப்பிற்கு திருப்பிவிடுகிறது:

திசைமாற்றம் என்பது ஒரு நிரல் வெளியீட்டைப் பிடித்து மற்றொரு கட்டளை அல்லது கோப்புக்கு உள்ளீடாக அனுப்பும் முறையாகும். I/O ஸ்ட்ரீம்களை n> ஆபரேட்டரைப் பயன்படுத்துவதன் மூலம் திருப்பிவிட முடியும், அங்கு n என்பது கோப்பு விளக்க எண். Stdout ஐ திசை திருப்புவதற்கு, நாங்கள் 1> ஐப் பயன்படுத்துகிறோம், மேலும் stderr க்கு, 2> ஒரு ஆபரேட்டராக சேர்க்கப்படுகிறது.





எங்கள் தற்போதைய கோப்பகத்தில் திசைதிருப்பப்பட்ட வெளியீட்டை சேமிக்க மாதிரி. Txt என்ற கோப்பை உருவாக்கியுள்ளோம்.



(கட்டளை> கோப்பு) கிளாசிக் திசைதிருப்பு ஆபரேட்டராகக் கருதப்படுகிறது, இது முனையத்தில் காட்டப்பட்டுள்ள நிலையான பிழையுடன் நிலையான வெளியீட்டை மட்டுமே திருப்பி விடுகிறது. ஸ்டெடரை திருப்பிவிட பல்வேறு விருப்பங்களை நாங்கள் காண்பிப்போம்.

ஸ்டெடர் மற்றும் ஸ்டட்அவுட்டை தனி கோப்புகளுக்கு திருப்பிவிடுகிறது:

கீழே stdout மற்றும் stderr ஐ கோப்புகளை பிரிக்க திசை திருப்புவதற்கான கட்டளை தொடரியல் உள்ளது.

கட்டளை >வெளியே2>பிழை

கீழே கொடுக்கப்பட்டுள்ள கட்டளை வெளியீட்டை அவுட் கோப்பிற்கும் மற்றும் பிழை செய்திகளை பிழை கோப்பிற்கும் திருப்பிவிடும்.

$பூனைமாதிரி. txt>வெளியே2>பிழை

Stderr ஐ stdout க்கு திருப்பிவிடுகிறது:

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

கட்டளை >வெளியே2> &1$ls >மாதிரி கோப்பு. txt2> &1

$பூனைமாதிரி கோப்பு. txt

> அவுட் திசைமாற்றங்கள் stdout ஐ സാമ്പில்ஃபைல். txt க்கு திருப்பி விடுகிறது, மேலும் 2> & 1 stdr இன் தற்போதைய இடத்திற்கு stderr ஐ திருப்பிவிடும்.

Stderr முதலில் stdout க்கு திருப்பி விடப்பட்டால், கீழே கொடுக்கப்பட்டுள்ள கட்டளையைப் பயன்படுத்தி stdout ஐ ஒரு கோப்பிற்கு திருப்பி விடவும்.

கட்டளை 2> &1 > கோப்பு$ls -க்கு 2> &1 >மாதிரி கோப்பு. txt

$பூனைமாதிரி கோப்பு. txt

2> & 1 செய்யும் அதே செயல்பாட்டிற்கும் &> பயன்படுத்தப்படுகிறது.

கட்டளை &> கோப்பு$ls &>மாதிரி கோப்பு. txt

$பூனைமாதிரி கோப்பு. txt

Stdout மற்றும் stderr ஐ ஒரு கோப்பிற்கு திருப்பிவிடுகிறது:

அனைத்து குண்டுகளும் இந்த படிவத்தின் திசைமாற்றத்தை ஆதரிக்கவில்லை, ஆனால் பாஷ் மற்றும் Zsh அதை ஆதரிக்கின்றன. பின்வரும் தொடரியல் பயன்படுத்தி Stdout மற்றும் stderr ஐ திருப்பிவிட முடியும்.

கட்டளை &>வெளியே$பூனைமாதிரி. txt&>வெளியே

கட்டுரையின் வரவிருக்கும் பிரிவில், stdout மற்றும் stderr திசைதிருப்பலுக்கான தனி உதாரணத்தைப் பார்ப்போம்.

ஒரு கோப்பிற்கு stdout ஐ திருப்பிவிடுகிறது:

நிலையான வெளியீடு கோப்பு விளக்க எண்களின் பட்டியலில் 1 ஆல் குறிப்பிடப்படுகிறது. எந்த கோப்பு விளக்க எண் இல்லாமல் கட்டளைக்கு திசைமாற்றம் செய்ய, முனையம் அதன் மதிப்பை 1 ஆக அமைக்கிறது.

கட்டளை > கோப்பு

Ls -al கட்டளையின் நிலையான வெளியீட்டைச் சேமிக்க மாதிரி. கோப்பைப் பயன்படுத்துகிறோம்

$ls -க்கு >மாதிரி. txt

$பூனைமாதிரி. txt

கட்டளை 1> கோப்பு$ls 1>மாதிரி. txt

$பூனைமாதிரி. txt

ஸ்டெடர்ரை ஒரு கோப்பிற்கு திருப்பிவிடுகிறது:

ஸ்டேடரை ஒரு கோப்பிற்கு திருப்பிவிட 2> ஆபரேட்டரைப் பயன்படுத்தவும்.

கட்டளை 2> கோப்பு $ls -க்கு 2>மாதிரி. txt

ஒரே திசைதிருப்பு கட்டளையில் stderr மற்றும் stdout க்கான மரணதண்டனையை நாம் இணைக்கலாம்.

கட்டளை 2>பிழை. உரை1>வெளியீடு

கீழே கொடுக்கப்பட்டுள்ள எடுத்துக்காட்டில், பிழை செய்திகள் error.txt இல் சேமிக்கப்படும், அங்கு output.txt அதன் நிலையான வெளியீடு ls கட்டளையைக் கொண்டிருக்கும்.

$ls 2>பிழை. உரை1>வெளியீடு

$பூனைவெளியீடு

முடிவுரை:

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