![下面的 tr 命令有什么作用?](https://linux22.com/image/15539/%E4%B8%8B%E9%9D%A2%E7%9A%84%20tr%20%E5%91%BD%E4%BB%A4%E6%9C%89%E4%BB%80%E4%B9%88%E4%BD%9C%E7%94%A8%EF%BC%9F.png)
我正在查看 .sh 脚本,其中一行如下:
tr -d '\15' < file1.txt > /testProject/files/file1.txt
我理解这部分file1.txt > /testProject/files/file1.txt
意味着将结果添加到 /testProject/files/file1.txt 但有什么作用tr -d '\15' < file1.txt
?
我知道 \15 是一个 ASCAII 字符,但不确定它的作用。
如果有人可以提供帮助,我将非常感激。
答案1
该命令可以被评估为三个逻辑部分:
tr -d '\15'
- 这是执行的命令。< file1.txt
- file1.txt 作为输入传递。> /testProject/files/file1.txt
- 输出写入/testProject/files/file1.txt。
正如 Panki 在评论中所说,tr
联机帮助页拥有您需要的大部分信息。该命令用于将字符从一组转换为另一组。使用该-d
选项,它会删除字符。
在同一手册页中,您可以看到特殊解释序列的列表。第一个是\NNN
,用于表示八进制数字。
最后一个问题是什么\15
意思。您可以使用printf
和od
命令查看:
$ printf '\15' | od -c
0000000 \r
0000001
所以该命令的最终效果是从输入文件中删除'\r'(回车)字符。
正如 Steeldriver 在评论中所述,这通常用于从 Windows 风格的行结束符 ('\r\n') 转换为 Unix 风格的行结束符 ('\n')。