「pwd(1)」-

打印当前的工作目录
命令语法格式
pwd [OPTION]…
命令描述
-L, –logical 如果环境变量PWD的值为当前目录的绝对路径名,并且不带’.’或’..’部分,但是可能带有符号链接,则会输出PWD的值。否则,使用-P选项进行处理。
-P, –physical 打印当前目录的完全解析后的路径名。也就是说,打印的名称的所有组件都将是实际的目录名称,不会是符号链接。
该选项是默认的。
–help 显示帮助信息并退出。
–version 显示版本信息并退出。
注意事项
SHELL中可能内建的pwd指令,和本文描述的pwd指令的用法会有所不同。如果你要使用这里介绍的pwd命令,可以使用env(1)进行调用:

# env pwd

如果-P与-L选项都没有指定,则默认为-P。如果两个都指定了,则执行最后一个选项,除非设置了POSIXLY_CORRECT环境变量。
相关手册
getcwd(3)
查看在线手册:http://www.gnu.org/software/coreutils/pwd
查看info手册:info ‘(coreutils) pwd invocation’
参考文献

man 1 pwd, version GNU coreutils 8.26

更新日志

06/13/2018 创建文章[……]

READ MORE

「readlink(1)」-

打印符号链接的值或者规范的文件名
命令语法格式
readlink [OPTION]… FILE…
命令描述
readlink可能以两种支持的模式之一工作:
‘读取链接模式(Readlink Mode)’,readlink输出给定符号链接的值。如果使用除符号链接的名称之外的参数调用readlink,则它不会产生输出并以非零退出代码退出。
‘规范模式(Canonicalize Mode)’,readlink输出给定文件的绝对名称,其中不包含任何重复的分隔符(/)或符号链接。请注意,realpath(1)命令是用于规范文件名的首选命令。
其中,‘读取链接模式’是readlink命令的默认行为。
命令支持的选项及含义
-f, –canonicalize 使用规范模式。除最后一个文件名外,如果任何组件缺失或不可用,则readlink不会产生输出,并以非零状态退出。尾部斜线被忽略。
-e, –canonicalize-existing 使用规范模式。如果任何组件丢失或不可用,readlink将不会产生输出,并非零状态退出。如果尾部有斜线,则要求名称解析为目录。
-m, –canonicalize-missing 使用规范模式。如果任何组件丢失或不可用,readlink会将其视为目录。
-n, –no-newline 当命令行中仅指定了一个文件参数FILE时,不要在输出的结尾打印分隔符。
如果该选项与多个文件参数FILE一起指定,则发出警告。
-s, -q, –silent, –quiet 抑制大多数错误消息。默认开启。
-v, –verbose 报告错误消息。
-z, –zero 在每行的末尾输出零字节(ASCII NUL),而不是换行符(ASCII LF)。该选项使readlink的输出能够被其他程序解析,即使输出条目中包含了换行符。
–help 显示帮助并退出。
–version 显示版本信息。
相关手册
readlink(2), realpath(1), realpath(3)
查看在线手册:http://www.gnu.org/software/coreutils/readlink
查看info手册:info ‘(coreutils) readlink invocation’
参考文献

man 1 readlink, version GNU coreutils 8.28

更新日志

06/24/2018 创建文章[……]

READ MORE

「realpath(1)」-

打印解析出来的路径
命令语法格式
realpath [OPTION]… FILE…
命令描述
realpath展开所有符号链接,并解析路径中的’/./’、’/../’以及额外的’/’字符,。默认情况下,除指定文件的最后一个部分外,所有部分都必须存在。
文件名的规范化功能与readlink命令的功能重叠。这是用于规范化的首选命令,因为它是更合适和标准的名称。此外,该命令还支持相对文件名处理功能。
-e, –canonicalize-existing 确保所指定的文件名的所有部分都存在。如果任何部分缺失或不可用,则realpath将输出诊断信息(除非指定-q选项),并使用非零状态码退出。尾部斜线要求名称解析为目录。
-m, –canonicalize-missing 如果指定文件名的任何部分缺失或不可用,则将其视为目录。
-L, –logical 在指定的文件名中的符号链接会被解析,但是是在处理任何后续的’..’组件后再解析它们。
-P, –physical 在指定的文件名中的符号链接会被解析,但是是在处理任何后续的’..’组件之前先这些符号链接。这也是默认的行为。
-q, –quiet 抑制错误信息。
–relative-to=FILE 打印相对于指定目录的解析出的文件名。注意这个选项尊重与文件存在有关的-m和-e选项。
–relative-base=FILE 如果文件是FILE的子目录或文件,则将解析的文件名打印为相对值。否则,将解析的文件名称打印为绝对路径。注意这个选项尊重与文件存在有关的-m和-e选项。
-s, –strip, –no-symlinks 不要解析符号链接。只解析对’/./’、’/../’的引用,并删除多余的’/’字符。通常情况下,realpath会打印符号链接所指向的文件或目录的绝对路径。使用该选项后,直接打印符号链接的绝对路径。
当与-m选项结合使用时,realpath仅对文件名进行操作,并且不会访问任何实际的文件。通常,没有-m时,如果文件不存在,则realpath会进行提示。
-z, –zero 以NUL分隔输出的行。没有指定该选项时,使用NEWLINE来分隔行。
–help 显示帮助信息并退出。
–version 显示版本信息并退出。
使用示例
默认情况下,真实路径打印给定文件的绝对文件名(符号链接会被解析,比如示例中的word):

# cd /root/.local/
# realpath /usr/bin/sort /tmp/foo /usr/share/dict/words 1.txt
/usr/bin/sort
/[……]

READ MORE

「rm(1)」-

移除文件或者目录
命令语法格式
rm [OPTION]… [FILE]…
命令描述
rm命令用于删除文件和目录,默认是不删除目录的。本文中的rm命令是GNU实现的rm命令。
如果给出-I或–interactive=WHEN选项,并且有三个以上的文件FILE或给出了-r、-R、–recursive,则rm会提示用户是否继续执行整个操作,如果用户的响应不是肯定的,则整个命令中止。
否则,如果文件不可写,标准输入是终端,并且未给出-f或–force选项,或者给出-i或–interactive=WHEN选项,则rm会提示用户是否删除 文件。如果用户的响应不是肯定的,则跳过该文件。
拒绝删除.和..文件,这是POSIX的要求。
警告:如果你使用rm删除文件,通常可以恢复该文件的内容。如果你想要确保内容真正无法恢复,请考虑使用shred(1)命令。
命令支持的选项及含义
-f, –force 忽略不存在的文件和丢失的参数,并且不会提示用户。忽略以前的任何前面的–interactive (-i)选项。
-i 对每个要删除的每个文件进行提示是否要删除。如果用户的响应不是肯定的,则跳过该文件。忽略任何前面的–force(-f)选项。相当于–interactive=always。
-I 如果有三个以上的文件或进行递归删除,则提示一次是否继续执行命令。忽略任何前面的–force(-f)选项。相当于–interactive=once。
–interactive[=WHEN] 指定何时显示交互式提示。WHEN可能被省略,或者是下面中的一个:

