“යළි-යොමුවීම්” සහ “පයිප්ප” සමඟ සැබවින්ම සිදුවන්නේ කුමක්ද යන්න ගැන ඔබ සිතන්නේ නම් දේවල් දෘශ්යමාන කිරීම වඩා පහසුය. යළි-යොමුවීම් සහ පයිප්ප එක් දෙයක් කරයි: ක්රියාවලි ගොනු විස්තර කරන්නන් 0, 1, සහ 2 වෙත යොමු වන ස්ථානය වෙනස් කරන්න (බලන්න / proc / [pid] / fd / * බලන්න).
පයිප්පයක් විට හෝ "|" විධාන රේඛාවේ ක්රියාකරු සිටින අතර, මුලින්ම සිදුවිය යුත්තේ බාෂ් විසින් ෆිෆෝ එකක් සාදා වම් පැත්තේ විධානයේ එෆ්ඩී 1 මෙම ෆිෆෝ වෙත යොමු කර දකුණු පැත්තේ විධානයේ එෆ්ඩී 0 එකම ෆිෆෝ වෙත යොමු කිරීමයි.
ඊළඟට, එක් එක් පැත්ත සඳහා යළි-යොමුවීම් ක්රියාකරුවන් වමේ සිට දකුණට ඇගයීමට ලක් කෙරේ ලබන අතර, විස්තර කරන්නාගේ අනුපිටපතක් සිදු වූ සෑම අවස්ථාවකම වත්මන් සැකසුම් භාවිතා වේ. මෙය වැදගත් වන්නේ නළය මුලින්ම සකසා ඇති බැවින්, FD1 (වම් පැත්ත) සහ FD0 (දකුණු පැත්ත) දැනටමත් තිබූ තත්වයට වඩා දැනටමත් වෙනස් වී ඇති අතර, මේවායේ ඕනෑම අනුපිටපතක් එම කරුණ පිළිබිඹු කරයි.
එමනිසා, ඔබ පහත සඳහන් දේ ටයිප් කරන විට:
command 2>&1 >/dev/null | grep 'something'
පිළිවෙලින් සිදුවන්නේ කුමක්ද:
- පයිප්පයක් (ෆිෆෝ) සාදනු ලැබේ. "FD1 විධානය" මෙම නලයට යොමු කර ඇත. "grep FD0" ද මෙම නලයට යොමු කර ඇත
- "විධානය FD2" පෙන්වා ඇත්තේ "FD1 විධානය" දැනට පෙන්වා ඇති ස්ථානයට (නළය)
- "FD1 විධානය" / dev / null වෙත යොමු කෙරේ
එබැවින්, "විධානය" එහි FD 2 (stderr) වෙත ලියන සියලුම ප්රතිදානය පයිප්පයට යන අතර අනෙක් පැත්තෙන් "grep" මඟින් කියවනු ලැබේ. "විධානය" එහි FD 1 (stdout) වෙත ලියන සියලුම ප්රතිදානය / dev / null වෙත ගමන් කරයි.
ඒ වෙනුවට, ඔබ පහත සඳහන් දෑ ක්රියාත්මක කරයි:
command >/dev/null 2>&1 | grep 'something'
සිදුවන්නේ කුමක්ද:
- පයිප්පයක් සාදනු ලබන අතර "FD 1 විධානය" සහ "grep FD 0" ඒ වෙත යොමු කෙරේ
- "FD 1 විධානය" / dev / null වෙත යොමු කෙරේ
- "FD 2 විධානය" FD 1 දැනට පෙන්වා ඇති ස්ථානයට පෙන්වා ඇත (/ dev / null)
එබැවින්, "විධානය" වෙතින් සියලුම stdout සහ stderr / dev / null වෙත යන්න. කිසිවක් පයිප්පයට නොයන අතර තිරය මත කිසිවක් ප්රදර්ශනය නොකර "grep" වසා දමනු ඇත.
යළි-යොමුවීම් (ගොනු විස්තර කරන්නන්) කියවීමට පමණක් (<), ලිවීමට පමණක් (>) හෝ කියවීමට-ලිවීමට (<>) විය හැකි බව සලකන්න.
අවසාන සටහනක්. වැඩසටහනක් FD1 හෝ FD2 වෙත යමක් ලියන්නේද යන්න සම්පූර්ණයෙන්ම ක්රමලේඛකයා සතුය. හොඳ ක්රමලේඛන පුහුණුව මඟින් දෝෂ පණිවිඩ FD 2 හා සාමාන්ය ප්රතිදානය FD 1 වෙත යා යුතු බව නියම කරයි, නමුත් බොහෝ විට ඔබ දෙදෙනා මිශ්ර කරන හෝ සම්මුතිය නොසලකා හරින අලස වැඩසටහන් සොයා ගනු ඇත.