బాష్‌లో stdin, stderr మరియు stdout అంటే ఏమిటి

What Are Stdin Stderr



టెర్మినల్‌లో ఏదైనా ఆదేశాన్ని అమలు చేస్తున్నప్పుడు, stdin , stderr , మరియు stdout బాష్ సృష్టించే మూడు డేటా స్ట్రీమ్‌లు. మీకు కమాండ్ లైన్ గురించి తెలిస్తే, మీరు ఇప్పటికే ఈ ఫీచర్లను సద్వినియోగం చేసుకుని ఉండవచ్చు. ముఖ్యంగా, వారు ఒక ఆదేశం నుండి మరొక ఆదేశానికి పైపింగ్/డేటాను మళ్ళించడానికి అనుమతిస్తారు.

ఎలాగో చూద్దాం stdin , stderr , మరియు stdout పనిచేస్తుంది మరియు మీరు వాటిని ఎలా ఉపయోగించవచ్చు.







stdin, stdout మరియు stderr

కంప్యూటింగ్‌లో, స్ట్రీమ్ అనే పదం డేటాను బదిలీ చేయగల విషయాన్ని సూచిస్తుంది. ఇక్కడ, మూడు స్ట్రీమ్‌లు వచనాన్ని డేటాగా తీసుకువెళతాయి.



నీటి ప్రవాహాల మాదిరిగానే, డేటా స్ట్రీమ్‌లకు కూడా రెండు ఎండ్ పాయింట్‌లు ఉంటాయి. మూలం మరియు ప్రవాహం ఉన్నాయి. మీరు టెర్మినల్‌లో ఏ ఆదేశాన్ని అమలు చేస్తున్నారో అది స్ట్రీమ్ యొక్క ఇరువైపులా ఉంటుంది. స్ట్రీమ్‌ని ఉపయోగించి, మీరు రెండు టెర్మినల్ విండోలను, రెండు విభిన్న ఆదేశాలను మరియు ఫైల్‌లను కూడా కనెక్ట్ చేయవచ్చు!



ప్రత్యేక స్ట్రీమ్‌ల యొక్క శీఘ్ర విచ్ఛిన్నం చేద్దాం.





  • stdin: ప్రామాణిక ఇన్‌పుట్ కోసం నిలుస్తుంది. ఇది వచనాన్ని ఇన్‌పుట్‌గా తీసుకుంటుంది.
  • stdout: ప్రామాణిక అవుట్‌పుట్ కోసం నిలుస్తుంది. కమాండ్ యొక్క టెక్స్ట్ అవుట్‌పుట్ స్టడ్‌డౌట్ స్ట్రీమ్‌లో నిల్వ చేయబడుతుంది.
  • stderr: ప్రామాణిక లోపం కోసం నిలుస్తుంది. ఒక కమాండ్ లోపం ఎదుర్కొన్నప్పుడల్లా, దోష సందేశం ఈ స్ట్రీమ్‌లో నిల్వ చేయబడుతుంది.

Linux లో, దాదాపు అన్ని స్ట్రీమ్‌లు ఫైల్స్‌గా పరిగణించబడతాయి. మీరు ఒక ఫైల్‌ని చదవగలరు/వ్రాయగలరు, మీరు ఈ స్ట్రీమ్‌ల నుండి డేటాను చదవవచ్చు/వ్రాయవచ్చు.

ఏదైనా ఫైల్‌ను యాక్సెస్ చేయడానికి సులభమైన మార్గం దానితో అనుబంధించబడిన ప్రత్యేకమైన ఫైల్ డిస్క్రిప్టర్ నంబర్‌ని ఉపయోగించడం. ఈ స్ట్రీమ్‌ల విషయంలో, వాటిలో ప్రతిదానికి ప్రత్యేకమైన విలువలు కేటాయించబడతాయి.



  • 0: stdin
  • 1: stdout
  • 2: stderr

చర్యలో stdin, stdout మరియు stderr

చర్య ద్వారా ఈ స్ట్రీమ్‌ల గురించి మరింత తెలుసుకోవడం ద్వారా ప్రారంభిద్దాం, మేము stdin తో ప్రారంభిస్తాము.