never

不进行提示。

once

如果超过了三个以上的文件或执行递归删除时,会提示一次。相当于-I。

always

对每个要被删除的文件进行提示。如果没有指定WHEN,这个是默认的。

–one-file-system 当递归地删除时,如果遇到的目录与命令行参数中指定的目录在不同的文件系统上,则跳过该目录。
此选项在删除通常不包含有价值数据的构建“chroot”层次结构时非常有用。但是,绑定挂载/归入这样的层次结构并不罕见,以便更容易地使用其启动文件。问题在于很容易忘记卸载/归位。然后,当你使用rm -rf删除通常丢弃的chroot时,该命令也会删除/ home下的所有内容。使用–one-file-system选项,它会警告并跳过其他文件系统上的目录。当然,如果它和你的chroot碰巧在同一个文件系统上,这将不会保存你的/ home。
–no-preserve-roo[……]

READ MORE

「rmdir(1)」-

移除空目录
命令语法格式
rmdir [OPTION]… DIRECTORY…
命令描述
如果DIRECTORY是空目录,则删除它。如果DIRECTORY是一个不存在的目录,则产生错误。
命令支持的选项及含义
–ignore-fail-on-non-empty 忽略因为目录非空而导致的删除失败。使用该选项后,即使存在失败的删除,rmdir的退出状态也为0。
-p, –parents 删除目录,然后尝试删除目录的上级目录。因此,例如,‘rmdir -p a/b/c’类似于‘rmdir a/b/c a/b a’。因此,如果其中任何一个目录不是空的,它就会失败。可以使用–ignore-fail-on-non-empty选项使其不显示诊断,并且不会导致rmdir以失败退出。
-v, –verbose 给每个成功的移除操作输出一个诊断信息。目录被删除。
–help 显示帮助信息并退出。
–version 显示版本信息并退出。
相关手册
rmdir(2)
查看在线手册:http://www.gnu.org/software/coreutils/rmdir
查看info手册:info ‘(coreutils) rmdir invocation’
参考文献

man 1 rmdir, version GNU coreutils 8.26

更新日志

06/12/2018 创建文章[……]

READ MORE

「runcon(1)」-

在指定的安全上下文中运行命令
命令语法格式
runcon CONTEXT COMMAND [args] runcon [ -c ] [-u USER] [-r ROLE] [-t TYPE] [-l RANGE] COMMAND [args]
命令描述
使用完全指定的上下文运行命令,或使用由一个或多个level, role, type, user修改的当前或已转换的安全性上下文运行命令。
如果未指定-c,-t,-u,-r,-l,则将第一个参数用作完整上下文。COMMAND之后的任何附加参数都将被解释为该命令的参数。
在不同的SELinux上下文中运行命令。如果上下文和命令都没有给出,打印当前的安全上下文。
另请注意,setpriv命令可用于使用setpriv –no-new-privs runcon …来设置NO_NEW_PRIVS位,从而不允许使用具有比进程通常具有的更多特权的安全性上下文。
注意,只有精心选择的上下文才可能成功运行。
下面选项中,长选项的参数对于短选项来说也是必须的提供的。
CONTEXT 完整的安全上下文。
-c, –compute 在修改之前计算过程转换上下文。
-t, –type=TYPE 在目标安全上下文中设置类型TYPE。
-u, –user=USER 在目标安全上下文中设置用户USER。
-r, –role=ROLE 在目标安全上下文中设置角色ROLE。
-l, –range=RANGE 在目标安全上下文中设置范围RANGE。
–help 显示帮助信息并退出。
–version 显示版本信息并退出。
相关手册
完整在线手册:http://www.gnu.org/software/coreutils/runcon
查看info手册:info ‘(coreutils) runcon invocation’
参考文献

man 1 runcon, version GNU coreutils 8.26

更新日志

05/30/2018 创建文章[……]

READ MORE

「seq(1)」-

生成序列化数字
命令语法格式
seq [OPTION]… LAST seq [OPTION]… FIRST LAST seq [OPTION]… FIRST INCREMENT LAST
命令描述
FIRST是起始数字;LAST是结尾数字;INCREMENT是步长。其中,FIRST、INCREAMENT是可选的,如果忽略,默认为1。但是,INCREAMEN不能为0。
FIRST,INCREMENT,LAST被解释为浮点值。
如果FIRST < LAST,INCREMENT通常是正数。如果FIRST > LAST,INCREMENT通常是负数。
命令支持的选项及含义
-f, –format=FORMAT 参数FORMAT为使用printf风格的浮点格式。这里要看一下printf(1)命令和printf(3)中对于格式的描述。 如果FIRST,INCREMENT和LAST都是最大精度为PREC的固定点十进制数,则默认为%.PRECf,否则为%g(%g是根据结果自动选择科学记数法还是一般的小数记数法)。
-s, –separator=STRING 自定义数字之间的分隔符,默认为换行符(ASCII LF)。
-w, –equal-width 通过追加前导零的方式,使输出的数字的宽度相等。注意,该选项没有参数,而数字的宽度是由最长的数字决定的。如果你向使用特定的宽度,需要使用-f(–format=FORMAT)选项进行控制。
–help 显示帮助并退出。
–version 显示版本信息。
相关手册
在线手册页面:http://www.gnu.org/software/coreutils/seq
参考文献

man 1 seq, version GNU coretuils 8.28

更新日志

03/31/2018 创建文章
05/30/2018 更新文章内容[……]

READ MORE

「sha1sum(1)」-

计算和检查文件的SHA1消息摘要
命令语法格式
sha1sum [OPTION]… [FILE]…
命令描述
命令sha1sum为每个指定的文件FILE计算160位校验和。
此命令的用法和选项与md5sum(1)的用法和选项完全相同。请参阅md5sum(1)调用。
相关手册
md5sum(1)
查看在线手册:http://www.gnu.org/software/coreutils/sha1sum
查看info手册:info ‘(coreutils) sha1sum invocation’
参考文献

man 1 sha1sum, version GNU coreutils 8.28

更新日志

07/08/2018 创建文章[……]

READ MORE

「sha224sum(1)」-

