的手册页中tr(1)
说:
tr - translate or delete characters
SYNOPSIS
tr [OPTION]... SET1 [SET2]
DESCRIPTION
Translate, squeeze, and/or delete characters from standard input, writing to standard output.
据我所知,这意味着它将使用“ \ n”,然后将其替换为“ \ n” [这意味着什么都不会改变]。
但这并不能解释为什么这样做ls | tr '\n' '\n'
具有以下效果:
$ ls
Documents Downloads Git Music Pictures '#recycle' Videos
2019-Dec-24 07:28:44 PM modernNeo:modernNeo-debian/home/modernNeo
$ ls | tr "\n" "\n"
Documents
Downloads
Git
Music
Pictures
#recycle
Videos
ls
实用程序的输出可能会有所不同,具体取决于输出是直接写入终端还是管道。
您将获得与tr '\n' \n'
使用cat
以下相同的行为:
$ ls
file-00 file-01 file-02 file-03 file-04 file-05 file-06 file-07 file-08 file-09
$ ls | cat
file-00
file-01
file-02
file-03
file-04
file-05
file-06
file-07
file-08
file-09
行为,每行列出一个文件,是此实用程序的POSIX标准ls
所描述的默认输出:
默认格式为在标准输出中每行列出一个条目; 例外是,给终端时,或者当所述一个
-C
,-m
或者-x
被指定的选项。如果输出到终端,则格式是实现定义的。
#recycle
当通过管道过滤输出时,您还将注意到文件名周围的单引号“消失”。实际上,它们绝不是文件名的一部分,而只是GNUls
在将名称输出到终端时决定呈现名称的方式(基于名称包含的字符;#
被视为“特殊”)。用单引号引起的名称和列中的输出是标准将在输出到终端时允许的“实现定义的格式”。
用重定向到文件(或在支持这些文件的shell中用进程替换)替换管道也将ls
使其输出格式为“默认格式”,每个文件名都用换行符分隔。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句