కింది ఆదేశాన్ని అమలు చేయండి.

$చదవండి

ఆదేశానికి కీబోర్డ్ నుండి ఇన్‌పుట్ అవసరం. ఇక్కడ, చదివే సాధనం stdin నుండి ఇన్‌పుట్ పొందుతోంది. ఇప్పుడు stdout చూద్దాం.

ముందుగా ఆదేశాన్ని అమలు చేయండి.

$ls -ది

ఇక్కడ, ls కమాండ్ ప్రస్తుత డైరెక్టరీలోని ఫైల్ (ల) ను జాబితా చేస్తుంది. జాబితా పంపబడింది stdout మరియు టెర్మినల్ దానిని ప్రింట్ చేస్తుంది. ఇప్పుడు stderr ని తనిఖీ చేద్దాం.

లోపం సంభవించడానికి వివిధ మార్గాలు ఉన్నాయి. ఈ ఉదాహరణ కోసం, చెల్లని వాదనను పంపడం వల్ల లోపం ఏర్పడుతుంది.

$ls -దిఏదైనా

ఇక్కడ, ఏదైనా పేరు పెట్టబడిన ఫైల్ లేదు. అందుకే ls రిటర్న్స్ అనే సందేశం పంపబడుతుంది stderr .

పైపింగ్

ఇది stdin మరియు stdout స్ట్రీమ్‌ల పూర్తి ప్రయోజనాన్ని పొందే సాధారణ టెక్నిక్. దీనిని ఒక ఉదాహరణతో వివరిద్దాం.

$బయటకు విసిరారు 'హలో వరల్డ్' | పట్టుహలో

ఇక్కడ, ది పైపింగ్ కోసం సైన్ బాధ్యత వహిస్తుంది. అవుట్‌పుట్ బయటకు విసిరారు జనరేట్‌లలో వ్రాయబడింది stdout ప్రవాహం. అప్పుడు, పైపింగ్ అనేది స్ట్రెడ్అవుట్ యొక్క కంటెంట్‌ను grep కమాండ్ కోసం stdin కి మళ్ళిస్తుంది. ఏ కంటెంట్‌పై ఆపరేషన్ చేయాలో గ్రేప్‌కు తెలుసు.

మీరు తదుపరి ఆదేశానికి stderr మరియు stdout రెండింటినీ పైప్ చేయాలనుకుంటే, అప్పుడు | & బదులుగా ఉపయోగించండి.

$బయటకు విసిరారుహలో వరల్డ్| & పిల్లి

$ఏదైనా| & పిల్లి

స్ట్రీమ్‌లను దారి మళ్లిస్తోంది

ఇప్పుడు ఈ స్ట్రీమ్‌లు ఎలా పని చేస్తాయో మాకు తెలుసు, మీరు వాటిని ఎలా రీడైరెక్ట్ చేయవచ్చో చూద్దాం. పైపింగ్ అనేది దారి మళ్లింపు యొక్క ఒక రూపం. అయితే, ఇది stdin మరియు stdout ని మాత్రమే కలిగి ఉంటుంది. బాష్ మూడు స్ట్రీమ్‌లపై నిర్దిష్ట నియంత్రణను అనుమతిస్తుంది.

స్టడ్‌అవుట్ కంటెంట్‌ని ఫైల్‌కి మళ్లించడానికి, టార్గెట్ ఫైల్ పేరు తర్వాత> యాంగిల్‌ని జోడించండి.

$బయటకు విసిరారుహలో వరల్డ్>హలో. టెక్స్ట్

ఇక్కడ, echo కమాండ్ యొక్క అవుట్‌పుట్ hello.txt ఫైల్‌లో నిల్వ చేయబడుతుంది.

ఒకవేళ ఫైల్ ఇప్పటికే ఉనికిలో ఉన్నట్లయితే, పై ఆదేశం దాన్ని తిరిగి రాస్తుంది. దాన్ని నివారించడానికి, ఫైల్ పేరు ప్రత్యేకంగా ఉందని నిర్ధారించుకోండి. మీరు ఓవర్రైట్ చేయకూడదనుకుంటే, మీరు బదులుగా >> ఉపయోగించాలనుకోవచ్చు. ఇది లక్ష్య ఫైల్ ముగింపులో అవుట్‌పుట్‌ను జోడిస్తుంది.