计算和检查SHA224消息摘要
命令语法格式
sha224sum [OPTION]… [FILE]…
命令描述
命令sha224sum为文件FILE计算长度为224位的校验和。该命令的用法和选项与md5sum(1)完全相同。请参阅md5sum(1)调用。
相关手册
md5sum(1)
查看在线手册:http://www.gnu.org/software/coreutils/sha224sum
查看info手册:info ‘(coreutils) sha2 utilities’
参考文献

man 1 sha224sum, version GNU coreutils 8.28

更新日志

07/08/2018 创建文章[……]

READ MORE

「sha256sum(1)」-

计算和检查SHA256消息摘要
命令语法格式
sha256sum [OPTION]… [FILE]…
命令描述
命令sha256sum为文件FILE计算长度为256位的校验和。该命令的用法和选项与md5sum(1)完全相同。请参阅md5sum(1)调用。
相关手册
md5sum(1)
查看在线手册:http://www.gnu.org/software/coreutils/sha256sum
查看info手册:info ‘(coreutils) sha2 utilities’
参考文献

man 1 sha256sum, version GNU coreutils 8.28

更新日志

07/08/2018 创建文章[……]

READ MORE

「sha384sum(1)」-

计算和检查SHA384消息摘要
命令语法格式
sha384sum [OPTION]… [FILE]…
命令描述
命令sha384sum为文件FILE计算长度为384位的校验和。该命令的用法和选项与md5sum(1)完全相同。请参阅md5sum(1)调用。
相关手册
md5sum(1)
查看在线手册:http://www.gnu.org/software/coreutils/sha384sum
查看info手册:info ‘(coreutils) sha2 utilities’
参考文献

man 1 sha384sum, version GNU coreutils 8.28

更新日志

07/08/2018 创建文章[……]

READ MORE

「sha512sum(1)」-

计算和检查SHA512消息摘要
命令语法格式
sha512sum [OPTION]… [FILE]…
命令描述
命令sha512sum为文件FILE计算长度为512位的校验和。该命令的用法和选项与md5sum(1)完全相同。请参阅md5sum(1)调用。
相关手册
md5sum(1)
查看在线手册:http://www.gnu.org/software/coreutils/sha512sum
查看info手册:info ‘(coreutils) sha2 utilities’
参考文献

man 1 sha512sum, version GNU coreutils 8.28

更新日志

07/08/2018 创建文章[……]

READ MORE

「shred(1)」-

覆盖文件来隐藏其内容,并可以选择删除它
命令语法格式
shred [OPTION]… FILE…
命令描述
命令shred覆盖设备或文件,以帮助防止恢复数据。
通常,当你删除文件(请参阅rm(1)调用)时,实际上不会销毁文件的数据。仅销毁列出文件存储位置的索引,并使存储空间可用于重用。有一些取消删除的程序(数据恢复程序)会尝试重建索引,如果这些部分索引没有被重用,则可以将文件恢复。
在一个驱动近乎完全使用的繁忙系统上,空间可以在几秒钟内重复使用。但是这也没有办法确定。如果你有敏感数据,你可能希望通过使用非敏感数据来确定覆盖文件,以此来确保无法进行恢复。
然而,即使在这样做之后,也可以将磁盘带回实验室,并使用许多敏感(且昂贵)的设备来寻找覆盖数据下面的原始数据的微弱“回声”。如果数据只被覆盖一次,就不那么难了。
不可挽回的去除东西的最好方法是用酸破坏它所用的介质,将其熔化,或类似。对于像软盘这样便宜的可移动介质,这是首选方法。然而,硬盘驱动器昂贵且难以熔化,因此命令shred试图使用非破坏性的方式实现类似的效果。
这使用了许多覆盖传递,并且数据模式选择了以最大化对旧数据进行破坏。虽然这适用于软盘,但这些模式的设计是为了在硬盘上实现最佳效果。有关更多详细信息,请参阅第六届USENIX安全研讨会(加利福尼亚州圣何塞,1996年7月22日至25日)的会议记录中的源代码和Peter Gutmann的论文「磁性和固态存储器数据的安全删除」。
请注意,命令shred依赖于一个非常重要的假设:文件系统会覆盖数据。这是传统的做事方式,但许多现代文件系统设计并不满足这一假设。例外的情况包括:

日志结构或日志文件系统。例如,由AIX和Solaris提供的文件系统,JFS,ReiserFS,XFS,Ext3(在data=journal模式中),BFS,NTFS等,当它们配置为对数据进行日志时。
即使某些写入失败了,也会写入冗余数据,并继续执行的文件系统。例如,基于RAID的文件系统。
会创建快照的文件系统。例如,网络应用程序的NFS服务器。
将缓存放在临时位置的文件系统。例如,NFS第3个版本的客户端。
压缩的文件系统。

在Ext3文件系统的特定情况下,上述说明仅在data=journal模式中适用(并且shred因此效果有限),该模式除了元数据之外还记录了文件数据。在data=ordered(默认)和data=writeback模式中,shred像往常一样工作。如果想要更改Ext3日记记录模式,可以在/etc/fstab文件中为特定文件系统的挂载添加data=something选项,如mount(8)手册中所述。
如果你不确定文件[……]

READ MORE

「shuf(1)」-

生成随机排列
命令语法格式
shuf [OPTION]… [FILE] shuf -e [OPTION]… [ARG]… shuf -i LO-HI [OPTION]…
命令描述
命令shuf产生输入行的随机排列。每个输出排列都是同样可能的。
命令shuf有三种操作模式,这三种决定了shuf从哪里获取输入行。默认情况下,shuf从文件中读取数据,如果未指定文件,或者文件为‘-’,则它会从标准输入读取行。
命令支持的选项及含义
必须提供给长选项的参数也必须提供给对应的短选项。
–help 显示帮助信息并退出。
–version 显示版本信息。
下面的选项用于控制数据读取的位置
-e, –echo 将每一个ARG视为一个输入行。
-i, –input-range=LO-HI 参数LO-HI指定了一个正整数范围,形如1-10。该行为如同指定了一个文件,该文件的内容为由LO到HI的正整数组成,每行一个。
下面的选项用于控制命令行为
-n count, –head-count=count 最多输出count行。默认情况下,输出所有输入行。
-o output-file, –output=output-file 将输出写入output-file而不是标准输出。命令shuf在打开output-file之前会读取所有输入,因此你可以使用shuf -o F < F和cat F | shuf -o F等命令安全地处理原有文件。
–random-source=file 使用文件file作为随机数据的来源,用于确定要生成哪种排列。请参阅「随机来源」。
-r, –repeat 重复输出的值。使用此选项后,输出不是输入的随机排列,而是每个输出行都是从所有的输入中随机选择的,可能会出现相同的行。此选项通常与–head-count结合使用;如果没有给出–head-count选项,命令shuf会无限期地重复。
-z, –zero-terminated 使用零字节(ASCII NUL)而不是换行符(ASCII LF)分隔项目。即,将输入数据视为由ASCII NUL分隔的项目,并使用ASCII NUL作为输出项目的终止字符。
此选项可与’perl -0’或’find -print0’和’xargs -0’结合使用,它们可以相同地处理任意文件名(甚至包含空格或其他特殊字符的文件名)。
使用示例
对于命令:

