ගොනුවකට sudo ලෙස එකතු කරන්නේ කෙසේද?


288

මට කරන්න ඕනි:

echo "something" >> /etc/config_file

නමුත්, මෙම ගොනුවට ලිඛිත අවසරය ඇත්තේ root පරිශීලකයාට පමණක් බැවින් මට එය කළ නොහැක. නමුත් පහත සඳහන් දෑ ද ක්‍රියාත්මක නොවේ.

sudo echo "something" >> /etc/config_file

එවැනි තත්වයක් තුළ ගොනුවක් පළමුවෙන් sudoසංස්කාරකයක් සමඟ විවෘත නොකර නව අන්තර්ගතය අතින් එකතු කිරීමට ක්‍රමයක් තිබේද?


මම උබුන්ටු 9.04 භාවිතා කරන අතර මට මෙතෙක් අවශ්‍ය වූ සෑම විධානයකටම සුඩෝ භාවිතා කළ හැකිය. උප කවචයක් බිහි විය.
මැට් නොරිස්

Answers:


412

සමඟ tee -a(හෝ tee --append) භාවිතා කරන්නsudo

tee - read from standard input and write to standard output and files
[...]
   -a, --append
      append to the given FILEs, do not overwrite
[...]

එබැවින් ඔබේ විධානය බවට පත්වේ

echo "something" | sudo tee -a /etc/config_file

teeපරිපාලන අවසරයන් සහිතව බාෂ් ක්‍රියාත්මක කිරීමේ වාසි වන්නේ

  • පරිපාලන අවසරයෙන් ඔබ බාෂ් ක්‍රියාත්මක නොකරයි
  • උසස් අවසරයන් සහිතව ක්‍රියාත්මක වන්නේ 'ලිවීමට ලිපිගොනු' කොටස පමණි
  • සංකීර්ණ විධානයක් උපුටා දැක්වීම වඩා පහසුය

2
OS X ටී හි ඇත්තේ -a ධජයක් පමණි.
Lri

ඩේබියන් 8 teeහි -aඋපග්‍රන්ථ ධජය ඇත.
මැටි

12
echo "output" | sudo tee -a file > /dev/nullඔබට කොන්සෝල ප්‍රතිදානය මඟ හැරීමට අවශ්‍ය නම් භාවිතා කරන්න .
මෝෂේ බික්සෙන්ෂ්පානර්

WSL සඳහාද හොඳින් ක්‍රියා කරයි.
kayleeFrye_onDeck

51

නැවත හරවා යැවීම වත්මන් කවචයේ ක්‍රියාත්මක වේ. ඉහළ වරප්‍රසාද සහිතව යළි හරවා යැවීම සඳහා, ඔබ ඉහළ වරප්‍රසාද සහිතව කවචය ධාවනය කළ යුතුය:

sudo bash -c "somecommand >> somefile"

26

සුඩෝ උප කවචයක් ඇති කරන්න:

sudo sh -c "echo 'JAVA_HOME=/usr/lib/jvm/java-6-sun' >> /etc/profile"

මෙම උදාහරණයේ දී, සූඩෝ සෙසු අය සමඟ "ෂ" ධාවනය කරයි.

(මෙය සුඩෝ මෑන් පිටුවේ උදාහරණයක් ලෙස දැක්වේ)


8
හේතුව, ඔබේ කවචය (ඔබ මෙන් ධාවනය වන) යලි හරවා යැවීම මිස සුඩෝ නොවේ. ගොනුවට ලිවීමට ඔබට අවසර නොමැති බැවින්, ඔබට අවසරය ප්‍රතික්ෂේප කරන ලදි. මෙම පිළිතුරෙන් කියවෙන්නේ root ලෙස ධාවනය වන නව කවචයක් ආරම්භ කිරීමයි, එබැවින් ගොනුවට ලිවීමට හැකියාව ඇත.
රැන්ඩි ඔරිසන්

මෙය නිවැරදි පිළිතුර නොවේ. මෙය නිවැරදි පිළිතුරකි. අකිරාට වඩා හොඳ එකක් තිබේ, එම පිළිතුරේ දක්වා ඇති තර්කනය සඳහා.
ටූගාම්


4

මගේ මතය අනුව, මෙම නඩුවේ හොඳම දේ dd:

sudo dd of=/etc/profile <<< END
JAVA_HOME=/usr/lib/jvm/java-6-sun
END

3

මෙහි ඇති සූඩෝ හා නැවත හරවා යැවීමේ ගැටලුවක් තිබිය හැකිය. පේළිය එක් කිරීම වෙනුවට ඔබේ අභිමතය පරිදි කෙටි පණිවිඩකරුවෙකු භාවිතා කරන්න.

sudo nano /etc/profile

නැතහොත්, ඒ වෙනුවට ඔබට උත්සාහ කළ හැකිය

su
echo ‘JAVA_HOME=/usr/lib/jvm/java-6-sun’ >> /etc/profile
exit

අවාසනාවට, මෙය එකම ප්‍රති .ලයක් ලබා දුන්නේය.
මැට් නොරිස්

1
su -c 'echo "JAVA_HOME=/usr/lib/jvm/java-6-sun" >> /etc/profile'වැඩ කළ යුතුයි. ආර්ග් එකේ දෝංකාරය දක්වා වැරදීමකින් විස්තාරණය කළ හැකි කිසිවක් නැති නිසා, සමස්ත විධානය තනි උපුටා දක්වන්න.
quack quixote

බව අතිශය අසාමාන්ය දෙයක්. දැන් මෙය පිටපතක කොටසක් ලෙස කරන්න.
අර්නි ඩන්බාර්

0

ඔබ වැඩ කරන්නේ >>සුඩෝ ප්‍රතිදානය හරවා යැවීමට (භාවිතා කරමින් ). ඔබට සැබවින්ම කිරීමට අවශ්‍ය වන්නේ ප්‍රතිදානය නැවත හරවා යැවීමයි echo. මම ඔබට යෝජනා කරන්නේ ඔබේ ප්‍රියතම සංස්කාරකය භාවිතා කර එම පේළිය අතින් එකතු කරන්න /etc/profile. මෙය /etc/profileදැනටමත් සකසා තිබේද යන්න පරීක්ෂා කළ හැකි අතිරේක ප්‍රතිලාභයක් ඇත JAVA_HOME.


0

හිටපු මාර්ගය භාවිතා කරන්න :

sudo ex +'$put =\"FOO\"' -cwq /etc/profile

FOOඑකතු කිරීම සඳහා ඔබේ විචල්‍යය සමඟ ආදේශ කරන්න.

සමහර පද්ධති වල (OS X වැනි), /etc/profileගොනුවට අවසර 444 ක් ඇත, එබැවින් ඔබට තවමත් අවසරය ලැබෙන්නේ නම් , පළමුව අවසරය පරීක්ෂා කර නිවැරදි කරන්න:

sudo chmod 644 /etc/profile

ඉන්පසු නැවත උත්සාහ කරන්න.


0

මෙය ඉතා සරල වන අතර sudoඑය පොදු වන බැවින් මුල් තැන දෙයි.

sudo sed -i '$a something' /etc/config_file

$a ගොනුවේ අවසානයේ එකතු කිරීම යන්නෙන් අදහස් වේ.

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.