Answers:
පසුබිම සඳහා:
මුලින්ම අපි මේවායේ ක්රියාකාරිත්වය විසඳා ගනිමු. යොමුව සඳහා උසස් බෑෂ්-ස්ක්රිප්ටින් මාර්ගෝපදේශය බලන්න .
2>&-
මෙහි සාමාන්ය ස්වරූපය නම් M>&-
, “M” යනු ගොනු විස්තර අංකයකි. මෙය කුමන ගොනු විස්තර කරන්නෙකු සඳහා යොමු කර ඇත්ද, එනම් "එම්" සඳහා ප්රතිදානය වසා දමයි .
2>/dev/null
මෙහි සාමාන්ය ස්වරූපය නම් M>/dev/null
, “M” යනු ගොනු විස්තර අංකයකි. මෙය "M" යන ගොනු විස්තරය වෙත හරවා යවනු /dev/null
ඇත.
2>&1
මෙහි සාමාන්ය ස්වරූපය නම් M>&N
, “M” සහ “N” යනු ගොනු විස්තර සංඛ්යා වේ. එය "M" සහ "N" යන ගොනු විස්තර කරුවන්ගේ ප්රතිදානය තනි ප්රවාහයකට ඒකාබද්ධ කරයි .
|&
මෙය කෙටි යෙදුමකි 2>&1 |
. එය Bash 4 හි එකතු කරන ලදී.
&>/dev/null
මෙය කෙටි යෙදුමකි >/dev/null 2>&1
. එය ගොනු විස්තර 2 (STDERR) සහ විස්තර 1 (STDOUT) වෙත හරවා යවයි /dev/null
.
>/dev/null
මෙය කෙටි යෙදුමකි 1>/dev/null
. එය ගොනු විස්තර 1 (STDOUT) වෙත හරවා යවයි /dev/null
.
මම පිටත csh
හා වෙනත් ෂෙල් වෙඩි සමඟ ගනුදෙනු කර නැත tcsh
. බාෂ්ගේ යළි-යොමුවීම් ක්රියාකරුවන් හා සසඳන විට එම 2 දෙනා සමඟ මගේ අත්දැකීම නම්, ඒ සම්බන්ධයෙන් බාෂ් වඩා උසස් බවයි. වැඩි විස්තර සඳහා tcsh man පිටුව බලන්න.
කිසිවක් ගැන ඔබ විමසූ විධානයන්ගෙන් csh / tcsh සෘජුවම සහාය නොදක්වයි. සමාන කාර්යයන් තැනීම සඳහා ඔබට විවිධ සින්ටැක්ස් භාවිතා කිරීමට සිදුවේ.
2>&-
එදිරිව එදිරිව සමහරක් නොමැත 2>/dev/null
(සමහර "දුර්වල" ලිඛිත වැඩසටහන් 2>&-
නිවැරදිව අවතක්සේරු නොකරයි )?
&>
විය bash
(ජනපි්රය වනු ගැනීමට අපහසු වුවත් එය වෙනස් දෙයක්, එහි තේරුම ලෙස Bourne හා POSIX ගැළපුම හා විරාම) ආරම්භයේ සිට. >&
සහ |&
පැමිණෙන්න (t)csh
(සහ එය stderr හරවා යැවීමට ඇති එකම ක්රමයයි). ඔවුන් zsh
මුල සිටම සිටි අතර මෑතකදී පමණක් එකතු කර bash
ඇත. rc
වඩා හොඳින් සැලසුම් කරන ලද ක්රියාකරුවන් සඳහාද බලන්න .
(+2-2=0)
. දැන්, සංස්කරණ කොටසට, මම බොහෝ දේ සංස්කරණය නොකරමි, නමුත් මේ අවස්ථාවේ දී මම එසේ කරමි, මන්ද එය මෙහෙයුමෙන් පසු දත්ත පවතින බව පැහැදිලි කරයි N
. මම ඔබට පිළිතුරු කියවා ඇති අතර එය සෑම අංශයකින්ම ඉතා හොඳයි. මේ කුඩා අවිනිශ්චිතතාවයෙන් මා සිතුවේ, ඒ නිසාම සංස්කරණය. නමුත් හරි, ඔබට අවශ්ය පරිදි එය නැවත එකතු කිරීමට හෝ ප්රතික්ෂේප කිරීමට නිදහස් වන්න. කාරණය පැහැදිලි කළ හැකි යැයි මම බලාපොරොත්තු වෙමි. හොඳ වැඩ දිගටම කරගෙන යන්න.
මෙය STDERR සහ STDOUT යළි හරවා යැවීම සඳහා ය:
2>/dev/null
STDERR / dev / null වෙත හරවා යවන්න (කොන්සෝලයෙහි දර්ශනය වීම වළක්වන්න)
|&
STPERR සහ STDOUT පයිප්ප විධාන STDIN වෙත හරවන්න (cmd1 | & cmd2)
&>/dev/null
STDERR සහ STDOUT යන දෙකම / dev / null වෙත හරවන්න (කොන්සෝලයෙහි කිසිවක් නොපෙන්වයි)
>/dev/null
STDOUT / dev / null වෙත හරවන්න (කොන්සෝලයේ STDERR පමණක් පෙන්වයි)
2>&-
නැවත හරවා යැවීම සමඟ භාවිතා කරන ගොනු විස්තරයක් වැසීම සඳහා වේ
මේ සියල්ල බෝර්න් ෂෙල් සඳහා සම්මත යළි හරවා යැවීමේ ක්රම වේ.
|&
හා &>/dev/null
ය නොවන අතේ ගෙන යා හැකි.
මෙය තෝරාගත් පිළිතුරට අතිරේකයක් ලෙස සලකන්න. POSIX යනු කුමක්ද සහ නැති ආකෘති මොනවාදැයි දැන ගැනීමට ඔබට අවශ්ය විය හැකිය.
POSIX ආකෘති දෙකක් සම්බන්ධ වේ:
2.7.2 ප්රතිදානය හරවා යැවීම
ප්රතිදානය හරවා යැවීම සඳහා වන පොදු ආකෘති දෙක නම්:
[n]> වචනය
[n]> | වචනය
විකල්ප n මඟින් ගොනු විස්තර අංකය නිරූපණය කරයි. අංකය මඟ හැරී ඇත්නම්, යළි හරවා යැවීම සම්මත ප්රතිදානය වෙත යොමු වේ (ගොනු විස්තර 1).
Noclobber විකල්පය සකසා ඇත්නම් (> set -C හි විස්තරය බලන්න) සහ වචනයේ ප්රසාරණයෙන් නම් කරන ලද ගොනුව පවතින අතර එය සාමාන්ය ගොනුවක් නම් '>' ආකෘතිය භාවිතා කරමින් ප්රතිදාන යළි හරවා යැවීම අසාර්ථක වේ. එසේ නොමැතිනම්, '>' හෝ "> |" භාවිතා කර යළි හරවා යැවීම වචන ප්රසාරණය වීමෙන් ප්රති results ල ලබා දෙන ගොනුව ආකෘති පත්ර මඟින් නියම කරන ලද ගොනු විස්තර කරුවන්ගේ නිමැවුම් සඳහා විවෘත කිරීමට හෝ කිසිවක් නිශ්චිතව දක්වා නොමැති නම් සම්මත ප්රතිදානය සඳහා හේතු වේ. ගොනුව නොපවතී නම්, එය නිර්මාණය වනු ඇත; එසේ නොමැති නම්, එය විවෘත කිරීමෙන් පසු හිස් ගොනුවක් ලෙස කපා දැමිය යුතුය.
-
2.7.6 නිමැවුම් ගොනු විස්තරයක් අනුපිටපත් කිරීම
යළි-යොමුවීමේ ක්රියාකරු:
[n]> සහ වචනය
එක් ප්රතිදාන ගොනු විස්තරයක් තවත් එකකින් අනුපිටපත් කළ යුතුය, නැතහොත් එකක් වසා දැමිය යුතුය. වචනය ඉලක්කම් එකක් හෝ වැඩි ගණනක් තක්සේරු කරන්නේ නම්, n මගින් දැක්වෙන ගොනු විස්තර කරන්නා හෝ n නිශ්චිතව දක්වා නොමැති නම් සම්මත ප්රතිදානය, වචනයෙන් දැක්වෙන ගොනු විස්තර කරන්නාගේ පිටපතක් බවට පත් කළ යුතුය; වචනයේ ඉලක්කම් ප්රතිදානය සඳහා දැනටමත් විවෘත කර ඇති ගොනු විස්තරයක් නියෝජනය නොකරන්නේ නම්, යළි-යොමුවීමේ දෝෂයක් ඇතිවේ; ෂෙල් දෝෂවල ප්රතිවිපාක බලන්න. වචනය '-' ලෙස තක්සේරු කරන්නේ නම්, ගොනු විස්තර කරන්නා n, හෝ n නිශ්චිතව දක්වා නොමැති නම් සම්මත ප්රතිදානය වසා ඇත. විවෘත නොවන ගොනු විස්තරයක් වැසීමට උත්සාහ කිරීම දෝෂයක් නොවේ. වචනය වෙනත් දෙයකට තක්සේරු කරන්නේ නම්, හැසිරීම නිශ්චිතව දක්වා නැත.
එබැවින්:
Function POSIX-compat POSIX
2>&- Yes close
2>/dev/null Yes redir
2>&1 Yes dup
|& No
&>/dev/null No
>/dev/null Yes redir
>&/dev/null ? ?dup
අන්තිම පේළිය මුල් ප්රශ්නයේ නැත, නමුත් එය පැමිණිලි රහිතව ක්රියාත්මක වේ. (එසේම / dev / tty / dev / null වෙනුවට ආදේශ කර ඇත).
&>
GNU bash ගැළපුම සඳහා mksh සහය දක්වන අතර , මෙය භාවිතා නොකිරීමට දැඩි ලෙස උනන්දු කර ඇති අතර, එය විග්රහ කිරීමෙන් දැනට පවතින POSIX ස්ක්රිප්ට් වල අර්ථ නිරූපණය බිඳ දැමිය හැකි අතර mksh දැනටමත් POSIX ප්රකාරයේදී අක්රීය කරයි.