# shuf <<EOF
A man,
a plan,
a canal:
Panama!
EOF

可能会产生如下的输出:[……]

READ MORE

「sleep(1)」-

暂停指定的时间
命令语法格式
sleep NUMBER[SUFFIX]… sleep OPTION
命令描述
暂停NUMBER秒,与其他非GNU实现不同的地方是NUMBER可以是随意的浮点数。每个参数都是一个数字,然后在后跟一个可选的单位(默认的单位是秒)。可用的单位如下:

“s”  秒
“m” 分钟
“h” 小时
“d” 天

如果指定了多个参数,则sleep会将参数就和,将结果作为暂停的时间。
命令支持的选项及含义
–help 显示帮助信息并退出。
–version 显示版本信息并退出。
注意事项
SHELL中可能内建了sleep命令,可以使用type -a sleep命令进行查看:

# type -a sleep
sleep is a shell builtin
sleep is /bin/sleep

如果输出中包含了sleep is a shell builtin,则表示你执行sleep时会执行SHELL内建的sleep命令。如果要执行coreutils中的sleep命令,则需要使用绝对路径/bin/sleep。
退出状态
退出状态为零表示成功,非零值表示失败。
相关手册
sleep(3)
完整在线文档:http://www.gnu.org/software/coreutils/sleep
查看info手册:info ‘(coreutils) sleep invocation’
参考文献

man 1 sleep, version GNU coreutils 8.26

更新日志

06/02/2018 创建文章[……]

READ MORE

「sort(1)」-

排序文本文件中的行
命令语法格式
sort [OPTION]… [FILE]…
sort [OPTION]… –files0-from=F
命令描述
命令sort对给定文件FILE中的所有行进行排序、合并、比较。
如果文件FILE没有给出,或者为“-”,,则从标准输入中读取数据进行排序。默认情况下,sort将结果写入标准输出中。
许多选项影响sort比较行的方式;如果输出不是预期的结果,可以尝试使用–debug选项查看发生的情况。一对行的比较过程如下:sort按命令行中指定的顺序比较每对字段(参阅–key),根据相关的排序选项,直到找到二者的差异或没有剩余字段。如果未指定任何比较字段,则sort将使用整行的默认键。最后,如果所有字段通过比较是相等的,则sort进行比较整行,就好像没有指定除–reverse(-r)之外的任何排序选项。–stable(-s)选项可以禁用这个最后比较,以便所有字段比较在相等的情况下保留其原始相对顺序。–unique(-u)选项也会禁用最后的比较。
除非另有说明,否则所有比较都使用LC_COLLATE语言环境指定的字符整理顺序。为了进行比较,结尾的换行符号不是该行的一部分。如果输入文件FILE的最后一个字节不是换行符,则GNU的sort会静默提供一个。GNU的sort对输入行长度或对行内允许的字节都没有限制。
命令sort的三种模式
命令sort有三种操作模式:排序(默认)、合并、检查排序。
以下选项可用于指定操作模式:
-c, –check, –check=diagnose-first 检查给定文件是否已排序:如果未排序,则打印诊断信息,该诊断信息中描述了第一个无序的行,并以状态1退出。否则,成功状态0退出。
使用该选项时,最多只能给出一个输入文件。
-C, –check=quiet, –check=silent 如果给定文件已经排序,则成功退出,否则状态1退出。该选项类似于-c选项,但是该选项不打印诊断信息。
使用该选项时,最多只能给出一个输入文件。
-m, –merge 将给定的多个文件FILE作为一个组来进行排序。每个输入文件必须始终先进行单独排序。它始终用于排序,而不是合并;提供合并是因为它更快,在它工作的情况下。
默认行为 如果没有指定上述的选项,则执行默认行排序功能。
命令支持的选项及含义
影响输出顺序
它们可以全局指定,也可以作为特定排序字段的一部分。如果未指定排序字段,则全局选项用于整行比较;否则全局选项将由未指定其自身的任何特殊选项的排序字段继承。在sort的前POSIX版本中,全局选项仅影响后面的排序字段,因此可移植Shell脚本应首先指定[……]

READ MORE

「split(1)」-

将文件分割成多个小文件
命令语法格式
split [OPTION]… [FILE [PREFIX]]
命令描述
split创建输出文件,该输出文件中由连续或交错的FILE中的部分内容组成。
默认情况下,split将输入文件的每1000行写入一个新的输出文件。
输出文件的名称由前缀(默认为’x’),然后跟一组字符组成(默认为’aa’,’ab’,…)。如果按文件名的顺序重新连接文件可以生成原始输入文件(除-nr/n外)。默认情况下,split会创建带有两个生成后缀字符的文件,并且当下一个最重要的位置到达最后一个字符时,会将此宽度增加两个(’yz’,’zaaa’,’zaab’,…)。通过这种方式可以支持任意数量的输出文件,即使在存在–additional-suffix选项的情况下,也可以按上述方式进行排序。如果指定了-a选项并且输出文件名称已用尽,则split会报告错误而不删除它所创建的输出文件。
如果没有指定FILE或者FILE为`-`,则从标准输入中读取文件内容。
命令支持的选项及含义
必须提供给长选项的参数也必须提供给对应的短选项。
-b, –bytes=SIZE 将SIZE字节的输入数据放入每个输出文件中。SIZE可以是一个整数,或可以是一个整数后跟一个以下后缀:

‘b’ => 512 (“blocks”)
‘KB’ => 1000 (KiloBytes)
‘K’ => 1024 (KibiBytes)
‘MB’ => 1000*1000 (MegaBytes)
‘M’ => 1024*1024 (MebiBytes)
‘GB’ => 1000*1000*1000 (GigaBytes)
‘G’ => 1024*1024*1024 (GibiBytes)

同样的还有‘T’, ‘P’, ‘E’, ‘Z’, ‘Y’。
-C, –line-bytes=SIZE 在每个输出文件中,写入尽可能多的完整行,但是不能超过SIZE字节。如果单个行的长度大于SIZE字节,它会被分成多个文件中。SIZE与–bytes选项的格式相同,也可以使用后缀。
–filter=COMMAND 使用此选项时,split不是简单地将内容写入每个输出文件,而是通过管道将每个输出文件数据传递给指定的SHELL命令。命令应该使用$FILE环境变量,该变量为每个命令的调用设置为不同的输出文件名。
例如,假设你有一个1TiB压缩文件,如果未压缩,文件太大而无法驻留在磁盘上,但你必须将其分割成单独压缩的更易于管理的文件,可以用下面的命令:

