Answers:
මෙම >ක්රියාකරු ගොනුවකට සාමාන්යයෙන් ප්රතිදානය යළි-යොමුකරයි නමුත්, එය උපාංගය වෙත විය හැක. >>එකතු කිරීමටද ඔබට භාවිතා කළ හැකිය .
ඔබ අංකයක් සඳහන් නොකරන්නේ නම් සම්මත ප්රතිදාන ප්රවාහය උපකල්පනය කෙරේ, නමුත් ඔබට දෝෂ නැවත හරවා යැවිය හැකිය:
> fileනැවත යොමු කිරීම stdout ගොනුව
1> fileවෙත යළි-යොමුවීම් stdout ගොනුව
2> fileවෙත යළි-යොමුවීම් stderr ගොනු
&> fileනැවත යොමුකිරීම් stdout සහ stderr ගොනුවට
2&1> file stdout සහ stderr ගොනුවට හරවා යවයි
/dev/nullඑය ඔබට අවශ්ය ඕනෑම ආදානයක් ගෙන එය විසි කරයි. ඕනෑම නිමැවුමක් යටපත් කිරීමට එය භාවිතා කළ හැකිය.
සටහන 2&1>පැරණි සින්ටැක්ස් එකක් වන අතර එය තවමත් ක්රියාත්මක වන අතර &>එය පැරණි පද්ධති මත ක්රියා නොකරනු ඇත.
2>&1පැරණි වාක්ය ඛණ්ඩයක් ඇති බැවින් &>වසර ගණනාවකට පෙර ක්රියා නොකරනු ඇති නමුත් දෙකම සමාන වේ.
කෙටියෙන් කිවහොත්, එය stderr( fd2) කළු කුහරය වෙත හරවා යවයි ( විධානයේ ප්රතිදානය ඉවතලයි).
යළි හරවා යැවීම සඳහා බහුලව භාවිතා වන රටාව:
command > /dev/null 2>&1 &
commandපසුබිමේ ධාවනය කරන්න , ඉවතලන්න stdoutසහstderr
command >> /path/to/log 2>&1 &
ධාවනය command, ඇතුලත් stdoutහා stderrලඝු-සටහන් ගොනුව.
Bash 4+ හි කෙටි (නමුත් අඩු කියවිය හැකි) ආකාරයක් ක්රියාකාරී වේ
command &>> /path/to/log
> /dev/null 2>&1වෙනුවට භාවිතා කිරීමට හොඳ හේතුවක් &> /dev/nullතිබේද?
&>Bash 4 හි අළුත් ය, කලින් තිබුනේ සාම්ප්රදායික ක්රමයයි, මම ඒ සඳහා පුරුදු වී සිටිමි (මතක තබා ගැනීම පහසුය).
&> /dev/nullසමහර කවච වල ක්රියා නොකරනු ඇත, නමුත්> / dev / null 2> & 1 සියලුම POSIX අනුකූල ෂෙල් වෙඩි තුළ ක්රියා කරයි.
fn>targetකොහේද, fnගොනු අංකය (0-2 සාමාන්යයෙන්, සමහර වැඩසටහන් වැඩි සංඛ්යා අර්ථ) සහ targetසාමාන්යයෙන් ගොනු නාමය නමුත් එය මෙහි තවත් filenumber වේ - නැරඹුමෙහි පුළුල &වන විට ඒ "මට ගොනු නාමයක් වෙනුවට ගොනු අංකයක් අවශ්යයි" සඳහා සින්ටැක්ස්.
/dev/nullලිනක්ස් / යුනික්ස් හි කළු කුහරයක් ලෙස සලකනු ලැබේ, එබැවින් ඔබට මේ සඳහා ඕනෑම දෙයක් දැමිය හැකි නමුත් ඔබට එය නැවත ලබා ගත නොහැක /dev/null.
තව දුරටත්, 2>එයින් අදහස් වන්නේ ඔබ (එනම් >) stderr (එනම් 2) කළු කුහරයට (එනම් /dev/null) හරවා යවන බවයි.
ඔබේ විධානය:
grep -i 'abc' content 2>/dev/null
මේ වගේ තවත් ඉදිරි කප්පාදුවකින් අවසන් කිරීමට උත්සාහ නොකරන්න - 2>/dev/null/(එය නාමාවලියක් නොවේ).
grep -i 'abc' අන්තර්ගතය මඟින් ඕනෑම දෝෂයක් ඇතුළුව ඔබේ කොන්සෝලයෙහි දර්ශනය වන ප්රතිදානය ජනනය කරනු ඇත.
නියම 2>/dev/nullකිරීමෙන් දෝෂ පෙරහන් වන අතර එමඟින් ඒවා ඔබේ කොන්සෝලය වෙත ප්රතිදානය නොවනු ඇත.
වඩාත් විස්තරාත්මකව: 2 මඟින් දෝෂ විස්තර කරන්නා නිරූපණය කරයි, එහිදී දෝෂ ලියා ඇත. පෙරනිමියෙන් ඒවා කොන්සෝලය මත මුද්රණය වේ.
\> මෙම අවස්ථාවේදී ප්රතිදානය නිශ්චිත ස්ථානයට හරවා යවයි /dev/null
/dev/null ඔබ නොසලකා හැරීමට අවශ්ය ප්රතිදානය යවන සම්මත ලිනක්ස් උපාංගය වේ.
මුලින්ම අපි >ක්රියාකරු ගැන කතා කළ යුතුයි . එය සංකේතයේ වමේ ප්රතිදානය සංකේතයේ දකුණට හරවා යවයි.
එබැවින් එය මෙසේ සිතිය යුතුය:
source_command> target_file
අප දැනගත යුතු වෙනත් දේවල්
0 means stdin
1 means stdout(useful output)
2 means stderr(error message output)
ලෙස ප්රකෘති , එය ක්රියාcommand 1 > target_file
ලෙස /dev/null-> එය ඊට ඉවත් කර දමන්නාක් නාලිකාව නිෂ්පාදනය යළි-යොමුවීම් බව විශේෂ ගොනුවකි.
එබැවින් ඔබේ ප්රශ්නයේ තේරුම එයයි
විධානය ක්රියාත්මක කර දෝෂ පණිවිඩ මට නොපෙන්වන්න , ඒවා ඉවතලන්න .
> /dev/null 2>&1සහ&> /dev/null