相关疑难解决方法(0)

这个命令如何合法?"> 文件 1 < 文件 2 猫"

假设file2已经存在,命令

> file1 < file2 cat
Run Code Online (Sandbox Code Playgroud)

似乎是复制的内容file2file1

但我无法理解这种结构。

我了解“无”是针对file1(创建或删除其内容)。然后将 的内容file2定向到file1

为什么是catfile2?它如何知道cat file2操作数的顺序是否不正确?

shell io-redirection

67
推荐指数
1
解决办法
6854
查看次数

如何使用bash将多行附加到文件中,字符串前面带有“--”

问题与如何使用 bash 将多行附加到文件非常相似,但我想用 开始--文件,如果可能,还附加到文件。

printf "--no-color\n--format-doc\n--no-profile\n" >> ~/.rspec-test
Run Code Online (Sandbox Code Playgroud)

问题是以“--”开头的文件给了我一个:

-bash: printf: --: invalid option
printf: usage: printf [-v var] format [arguments]
Run Code Online (Sandbox Code Playgroud)

有没有办法逃脱--?有没有其他选择?我不确定如何使用 做多行echocat这不是一个好的选择,我想将它放在自动脚本中。

options shell-script

9
推荐指数
1
解决办法
1万
查看次数

Shell 脚本:如果文件不存在,如何将多行内容写入文件?

我需要/opt/nginx/conf.d/default.conf通过 shell 脚本创建包含此内容的文件,如果文件不存在则创建该文件:

server {
    listen 80 default_server;
    listen [::]:80 default_server;
    server_name _;
    root /usr/share/nginx/html;
}
Run Code Online (Sandbox Code Playgroud)

如何通过 shell 脚本编写多行内容?

我创建了目录

sudo mkdir -p /opt/nginx/conf.d
Run Code Online (Sandbox Code Playgroud)

但我不知道如何写文件。

text-processing nginx files

9
推荐指数
1
解决办法
1万
查看次数

如何在文件中添加多行

如何将多行附加到文件的问题中,OP 正在寻求一种将多行附加到 shell 中的文件的方法。解决方案:

cat <<EOT >> test.txt
line 1
line 2
EOT
Run Code Online (Sandbox Code Playgroud)

我想添加行,我的尝试看起来像:

echo 3 >test.text
cat test.text <<EOT >> test.text
1
2
EOT
Run Code Online (Sandbox Code Playgroud)

但这会导致错误:

cat: test.text: input file is output file
Run Code Online (Sandbox Code Playgroud)

编辑:为了澄清起见,我正在遵循一个很长的服务器设置指南,其中包含手动编辑配置文件的说明。编辑有时涉及将文本块添加到文件中。在自动化某些步骤时,我希望通过按原样复制指南中的文本并将其放入 bash 单行中来保留命令的冗长性。为此,EOT首选使用多行文本输入。

编辑:使用 sed 的其他答案需要在每行末尾附加反斜杠,但我想输入多行而不加修改。

有没有办法以上述类似的方式将多行添加到文件中(理想情况下没有临时文件并安装moreutils)?

text-processing files

4
推荐指数
2
解决办法
2291
查看次数

在文件中插入文本块

我正在编辑 Arch 基础安装脚本。我几乎让它按照我想要的方式工作了!

我需要将以下内容添加到 /etc/pacman.conf 的末尾

[archlinuxfr]
SigLevel = Never
Server = http://repo.archlinux.fr/$arch
Run Code Online (Sandbox Code Playgroud)

在我使用 cat 命令之前,它删除了 /etc/pacman.conf 中的所有内容,然后添加了这个。但我需要将其添加到文件的末尾。

这是我目前拥有的脚本:https ://github.com/ArchT420/T420/blob/master/installer.sh

谢谢你!

scripting shell-script text-processing

3
推荐指数
1
解决办法
5345
查看次数

使用 sed 在文本文件中添加新行字符

我想/etc/securetty使用以下方法将以下内容添加到文件中sed

pts/0
pts/1
pts/2
pts/3
pts/4
pts/5
pts/6
pts/7
pts/8
pts/9
Run Code Online (Sandbox Code Playgroud)

为此,我编写了以下命令:

sed -i '$a pts/0\\npts/1\\npts/2\\npts/3\\npts/4\\npts/5\\npts/6\\npts/7\\npts/8\\npts/9' /etc/securetty
Run Code Online (Sandbox Code Playgroud)

这给了我输出:

pts/0\npts/1\npts/2\npts/3\npts/4\npts/5\npts/6\npts/7\npts/8\npts/9
Run Code Online (Sandbox Code Playgroud)

我显然在这里错过了一些东西。我的sed命令可能有什么问题?

sed text-processing text-formatting

2
推荐指数
1
解决办法
1866
查看次数