# xz[……]

READ MORE

「stat(1)」-

显示文件系统或者文件的状态
命令语法格式
stat [OPTION]… FILE…
命令描述
命令stat用于显示文件系统的状态。
如果没有选项OPTION,命令stat会报告有关给定文件FILE的所有信息。但它也可用于报告给定文件所在的文件系统的信息。如果文件是链接,stat还可以提供有关链接指向的文件的信息。
命令支持的选项及含义
-L, –dereference 更改stat对于符号链接的行为。使用此选项,命令stat将作用于每个符号链接指向的文件。没有它,stat直接作用于任何符号链接。
-f, –file-system 报告有关给定文件所在的文件系统的信息,而不是有关文件本身的信息。此选项隐含了-L选项。
-c, –format=format 使用格式format,而不是默认格式。参数format是自动以换行(LF)终止的,因此使用两个或多个文件操作数运行如下命令,则每个操作数会对应一行输出:

# stat –format=%d:%i / /usr
2050:2
2057:2

–printf=format 使用格式format,而不是默认格式。与–format类似,但支持解释反斜杠转义序列,并且不会自动追加结尾换行符(LF),如果你想要使用换行,请在format中使用’\n’。以下是使用–printf打印设备以及/和/usr的inode编号的方法:

# stat –printf=’%d:%i\n’ / /usr
2050:2
2057:2

-t, –terse 以简洁的形式打印信息,适合其他程序解析。
以下命令的输出是相同的, –format还以默认格式标识打印的项目(以更完整的形式)。请注意,格式字符串format将包含另一个带有活动SELinux安全上下文的’%C’:

# stat –format=”%n %s %b %f %u %g %D %i %h %t %T %X %Y %Z %W %o” …
# stat –terse …

同样说明了–file-system模式下的简洁输出:

# stat -f –format=”%n %i %l %t %s %S %b %f %a %c %d” …
# stat -f –terse …