$బయటకు విసిరారు 'హలో వరల్డ్' >>హలో. టెక్స్ట్

Stdin లక్ష్యం ఇన్‌పుట్‌తో పనిచేయడం. దీనిని కూడా దారి మళ్లించవచ్చు. ఉదాహరణకు, కీబోర్డ్ నుండి ఇన్‌పుట్‌ను టైప్ చేయడానికి బదులుగా, దానిని ఫైల్ నుండి లోడ్ చేయవచ్చు.

ఈ ఆదేశంలో, పిల్లి తన ఇన్‌పుట్‌ను నేరుగా hello.txt ఫైల్ నుండి తీసుకుంటుంది.

$పిల్లి <హలో. టెక్స్ట్

వేరే ఉదాహరణతో మళ్లింపును చూద్దాం. ఈసారి, ఇది పైథాన్ స్క్రిప్ట్‌ను కలిగి ఉంటుంది.

$# pyin.py
$ పేరు= ఇన్పుట్('పేరు నమోదు చేయండి n')
$ఇమెయిల్ = ఇన్పుట్('ఇమెయిల్ నమోదు చేయండి n')
$ముద్రణ('మీ పేరు %s మరియు ఇమెయిల్ %s'%(పేరు, ఇమెయిల్))

స్క్రిప్ట్ కోసం ఇన్‌పుట్ hello.txt లో ఉంది.

$పిల్లిహలో. టెక్స్ట్

స్క్రిప్ట్ కోసం ఫైల్‌ను ఇన్‌పుట్‌గా పంపుదాం.

$ పైథాన్ 3 పైన్.పై <హలో.పదము

ఆసక్తికరంగా, మీరు రెండింటినీ దారి మళ్లించవచ్చు stdin మరియు stdout అదే కమాండ్ లైన్‌లో. ఇక్కడ, కింది ఆదేశం hello.txt ని ఉపయోగిస్తుంది stdin మరియు పంపండి stdout ఫైల్‌కు ఆదేశం.

$ పైథాన్ 3 పైన్.పై <హలో.పదము >అవుట్‌పుట్పదము

Stderr దారి మళ్లించడం stdout లాగానే ఉంటుంది. అయితే, స్టెడర్‌ని సూచించడానికి మీరు వివరణ ID 2 ని పేర్కొనాలి. లేకపోతే, అది కేవలం stdout ని ఉపయోగిస్తుంది.

ఇక్కడ, నేను కంటెంట్‌ని మళ్ళిస్తాను stderr టెక్స్ట్ ఫైల్‌కు.

$ఏదైనా2>error.txt

Stdout మరియు Stderr దారి మళ్లిస్తోంది

అవును, రెండింటినీ ఒకేసారి దారి మళ్లించడం సాధ్యమవుతుంది. మీకు కావలసిందల్లా దారి మళ్లింపుకు ముందు వివరణ ID 1 మరియు 2 లను పేర్కొనడం.

$బయటకు విసిరారుహలో వరల్డ్1>అవుట్పుట్.లాగ్2>డీబగ్.లాగ్

తుది ఆలోచనలు

stdin , stdout , మరియు stderr డిఫాల్ట్‌గా అద్భుతమైన ఫీచర్‌లు బాష్ ఆఫర్లు. మీరు బాష్ స్క్రిప్టింగ్‌లో ఉంటే, వాటిని ఉపయోగించడం గమ్మత్తైన పరిస్థితుల్లో చాలా ఉపయోగకరంగా ఉంటుంది.

బాష్ స్క్రిప్టింగ్ గురించి మరింత తెలుసుకోవాలనుకుంటున్నారా? దీనితో ప్రారంభిద్దాం బాష్ స్క్రిప్టింగ్ కోసం బిగినర్స్ గైడ్ !

ఆనందించండి!