如何从命令行追加文本到/etc/apt/sources.list?
我是linux新手,刚开始学习bash。 我正在使用Ubuntu 9.04,并希望从命令行将存储库添加到/etc/apt/sources.list。 基本上我想这样做:
sudo echo "[some repository]" >> /etc/apt/sources.list
但是,即使当我使用sudo,我得到这个错误:
bash: /etc/apt/sources.list: Permission denied
我如何避免这个错误?
echo "[some repository]" | sudo tee -a /etc/apt/sources.list
tee命令通过sudo作为超级用户调用, -a参数告诉tee追加到文件而不是覆盖它。
原始命令失败,因为使用>>的IOredirect将以常规用户的身份完成,只有您的回显与sudo一起执行。
调用一个sudo子shell
sudo sh -c 'echo "[some repository]" >> /etc/apt/sources.list'
作品也如其他人指出的那样。
在启动命令之前,shell会处理“>”,“<”,“>>”等。 所以问题是“sudo >> / etc / foo”试图在获得权限之前打开/ etc / foo进行追加。
一个方法是使用sudo来启动另一个shell来做你想做的事情,例如:
sudo sh -c 'echo "[some repository]" >> /etc/apt/sources.list'
或者:
echo "[some repository]" | sudo sh -c 'cat >> /etc/apt/sources.list'
更简单的方法可能就是使用sudo在/ etc /文件上启动编辑器:)
最好在/etc/apt/sources.list.d
使用一个单独的文件,如其他答案所述 。
请注意,文件名必须以.list结尾,否则将被忽略。
解决这个问题的一种方法是在子shell中进行redirect:
sudo sh -c 'echo "[some repository]" >> /etc/apt/sources.list'
这样, sh
进程在sudo
下执行,因此具有将redirect的输出打开到/etc/apt/sources.list
所需的权限。
以下为我工作
sudo echo "deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen" | sudo tee -a /etc/apt/sources.list.d/10gen.list
在Karmic中,您可以使用add-apt-repository
命令,至less对于PPA来说。
例如:
sudo add-apt-repository ppa:docky
这里是没有使用pipe道的解决scheme,只需简单的就地编辑:
sudo ex +'$put = \"[some repository]\"' -cwq /etc/apt/sources.list
ex
相当于vi -e
。
如果你想以su身份login(如果你有权限的话),同样的命令就可以正常工作。
su echo "[some repository]" >> /etc/apt/sources.list
如果你不是超级用户,那么就跟洛塔的回答一样。
如果你这样做,一定要退出su,这样你就不会以root身份运行不必要的程序(超级用户)
首先打开或创build您想要编辑它的文件通过以下命令
1- sudo nano file_name
2-打开文件后编辑它
3- ctrl + x
4-按“Y”说是
你完成了。