如上所述。
选项–format和–printf支持的指令
%a – 八进制访问权限(注意printf标志中的’#’和’0’) %A – 人类可读形式的访问权限 %b – 分配的块数(参见’%B’) %B[……]

READ MORE

「stdbuf(1)」-

使用修改的I/O流缓冲运行命令
命令语法格式
stdbuf OPTION… COMMAND
命令描述
命令stdbuf允许用户修改与程序关联的三个标准I/O流的缓冲操作。
命令参数COMMAND必须以程序的名称开头,该程序:

使用ISO C FILE流进行输入/输出(注意,程序dd和cat不这样做)
不调整其标准流的缓冲(注意程序tee不属于此类别)。

任何其他args将作为命令COMMAND的附加参数传递。
命令支持的选项及参数
必须提供给长选项的参数也必须提供给对应的短选项。
-i mode, –input=mode 调整标准输入流的缓冲。
-o mode, –output=mode 调整标准输出流的缓冲。
-e mode, –error=mode 调整错误流的缓冲。
–help 显示帮助信息并退出。
–version 显示版本信息并退出。
关于参数mode的取值
参数mode可以指定如下所属的值:

“L”

将流设置为行缓冲模式。在此模式下,数据被合并,直到输出换行符或从连接到终端设备的任何流中读取输入。使用标准输入时,此选项无效。

“0”
    禁用所选流的缓冲。在此模式下,立即输出数据,仅从输入中读取所请求的数据量。注意,输入和输出的功能差异。禁用输入缓冲不会影响流输入函数的响应性或阻塞行为。例如,即使底层的read返回的数据少于请求的数据,fread仍会阻塞,直到EOF或错误。

”size“
    指定要在完全缓冲模式下使用的缓冲区大小。size可以是一个整数,或者可选地后跟以下单位:

‘KB’ => 1000 (KiloBytes)
‘K’ => 1024 (KibiBytes)
‘MB’ => 1000*1000 (MegaBytes)
‘M’ => 1024*1024 (MebiBytes)
‘GB’ => 1000*1000*1000 (GigaBytes)
‘G’ => 1024*1024*1024 (GibiBytes)

以此类推,还有‘T’, ‘P’, ‘E’, ‘Z’, ‘Y’。

注意事项
在GLIBC平台中,指定缓冲大小,比如使用全缓冲模式,会导致未定义操作。
命令stdbuf仅安装在使用可执行和可链接格式(E[……]

READ MORE

「stty(1)」-

修改和打印终端行的设置
命令语法格式
stty [-F DEVICE | –file=DEVICE] [SETTING]…
stty [-F DEVICE | –file=DEVICE] [-a|–all]
stty [-F DEVICE | –file=DEVICE] [-g|–save]
命令描述
打印或更改终端特性。
命令支持的选项及含义
必须提供给长选项的参数也必须提供给对应的短选项。
-a, –all 以可读的形式打印所有当前设置。
-g, –save 以stty能够识别的形式打印所有当前设置。
-F, –file=DEVICE 打开并使用指定的DEVICE,而不是标准输入。
–help 显示帮助信息并退出。
–version 显示版本信息并退出。
下面是所有的设置。在SETTING之前的可选减号(-)表示否定。下面的星号(*)标记了非POSIX设置。底层系统定义了哪些设置是可用的。
处理连接到标准输入的tty线璐。没有参数,打印波特率、线路规则、与stty sane的偏差。在设置中,”CHAR“按字面意思,或编码为^c、0x37、0177、127;特殊值”^-“、”undef“用于禁用特殊字符。
特殊特性
* discard CHAR 在终端输入CHAR字符时,将切换输出丢弃。
eof CHAR 在终端输入CHAR字符时,将发送一个EOF(End Of File)终止输入。
eol CHAR 在终端输入CHAR字符时,将结束该行。
* eol2 CHAR 用于结束该行的备用CHAR。
erase CHAR 在终端输入CHAR字符时,将擦除最后输入的字符。
intr CHAR 在终端输入CHAR字符时,将发送一个中断信号。
kill CHAR 在终端输入CHAR字符时,将擦除当前行。
* lnext CHAR 在终端输入CHAR字符时,将输入下一个字符进行引用。
quit CHAR 在终端输入CHAR字符时,将发送一个退出信号。
* rprnt CHAR 在终端输入CHAR字符时,将重绘当前行。
start CHAR 在终端输入CHAR字符时,将在停止输出后重新输出。
stop CHAR 在终端输入CHAR字符时,将停止输出。
susp CHAR 在终端输入CHAR字符时,将发送终端停止信号。
* swtch CHAR 在终端输入CHAR字符时,将切换到不同的Shell层。
* werase CHAR 在终端输入CHAR字符时,将擦除输入的最后一个单词。
特殊设置
N 将输入和输出速度[……]

READ MORE

「sum(1)」-

计算文件的校验和和块数
命令语法格式
sum [OPTION]… [FILE]…
命令描述
sum计算每个给定文件FILE的16位校验和。如果没有指定文件FILE,或者文件名为’-‘则从标准输入中读取。
sum会打印每个文件的校验和,然后打印文件中的块数(四舍五入)。
如果使用–sysv选项时,如果只有一个FILE参数也会打印出文件名。而对于-r选项,只有在超过一个文件时才会打印文件名。
默认情况下,GNU实现的sum使用与BSD实现的sum兼容的算法来计算校验和(就是说默认为-r选项),并以1024字节块为单位打印文件大小。
命令支持的选项及含义
-r 使用默认(BSD兼容)算法。包含此选项是为了与System V的sum兼容。
-s, –sysv 使用与System V的sum默认值兼容的算法计算校验和,并以512字节块为单位打印文件大小。
–help 显示帮助信息并退出。
–version 显示版本信息并退出。
相关手册
查看在线手册:http://www.gnu.org/software/coreutils/sum
查看info手册:info ‘(coreutils) sum invocation’
参考文献

man 1 sum, version GNU coreutils 8.26
SYSV checksum
BSD checksum

更新日志

06/15/2018 创建文章[……]

READ MORE

「sync(1)」-

将缓存写入持久化存储中
命令语法格式
sync [OPTION] [FILE]…
命令描述
sync将内存中缓冲的任何数据写入磁盘。这可以包括(但不限于)修改的超级块、修改的inode、延迟的读取和写入。这必须由内核来实现;sync程序只是执行sync,syncfs,fsync,fdatasync系统调用,除此之外什么也不做。
内核将数据保存在内存中以避免执行(相对较慢)的磁盘读取和写入操作。这可以提高性能,但是如果计算机崩溃,则可能导致数据丢失或文件系统损坏。sync命令指示内核将数据写入永久存储器。
如果指定了任何参数,那么默认情况下只会使用fsync(2)系统调用来同步这些文件。
命令支持的选项及含义
如果至少指定了一个文件FILE,则可以使用以下选项更改同步方法。
-d, –data 使用fdatasync(2)仅同步文件的数据,以及用于维护文件系统一致性所需的任何元数据。
-f, –file-system 为包含FILE的文件系统同步所有I/O等待,使用syncfs(2)系统调用。
请注意,如果传递设备节点(像“/dev/sda”这样的),通常不会指定此选项,因为这将同步包含的文件系统,而不是引用的文件系统。还请注意,根据系统的不同,传递单个设备节点或文件可能具有不同的sync特性,与不带参数时相比。即,在与未提供参数时而使用的全局sync(2)相比,传递给fsync(2)的参数可以通过写障碍提供更大的保证。
–help 显示帮助信息并退出。
–version 显示版本信息并退出。
相关手册
fdatasync(2), fsync(2), sync(2), syncfs(2)
查看在线手册:http://www.gnu.org/software/coreutils/sync
查看info手册:info ‘(coreutils) sync invocation’
参考文献

man 1 sync, version GNU coreutils 8.28

更新日志

06/17/2018 创建文章[……]

READ MORE

「tac(1)」-

以反向来连接和打印文件
命令语法格式
tac [OPTION]… [FILE]…
命令描述
将文件FILE的内容输出到标准输出,但是最后一行先输入,然后是倒数第二行……以此类推。该命令以行为单位进行反序,如果你想反序字符串可以使用rev(1)命令。
如果没有提供FILE参数,或者FILE参数为`-‘,则tac会从标准输入中读取。
命令支持的选项及含义
长选项必须提供的参数,对于短选项来说也是必须提供的。
-b, –before -s选项提供了分割字符串STRING,将到分割字符串前视为结束。比如命令echo ‘demo’ | tac -s m和命令echo ‘demo’ | tac -s m -b执行结果如下:

# echo ‘demo’ | tac -s m
o
dem

# echo ‘demo’ | tac -s m -b
mo
de

-r, –regex 将-s选项指定的分隔符STRING视为正则表达式。
-s, –separator=STRING 使用STRING做为行的分隔符。默认用NEWLINE做为分隔符的,遇到NEWLINE后就视为行结束,然后进行打印。如果指定了-s选项,但是未指定STRING或STRING为空,则视为ASCII NUL。
–help 显示帮助信息并退出。
–version 显示版本信息并退出。
相关手册
rev(1)
完整在线文档:http://www.gnu.org/software/coreutils/tac
查看info手册:info ‘(coreutils) tac invocation’
参考文献

man 1 tac, verison GNU coreutils 8.26

更新日志

05/28/2018 文章创建[……]

READ MORE

「tail(1)」-

输出文件最后的部分
命令语法格式
tail [OPTION]… [FILE]…
默认打印每个文件FILE中的最后10行到标准输出中。如果给出了多个文件,会在输出的最开始标记出文件名。
如果没有指定FILE或者FILE为-时,tail会从标准输入中读入内容。
命令选项
需要提供给长选项的参数也必须提供给对应的短选项。
-c, –bytes=[+]NUM 输出最后的NUM字节。或者使用-c +NUM从文件中的第NUM字节开始输出。NUM后面可以使用单位:b 512, kB 1000, K 1024, MB 1000*1000, M 1024*1024, GB 1000*1000*1000, G 1024*1024*1024, 以及 T, P, E, Z, Y等。
-f, –follow [={name|descriptor}] 对于正在增长的文件,该选项会不停地读取文件中的内容。如果指定了多个文件,则在输出的内容开始添加当前文件的描述头,以指示输出内容的来源。
name和descriptor,二者的区别只有在删除或重命名了被跟踪文件时才能表现出来:

如果想不断的追踪文件,即使它已被取消链接,请使用–follow=descriptor。这是默认的。
如果你正在跟踪可能会轮转(删除或重命名,然后重新打开)的日志文件,则descriptor不会有用,因为descriptor跟踪的是原文件。在这种情况下,请使用–follow=name来进行命名文件跟踪,或者是定期重新打开它,以查看是否已被其他程序删除并重新创建。请注意,基于inotify的实现可以处理这种情况,而无需定期重新打开。

无论使用哪种方法,如果文件被截断或者内容缩小了,tail会打印一条提示提示文件被截断了,然后从新的结束点继续追踪文件。
当文件被删除时,tail的行为取决于于使用了name还是descriptor:

当使用name时,tail可以检测到文件已被删除并给出了一个消息,并且如果指定了–retry,它将继续定期检查以查看文件是否重新出现。
当使用descriptor时,tail不会检测到该文件已被取消链接或重命名,并且没有任何提示;即使该文件可能无法通过其原始名称访问,它可能仍在增长。

对于name和descriptor,可能只有长选项–follow才支持。
如果没有指定操作数FILE,或者标准输入是FIFO、管道,则忽略-f选项。同样,当标准输入是FIFO、管道时,-f选项对指定为’-‘的任何操作数都不起作用。
使用内核支持inotify,输出是由文件更改进行触发的,通常速度非常快。否则,tail会[……]

READ MORE

「tee(1)」-

从标准输入中读取数据,然后写入标准输出和文件
如果你想将输出内容记录下来,同时又想输出到屏幕,就可以使用tee命令。
命令行语法格式
tee [OPTION]… [FILE]…
命令支持的选项及含义
-a, –append 将内容追加到FILE中。默认情况下,会覆盖FILE中的内容。
-i, –ignore-interrupts 忽略中断信号。
-p, –output-error[=MODE] 设置在发生写错误(write error)的时候的行为。长选项–output-error的MODE支持如下值:

warn:当打开或者输出发生错误时,发出警告,包括管道的错误。继续向打开的文件/管道写入。如果输出有任何错误,退出状态都为失败。
warn-nopipe:当打开或者输出时发生错误,发出警告,但是管道除外。继续向打开的文件/管道写入,不退出。如果发生了错误,退出状态都为失败。这个是默认值;使用简写格式的-p也表示MODE为warn-nopipe。
exit:打开或者输出发生错误的时候,退出。
exit-nopipe:打开或者输出发生错误的时候,退出。但是管道除外。

其中,–output-error在未指定MODE的情况下,当写入管道发生错误时,会立即退出,并且诊断写入非管道输出的错误。
–help 显示帮助信息并退出。
–version 显示版本信息并退出。
使用示例
有时候你下载了一个文件,下载完成后我们会计算文件的校验和,我们通常这么做:

# wget https://example.com/some.iso && sha1sum some.iso

但是有了tee命令之后,我们可以这么做:

# wget -O – https://example.com/dvd.iso | tee >(sha1sum > dvd.sha1) > dvd.iso

上面的命令使用了“进程替换(>(command))”,需要SHELL支持该功能。如果SHELL不支持进程替换,可以使用下面的命令:

# wget -O – https://example.com/dvd.iso | tee dvd.iso | sha1sum > dvd.sha1

有关进程替换的内容可以参考在线手册。
参考文献

man 1 tee, version GNU coreutils 8.26
在线手册:http://www.gnu.org/software/coreutils/[……]

READ MORE

「test(1)」-

功能简述
检查文件类型及比较值
常用命令
判断文件是否存在:

if [ -f /tmp/tmp ]
then
echo “File exist.”
fi

if test -f /tmp/tmp
then
echo “File exit.”
fi

判断目录是否为空:

test -z “$(/bin/ls -A /tmp)” && echo ’empty’

语法格式

test EXPRESSION

test

[ EXPRESSION ]
[ ]
[ OPTION

命令描述
命令test会根据EXPRESSION的真与否来返回“0”或“1”。
命令test可以进行文件状态检查,字符串操作,数字比较操作。
命令test有一种替代的形式:使用双方括号。例如,命令test -d /与[ -d / ]是等价的。方括号必须是独立的参数,例如[-d /]是没有任何作用。鉴于二者含义相同,下面只使用其中的一种形式进行讨论。
如果省略EXPRESSION,则test返回false。如果expression是单个参数,则如果参数为null,则test返回false,否则返回true。参数可以是任何字符串,包括像’-d’,’-1’,’–‘,’–help’和’–version’等字符串,大多数其他程序会将其视为选项。要获得帮助和版本信息,可以调用命令'[ –help’和'[ –version’,通常不带右括号。
命令选项
( EXPRESSION ) EXPRESSION为真则返回真。
test命令的连接词
请注意,最好使用SHELL逻辑运算符进行测试,而不是内部的这些逻辑运算符。因为使用这些可能会使表达式变得模糊不清。例如:

test “$1” -a “$2”

上面的表达式在$1为!且$2是空字符串时,会变得含糊不清(test “!” -a “”)。应该这么写:

test “$1” && test “$2”

注意,使用SHELL逻辑运算符可以从短路操作中受益,这对文件属性测试可能很重要。
‘! expr’ 如果expr为false,则返回TRUE。‘!’的优先级低于整个expr表达式。
注意,‘!’需要在表达式的左侧。例如,应该使用’!’ 1 -gt 2,而不是1 ‘!’ -gt 2。并且‘!’是SHELL的特殊字符,最好进行引用。
‘expr1 -a expr2’ 当expr1与expr2都为TRUE时,则返回TRUE。’-a’是左关联的,并且具有比’-o’更高的优先级。不建议使[……]

READ MORE

「timeout(1)」-

在限制的时间内运行某个命令
命令语法格式
timeout [OPTION] DURATION COMMAND [ARG]… timeout [OPTION]
命令描述
运行命令COMMAND,如果到达DURATION指定的时间后程序COMMAND还在运行,则结束它。
COMMAND不可以是内建的实用程序。参考特殊的内置实用程序。
命令支持的选项及含义
需要提供给长选项的参数也必须提供给相应的短选项。
–preserve-status 在超时时,返回COMMAND命令的退出状态,而不是暗示了超时的特定退出状态。如果命令COMMAND运行的时间量是不确定,这很有用。
–foreground 不要创建单独的后台程序组,以便托管命令可以正常使用前台TTY。在两种情况下需要支持这种不直接从交互式Shell启动的命令:
    1. 命令COMMAND是交互式的,例如需要从终端读取。     2. 用户希望直接向终端里的命令发送信号(例如Ctrl-C)
请注意,在这种操作模式下,COMMAND的任何子命令都不会超时。此外,SIGCONT信号不会被发送给命令,因为前台进程通常不需要该命令,并且可能会导致监视器本身的程序(例如GDB)出现间歇性信号传送问题。
-k, –kill-after=DURATION 在指定的持续时间后,通过发送’KILL’信号确保被监控的命令被终止。如果没有这个选项,如果选定的信号不是致命的,timeout不会中止命令。
-s, –signal=SIGNAL 在超时时,向命令发送SIGNAL信号,而不是默认的’TERM’信号。信号可能是一个名字,如’HUP’,或者是一个数字。请参阅信号规范。
-v, –verbose 输出诊断信息。有些版本的timeout不支持该选项。
–help 显示帮助信息并退出。
–version 显示版本信息并退出。
关于DURATION参数
DURATION是一个浮点类型的参数,可以跟以下表示单位的后缀:

‘s’ 秒,这也是默认的
‘m’ 分钟
‘h’ 小时
‘d’ 天

DURATION参数为0,则会禁用关联的超时。请注意,实际的超时时间取决于系统条件,在指定亚秒超时时应特别考虑这些条件。
退出状态
124 命令超时
125 timeout命令自身执行失败
126 找到命令COMMAND,但是无法执行。
127 无法找到COMMAND命令。
137 如果向COMMAND发送了KILL(9)信号[……]

READ MORE

「touch(1)」-

修改文件的时间戳
命令语法格式
touch [OPTION]… FILE…
命令描述
命令touch可以修改文件的访问时间(atime)和修改时间(mtime)。
除非指定了–no-create(-c)或–no-dereference(-h),否则如果FILE参数指定的文件不存在,则会创建一个名为FILE的空文件。
参数FILE如果是’-‘则会被专门处理,它会导致touch改变与标准输出关联的文件的时间。
默认情况下,touch将文件的时间戳设置为当前时间。由于touch从左到右对其操作数进行操作,因此位于前面的操作数的时间戳和位于后面的操作数的时间戳可能不一致。
将文件时间戳设置为当前时间时,touch可以更改不属于用户但具有写入权限的文件的时间戳。否则,这些文件必须属于这个用户。一些较旧的系统有进一步的限制:用户必须拥有这些文件,除非访问时间戳和修改时间戳都设置为当前时间。
touch命令不能将文件的状态更改时间戳(ctime)设置为用户指定的值,并且根本不能更改文件的创建时间(如果支持)。此外,touch也有与影响更新文件时间戳的所有程序类似的问题。例如,touch可能会将文件的时间戳设置为与请求的时间略有不同的值。请参阅文件时间戳。
时间戳采用TZ环境变量指定的时区规则,或者如果未设置TZ,则采用系统默认规则。请参阅GNU C库参考手册中的使用TZ指定时区。通过使用UTC时间戳,可以避免在夏令时转换期间产生歧义。
命令支持的选项及含义
需要提供给长选项的参数也必须提供给相应的短选项。
-c, –no-create 对于不存在的文件FILE,不要警告,也不要创建。
-h, –no-dereference 尝试更改符号链接的时间戳,而不是链接指向的内容。使用此选项时,不会创建空文件,但是会产生文件不存在的警告。与选项-c一起使用可以避免由于文件不存在而产生的警告。并非所有系统都支持更改符号链接的时间戳,因为直到POSIX 2008才要求操作的底层系统支持。另外,在某些系统上,仅检查符号链接的操作会更改访问时间戳,以致仅更改修改时间戳(mtime)将持续足够长的时间以便可观察。当与选项-r结合使用时,引用的时间戳将从符号链接中获取,而不是从其指向的文件中获取。
修改指定时间
-a, –time=atime, –time=access, –time=use 只更改访问时间(atime)。
-m, –time=mtime, –time=modify 只更改修改时间(mtime)。
指定具体时间
-d, –date=STRING 使用STRING指定的时间,而不是当前系统时间。它可以包含月份名称、时区、'[……]

READ MORE

「tr(1)」-

替换、压缩、删除字符
命令语法格式
tr [OPTION]… SET1 [SET2]
命令描述
命令tr将来自标准输入的数据写入到标准输出,执行以下操作之一:

替换,以及可选地缩减结果中的重复字符,
缩减重复字符,
删除字符,
删除字符,然后从结果中缩减重复的字符。

参数SET1和SET2(如果给出)参数定义了一个有序的字符集。下面分别称为SET1和SET2,统称时我们使用setX。这些setX是tr进行操作的输入字符。–complement(-c,-C)选项将SET1替换为其“补充”(“补充”是指所有不在SET1中的字符)。
目前tr完全支持单字节字符。最终它将支持多字节字符;当它支持的时候,-C选项会使它补充字符集,而-c会使它补充一组值。只有当某些值不是字符时,这种区别才有意义,并且只有在输入包含编码错误时,使用多字节编码的区域设置中才有可能。
命令支持的选项及含义
-c, -C, –complement 使用SET1的补集,即处理SET1中以外的字符。
-d, –delete 删除SET1中的字符,而不是默认的翻译。
-s, –squeeze-repeats 删除输入中出现在最后一个SET中的重复字符,并将其替换为单个字符。简单说,把重复字符压缩为一个字符。
-t, –truncate-SET1 先将SET1截断,使其长度等于SET2。
–help 显示帮助信息并退出。
–version 显示版本信息并退出。
字符集:指定字符集
参数SET1和SET2的格式类似于正则表达式的格式;但是,它们不是正则表达式,只是字符列表。在这些字符串中,大多数字符只是表示自己,没有特殊含义。但字符串可以包含下面列出的缩写,这些组合序列是有特殊含义的。其中一些只能在SET1或SET2中使用,如下所述:
反斜线转义
可以识别以下反斜杠转义序列:

‘\a’

Control-G.

‘\b’

Control-H.

‘\f’

Control-L.

‘\n’

Control-J.

‘\r’

Control-M.

‘\t’

Control-I.

‘\v’

Control-K.

‘\ooo’

序列中的ooo给出的值代表了一[……]

READ MORE

「true(1)」-

返回一个成功,除此之外什么都不做
命令语法格式
true [ignored command line arguments] true OPTION
命令描述
命令true,除了返回退出状态0,什么都不做,退出状态0表示程序执行成功。在SHELL脚本中的某些地方需要一个返回成功的占位符,就可以使用该命令,尽管SHELL内置命令冒号(:)可以更快地完成同样的任务。
这个版本的true是由C语言实现的,因此比SHELL脚本的实现更安全和更快,并且可以安全地用作禁用帐户。
命令支持的选项及含义
–help 显示帮助并退出。
–version 显示版本信息。
注意事项
在大多数现代SHELL中,true是一个内置命令,因此当你在脚本中使用“true”时,可能使用的是SHELL的内置命令,而不是本文所说的true命令。
使用–help和–version时,也会发生以非零状态退出的可能,比如标准输入已关闭或者I/O重定向到错误的文件:

# ./true –version >&-
./true: write error: Bad file number
# $ ./true –version > /dev/full
./true: write error: No space left on device

相关手册
查看在线手册:http://www.gnu.org/software/coreutils/true
查看info手册:info ‘(coreutils) true invocation’
参考文献

man 1 true, version GNU coreutils 8.26

更新日志

06/15/2018 创建文章[……]

READ MORE