Answers:
මෙම >
ක්රියාකරු ගොනුවකට සාමාන්යයෙන් ප්රතිදානය යළි-යොමුකරයි නමුත්, එය උපාංගය වෙත විය හැක. >>
එකතු කිරීමටද ඔබට භාවිතා කළ හැකිය .
ඔබ අංකයක් සඳහන් නොකරන්නේ නම් සම්මත ප්රතිදාන ප්රවාහය උපකල්පනය කෙරේ, නමුත් ඔබට දෝෂ නැවත හරවා යැවිය හැකිය:
> file
නැවත යොමු කිරීම stdout ගොනුව
1> file
වෙත යළි-යොමුවීම් stdout ගොනුව
2> file
වෙත යළි-යොමුවීම් stderr ගොනු
&> file
නැවත යොමුකිරීම් stdout සහ stderr ගොනුවට
2&1> file
stdout සහ stderr ගොනුවට හරවා යවයි
/dev/null
එය ඔබට අවශ්ය ඕනෑම ආදානයක් ගෙන එය විසි කරයි. ඕනෑම නිමැවුමක් යටපත් කිරීමට එය භාවිතා කළ හැකිය.
සටහන 2&1>
පැරණි සින්ටැක්ස් එකක් වන අතර එය තවමත් ක්රියාත්මක වන අතර &>
එය පැරණි පද්ධති මත ක්රියා නොකරනු ඇත.
2>&1
පැරණි වාක්ය ඛණ්ඩයක් ඇති බැවින් &>
වසර ගණනාවකට පෙර ක්රියා නොකරනු ඇති නමුත් දෙකම සමාන වේ.
කෙටියෙන් කිවහොත්, එය stderr
( fd
2) කළු කුහරය වෙත හරවා යවයි ( විධානයේ ප්රතිදානය ඉවතලයි).
යළි හරවා යැවීම සඳහා බහුලව භාවිතා වන රටාව:
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