我想使用Shell将/etc/my.conf中的行添加为"sudo".
如果没有以sudo身份登录,我可以这样做:
{ echo "[mysqld]"
echo "default-character-set=utf8"
echo "character_set_server=utf8"
echo "[mysql]"
echo "default-character-set=utf8"
} >> /etc/my.conf
Run Code Online (Sandbox Code Playgroud)
但当:
sudo { echo "[mysqld]"
echo "default-character-set=utf8"
echo "character_set_server=utf8"
echo "[mysql]"
echo "default-character-set=utf8"
} >> /etc/my.conf
Run Code Online (Sandbox Code Playgroud)
我收到一个错误:
sudo: {: command not found
character_set_server=utf8
[mysql]
default-character-set=utf8 .....
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
首先,使用带有here-doc而不是一系列回声的cat.它更清洁.你可以使用带有破折号的特殊表格去除前导标签(标签,而不是空格!),让你缩进here-doc以使其脱颖而出.
其次,你可以使用sudo重定向 sudo sh -c
启动根子shell来然后在其中运行cat进行重定向.
把它放在一起:
sudo sh -c "cat >>/etc/my.conf" <<-EOF
[mysqld]
default-character-set=utf8
character_set_server=utf8
[mysql]
default-character-set=utf8
EOF
Run Code Online (Sandbox Code Playgroud)
我不知道以root方式将流写入文件的更直接的方法.如果真的没有,那真是太遗憾了.
归档时间: |
|
查看次数: |
652 次 |
最近记录: |