మీరు ఏదైనా కమాండ్ అవుట్పుట్ను ఫైల్కి మళ్లించినప్పుడు, టెర్మినల్ విండోలో దోష సందేశాలు ముద్రించబడతాయని మీరు గమనించవచ్చు. బాష్ వంటి ఏదైనా లైనక్స్ షెల్లో అమలు చేయబడిన ఏదైనా కమాండ్ మూడు సాధారణ I/O స్ట్రీమ్లను ఉపయోగిస్తుంది. ప్రతి స్ట్రీమ్ను సూచించడానికి సంఖ్యాత్మక ఫైల్ డిస్క్రిప్టర్ ఉపయోగించబడుతుంది.
- ప్రామాణిక ఇన్పుట్ స్ట్రీమ్ (stdin): 0
- ప్రామాణిక అవుట్పుట్ స్ట్రీమ్ (stdout): 1
- ప్రామాణిక లోపం స్ట్రీమ్ (stderr): 2
ఈ పోస్ట్లో, stdout మరియు stderr ఫైల్కి దారి మళ్లించడం కింద వచ్చే సమాచారాన్ని మేము గ్రహిస్తాము.
ప్రామాణిక అవుట్పుట్ (stdout):
Linux ఆధారంగా ప్రతి ఆపరేటింగ్ సిస్టమ్ అమలు చేయబడిన ఆదేశం కోసం డిఫాల్ట్ ప్లేస్ని నిర్ధారణ చేస్తుంది. ప్రతిఒక్కరూ ఈ భావనను సులభతరం చేయడానికి stdout లేదా ప్రామాణిక అవుట్పుట్గా సూచిస్తారు. మీ బాష్ లేదా Zsh షెల్ డిఫాల్ట్ అవుట్పుట్ లొకేషన్ కోసం నిరంతరం వెతుకుతోంది. షెల్ కొత్త అవుట్పుట్ను గుర్తించినప్పుడు, మీరు దానిని చూడటానికి టెర్మినల్ స్క్రీన్లో ప్రదర్శిస్తుంది. లేకపోతే, అది డిఫాల్ట్ స్థానానికి అవుట్పుట్ను పంపుతుంది.
ప్రామాణిక లోపం (stderr):
ప్రామాణిక లోపం లేదా stderr ప్రామాణిక ఇన్పుట్ మరియు అవుట్పుట్తో సమానంగా ఉంటుంది, అయితే ఇది దోష సందేశాలను నిల్వ చేయడానికి ఉపయోగించబడుతుంది. ప్రామాణిక లోపాన్ని టెర్మినల్ ఉపయోగించి కమాండ్ లైన్ లేదా ఫైల్కి మళ్ళించవచ్చు. మీరు మెసేజ్లను ప్రత్యేక లాగ్ ఫైల్లో రికార్డ్ చేయాలనుకుంటే లేదా స్టోర్ చేయాలనుకుంటే లేదా ఎర్రర్ మెసేజ్లను దాచాలనుకుంటే, స్టెడర్ను దారి మళ్లించడం మీకు సహాయపడుతుంది. ఇప్పుడు stdout మరియు stderr దారి మళ్లింపు యొక్క ప్రాక్టికల్ వైపుకు వెళ్దాం.
Stdout మరియు stderr ని ఫైల్కి మళ్లిస్తోంది:
రీడైరక్షన్ అనేది ప్రోగ్రామ్ అవుట్పుట్ను సంగ్రహించి, దానిని మరొక కమాండ్ లేదా ఫైల్కు ఇన్పుట్గా పంపే పద్ధతి. N/ఆపరేటర్ను ఉపయోగంలో ఉంచడం ద్వారా I/O స్ట్రీమ్లను దారి మళ్లించవచ్చు, ఇక్కడ n అనేది ఫైల్ డిస్క్రిప్టర్ సంఖ్య. Stdout దారి మళ్లించడానికి, మేము 1> ని ఉపయోగిస్తాము మరియు stderr కోసం, 2> ఒక ఆపరేటర్గా జోడించబడుతుంది.
మా ప్రస్తుత డైరెక్టరీలో రీడైరెక్ట్ అవుట్పుట్ను నిల్వ చేయడానికి నమూనా.txt అనే ఫైల్ను సృష్టించాము.
(కమాండ్> ఫైల్) క్లాసిక్ రీడైరక్షన్ ఆపరేటర్గా పరిగణించబడుతుంది, ఇది టెర్మినల్లో చూపిన ప్రామాణిక లోపంతో ప్రామాణిక అవుట్పుట్ను మాత్రమే దారి మళ్లిస్తుంది. స్టెడర్ని కూడా దారి మళ్లించడానికి మేము విభిన్న ఎంపికలను ప్రదర్శిస్తాము.
ఫైల్లను వేరు చేయడానికి stderr మరియు stdout మళ్ళిస్తోంది:
ఫైల్లను వేరు చేయడానికి stdout మరియు stderr ని మళ్లించడానికి కమాండ్ సింటాక్స్ క్రింద ఉంది.
కమాండ్ >బయటకు2>లోపందిగువ ఇచ్చిన ఆదేశం అవుట్పుట్ను అవుట్ ఫైల్కి మరియు ఎర్రర్ మెసేజ్లను ఎర్రర్ ఫైల్కి మళ్ళిస్తుంది.
$పిల్లినమూనా. టెక్స్ట్>బయటకు2>లోపం
Stderr ని stdout కి మళ్ళిస్తోంది:
ప్రతిదీ ఒకే ఫైల్లో నిల్వ చేయడానికి ప్రోగ్రామ్ యొక్క ప్రామాణిక అవుట్పుట్తో స్టెడర్ను దారి మళ్లించడం సాధారణ పద్ధతి. Stderr ని stdout కి మళ్లించడానికి కమాండ్ సింటాక్స్ ఇక్కడ ఉంది:
కమాండ్ >బయటకు2> &1$ls >மாதிரிఫైల్. టెక్స్ట్2> &1$పిల్లిமாதிரிఫైల్. టెక్స్ట్
> అవుట్ దారి మళ్లింపులు stdout ని నమూనాfile.txt కి దారి మళ్లించాయి, మరియు 2> & 1 stdrt stdout ప్రస్తుత స్థానానికి మళ్ళిస్తుంది.
Stderr ముందుగా stdout కి మళ్ళించబడితే, stdout ని ఫైల్కి మళ్ళించడానికి దిగువ ఇచ్చిన ఆదేశాన్ని ఉపయోగించండి.
కమాండ్ 2> &1 > ఫైల్$ls -కు 2> &1 >மாதிரிఫైల్. టెక్స్ట్$పిల్లిமாதிரிఫైల్. టెక్స్ట్
2> & 1 చేసే అదే కార్యాచరణకు &> కూడా ఉపయోగించబడుతుంది.
కమాండ్ &> ఫైల్$ls &>மாதிரிఫైల్. టెక్స్ట్$పిల్లిமாதிரிఫైల్. టెక్స్ట్
Stdout మరియు stderr ని ఒకే ఫైల్కి మళ్ళిస్తోంది:
అన్ని షెల్లు ఈ ఫారమ్ మళ్లింపుకు మద్దతు ఇవ్వవు, కానీ బాష్ మరియు Zsh మద్దతు ఇస్తాయి. కింది వాక్యనిర్మాణాన్ని ఉపయోగించడం ద్వారా Stdout మరియు stderr మళ్ళించబడతాయి.
కమాండ్ &>బయటకు$పిల్లినమూనా. టెక్స్ట్&>బయటకు
కథనం యొక్క రాబోయే విభాగంలో, మేము stdout మరియు stderr దారి మళ్లింపు కోసం ప్రత్యేక ఉదాహరణను పరిశీలిస్తాము.
స్టడ్అవుట్ను ఫైల్కి మళ్ళిస్తోంది:
ప్రామాణిక అవుట్పుట్ ఫైల్ డిస్క్రిప్టర్ సంఖ్యల జాబితాలో 1 ద్వారా సూచించబడుతుంది. ఏ ఫైల్ డిస్క్రిప్టర్ నంబర్ లేకుండా ఆదేశం కోసం దారిమార్పు కోసం, టెర్మినల్ దాని విలువను 1 కి సెట్ చేసింది. స్టడ్అవుట్ను ఫైల్కి మళ్లించడానికి వాక్యనిర్మాణం క్రింది విధంగా ఇవ్వబడింది:
కమాండ్ > ఫైల్Ls -al ఆదేశం యొక్క ప్రామాణిక అవుట్పుట్ను నిల్వ చేయడానికి మేము నమూనా.ఫైల్ను ఉపయోగిస్తున్నాము
$ls -కు >నమూనా. టెక్స్ట్$పిల్లినమూనా. టెక్స్ట్
కమాండ్ 1> ఫైల్$ls 1>నమూనా. టెక్స్ట్
$పిల్లినమూనా. టెక్స్ట్
Stderr ని ఫైల్కి దారి మళ్లిస్తోంది:
Stderr ని ఫైల్కి మళ్లించడానికి 2> ఆపరేటర్ని ఉపయోగించండి.
కమాండ్ 2> ఫైల్ $ls -కు 2>నమూనా. టెక్స్ట్
మేము ఒకే దారి మళ్లింపు ఆదేశంలో stderr మరియు stdout కోసం అమలును కలపవచ్చు.
కమాండ్ 2>error.txt1>అవుట్పుట్. txtదిగువ ఇచ్చిన ఉదాహరణలో, దోష సందేశాలు error.txt లో నిల్వ చేయబడతాయి, ఇక్కడ అవుట్పుట్. Txt దాని ప్రామాణిక అవుట్పుట్ ls కమాండ్ కలిగి ఉంటుంది.
$ls 2>error.txt1>అవుట్పుట్. txt$పిల్లిఅవుట్పుట్. txt
ముగింపు:
లైనక్స్ టెర్మినల్లో పనిచేసేటప్పుడు I/O స్ట్రీమ్ల కోసం దారి మళ్లింపు మరియు ఫైల్ డిస్క్రిప్టర్లను కలిగి ఉండటం చాలా విలువైనది. ఈ పోస్ట్లో, మేము stdout మరియు stderr తో సహా సాధారణ I/O స్ట్రీమ్ల గురించి మాట్లాడాము. ఈ పోస్ట్లోని మొదటి విభాగం మీకు మళ్లింపు, I/O స్ట్రీమ్లు మరియు న్యూమరిక్ ఫైల్ డిస్క్రిప్టర్ గురించి వివరణాత్మక సమాచారాన్ని అందిస్తుంది. తరువాత, మీరు వివిధ రకాల stdout మరియు stderr దారి మళ్లింపు కోసం ఆచరణాత్మక ఉదాహరణను చూశారు.