බෑෂ්: “> |” කරන්න?


152

මෙය ලියා ඇති බව මම දැක ඇත්තෙමි;

$ some-command >| /tmp/output.txt

සිරස් පයිප්ප සම්මත යළි-යොමුවීම් වලදී භාවිතා කරනුයේ එක් විධානයක ප්‍රතිදානය තවත් නලයකට “පයිප්ප” කිරීමෙනි, >|ඇත්ත වශයෙන්ම එය සම්පූර්ණයෙන්ම නිෂ් >less ලද?



Answers:


229

එය >නිෂ් less ල නොවේ - එය සරල යළි-යොමුවීමේ ක්‍රියාකරුගේ විශේෂිත ආකාරයකි (සහ, සමහර විට ව්‍යාකූල ලෙස, පයිප්ප සමඟ කිසිදු සම්බන්ධයක් නැත). bashසහ අනෙකුත් බොහෝ නූතන ෂෙල් වෙඩි සඳහා විකල්පයක් ඇත noclobber, එමඟින් දැනටමත් පවතින ගොනුවක් නැවත ලිවීම හෝ විනාශ කිරීම වළක්වාලීම වළක්වයි. උදාහරණයක් ලෙස, noclobberසත්‍ය නම් , සහ ගොනුව /tmp/output.txtදැනටමත් පවතී නම්, මෙය අසමත් විය යුතුය:

$ some-command > /tmp/output.txt

කෙසේ වෙතත්, ඔබට යළි-යොමුවීම් ක්‍රියාකරු noclobberසමඟ සැකසුම පැහැදිලිවම අභිබවා යා හැකිය >|- නැවත හරවා යැවීම noclobberසකසා තිබුණද, ක්‍රියා කරයි.

noclobberඔබගේ වර්තමාන පරිසරය තුළ සකසා ඇත්දැයි ඔබට සොයාගත හැකිය set -o.

Note තිහාසික සටහන සඳහා, "නොක්ලොබර්" විකල්පය සහ එහි බයිපාස් විශේෂාංග දෙකම csh(70 දශකයේ අග භාගයේ සිට ) පැමිණේ . kshඑය පිටපත් කරන ලදි (80 දශකයේ මුල්) නමුත් >|ඒ වෙනුවට භාවිතා කරන ලදි >!. POSIX විසින් kshවාක්‍ය ඛණ්ඩය නියම කර ඇත (එබැවින් සමහර පද්ධතිවල sh ලෙස භාවිතා කරන බෑෂ්, අළු අළු ව්‍යුත්පන්නයන් ඇතුළු සියලුම POSIX කවච එයට සහාය දක්වයි). Zsh සින්ටැක්ස් දෙකටම සහය දක්වයි. මම හිතන්නේ නැහැ එය කිසිම බෝර්න් ෂෙල් ප්‍රභේදයකට එකතු කර ඇති නමුත් මම වැරදියි.


3
chsch - ඔබේ note තිහාසික සටහන නැවත ලබා ගන්න (අමතර තොරතුරු වලට ස්තූතියි, btw) - 2002 මැයි මාසයේ සිට FreeBSD shසතුව ඇත noclobber.
D_Bye
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.