如何在bash中创建一个带有sudo权限的文本文件并填充内容?

16 浏览
0 Comments

如何在bash中创建一个带有sudo权限的文本文件并填充内容?

我试图在需要sudo权限的目录中创建和填充一个文件。我尝试了以下方法:

$ echo 'hello' | sudo tee /data/hello

然而,我只得到了输出,表示/data/hello文件不存在:

$ cat /data/hello
cat: /data/hello: 没有那个文件或目录

0
0 Comments

问题的原因是用户想要在bash中创建一个文本文件并使用sudo权限来填充它。解决方法是使用touch命令来确保文件存在,然后使用tee命令将文本输入到文件中。

用户可以在一条命令行中完成这个操作,首先使用touch命令来创建文件(如果文件不存在),然后使用echo命令输出文本,并使用sudo tee命令将文本输入到文件中。具体的命令如下:

sudo touch /etc/file && echo "Some text" | sudo tee /etc/file

不过,其实使用tee命令的时候并不需要先用touch命令创建文件,因为tee命令在打开输出文件时会使用O_CREAT标志,所以如果文件不存在,它会自动创建文件。可以使用strace命令来验证这一点。

用户的编辑提供了他们实际运行的命令,这使得问题更加清晰。

以上就是解决该问题的原因和方法。

0
0 Comments

问题的原因是用户想要在bash中创建一个文本文件并用sudo权限填充它,但他们可能没有足够的sudo权限来使用vi或nano编辑器。

解决方法是,如果用户拥有sudo权限,他们可以使用vi或nano编辑器来创建并填充文件。他们可以运行以下命令:

sudo vi /etc/file

或者

sudo nano /etc/file

如果用户没有这些程序的sudo权限,他们可以先切换到root用户,然后再尝试运行以下命令:

sudo su -
vi /etc/file

或者

nano /etc/file

这些步骤不是必需的,因为`tee`命令可以直接创建目标文件。

这个问题的解决方法是用户在运行实际命令时添加了sudo权限,这样他们就可以创建并填充文件了。

0
0 Comments

如何在bash中创建一个文本文件并使用sudo权限填充它?

有人在一个问题中编辑了一个包含问题引入的问题日志,其中包含以下命令:

# 从编辑后的问题中摘录
$ echo 'hello' > sudo tee /data/hello

在bash中(它允许在简单命令的任何位置使用重定向运算符),这与运行以下命令是完全等价的:

# 从问题中摘录,并将重定向移到末尾以使实际行为更可读
echo 'hello' tee /data/hello > sudo

也就是说,它创建了一个以当前目录命名为sudo的文件,而不是使用sudo运行tee(在上述命令中,tee只是echo的一个参数)。

相比之下,你想要的是:

# 正确的方式:使用管道而不是重定向
echo 'hello' | sudo tee /data/hello

使用管道(|)而不是>符号。

问题的原因是用户在命令中错误地使用了重定向运算符,将重定向符号放在了错误的位置,导致创建了一个错误的文件。解决方法是将重定向符号移到正确的位置,使用管道来将echo的输出传递给sudo tee命令,并正确地填充文件。

0