目录

linux终端命令写文件--重定向、tee命令

# 使用 echo 或 printf

提示

中心还是利用重定向符>实现把内容输出到文件(不存在则创建)中,及tee命令读取输入写入文件

# 坤本功

注意,使用双引号写文件内容中包含美元符$,反斜杠\,反引号`,双引号"时,请在前面添加反斜杠进行转义,避免这些特殊字符的特殊作用。

# echo 命令用于在终端显示字符串或变量,可以配合重定向操作符 (>, >>) 来向文件写入内容。

使用 > 写入内容,这会覆盖文件原有的内容:

echo "这是新的文件内容" > filename.txt
1

这条命令会创建(如果文件不存在)或清空(如果文件已存在)filename.txt,然后将指定的文本写入文件。

使用 >> 追加内容到文件末尾:

echo "这是追加的内容" >> filename.txt      
1

如果文件不存在,它会被创建。如果文件存在,新内容会被追加到文件的末尾。

# 使用 printf 命令配合重定向操作符 (>, >>) 来向文件写入内容。

printf 命令比 echo 提供了更多的格式化选项。它也可以用于向文件写入内容。

写入或覆盖文件:

printf "第一行内容\n第二行内容\n" > filename.txt
1

追加内容到文件:

printf "追加的第一行内容\n追加的第二行内容\n" >> filename.txt
1

# 其他命令搭配重定向“>”

在上面的echo,printf命令中可以学习到,重定向写文件实际是将前面命令的结果输出写入文件

那么很多linux命令都可以搭配重定向符号使用,将命令结果输出到重定向的文件中,如果这个文件不存在,会先创建这个文件,再把结果输出到文件中

测试:

touch 1.php;touch 2.php;touch 3.php;
ls > 1.txt
1
2

结果:

root@out:/var/www/html# ls
1.php  1.txt  2.php  3.php
root@out:/var/www/html# cat 1.txt
1.php
1.txt
2.php
3.php
1
2
3
4
5
6
7

# 重定向“<”

echo $(< file)
1

重定向符“<”会读取文件,$()在命令行中有命令替换的作用,替换成命令的结果,这里先用重定向符读取文件内容,替换到echo后,再打印出来

# 进阶

ascll码字符表 (opens new window)

使用十六进制转义得到目标字符,绕过过滤

php的echo转义要用双引号

echo "\x3f";
1

linux系统echo转义要-e参数

echo -e '\x3f';
1

# tee命令

如果>被过滤时,还可以使用tee命令来直接写文件

echo "This is a line." | tee filename.txt
1

在上面的命令中,echo命令的输出被管道(|)传递给tee命令,tee命令将输出写入filename.txt文件,并在终端上显示。

左边的命令可以合理的替换为其他命令

最后一次更新于: 2024/10/24, 13:00:42