「groups(1)」-

打印一个用户所属的组
命令语法格式
groups [OPTION]… [USERNAME]…
命令描述
groups命令将打印每个给出的USERNAME主组以及补充组的名称。如果没有给出USERNAME,则打印当前用户的所属组和补充组。如果给出多个USERNAME,则会在该用户的组列表之前打印每个用户名,并且用冒号将该用户名与组列表分隔开。
组列表等同于命令’id -Gn’的输出。
命令支持的选项及含义
–help 显示帮助并退出。
–version 显示版本信息。
注意事项
进程的主组和补充组通常是从其父进程继承,并且自登录后通常不会改变。这意味着如果你在登录后更改组数据库,则组不会在现有登录会话中反映出你的更改。而使用带有USERNAME参数运行的group命令导致重新查询用户和组数据库,因此会给出不同的结果。
退出状态
退出状态为零表示成功,非零值表示失败。
相关手册
getent(1)
查看在线手册:http://www.gnu.org/software/coreutils/groups
查看info手册:info ‘(coreutils) groups invocation’
参考文献

man 1 groups, version GNU coreutils 8.28

更新日志

06/21/2017 创建文章
05/12/2018 调整文章结构,修改文章内容[……]

READ MORE

「head(1)」-

输出文件的开始部分
命令语法格式
head [OPTION]… [FILE]…
命令描述
默认打印每个FILE的前10行到标准输出中。如果指定了多个文件,则会在每个输出前先打印出文件名。
如果没有指定文件FILE,或者FILE为-,则从标准输入中读取文件。
长选项的必填参数,在短选项中也是必须提供的。
-c, –bytes=[-]NUM 打印文件前NUM字节,而不是初始行。但是,如果NUM以“-”作为前缀,则会打印每个文件的所有内容,但是除了每个文件的最后NUM字节。NUM可以是后跟一个以下后缀的整数:

‘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’。
-n, –lines=[-]NUM 输出前NUM行。但是,如果NUM以“-”作为前缀,则只打印每个文件中除了最后NUM行以外的其他行。NUM也可以使用后缀,用法类似于-c选项
-q, –quiet, –silent 不打印文件名。默认情况下,如果指定了多个文件,则会在每个输出前先打印出文件名。
-v, –verbose 总是打印文件名。默认情况下,如果指定了多个文件,则会在每个输出前先打印出文件名。
-z, –zero-terminated 将输入行的分隔符视为零字符(ASCII NUL),然后输出时时候ASCII NUL字符进行分隔。
这个选项可以和’perl -0’或者’find -print0’和’xargs -0’结合使用,它们可以可靠地处理任意文件名(甚至文件名中包含空格或其他特殊字符都可以很好的处理)。
–help 显示帮助并退出。
–version 显示版本信息。
注意事项
还有一些旧的废弃的命令行语法,已经不再推荐使用了,可以参照官方的文档(位于在线手册页的底部);
相关手册
tail(1)
完整在线文档:http://www.gnu.org/software/coreutils/head
查看info手册:info ‘(coreutils) head invocation’
参考文献[……]

READ MORE

「hostid(1)」-

打印当前主机的唯一标识符
命令语法格式
hostid [OPTION]
命令描述
hostid以十六进制数字的形式打印当前主机的标识符。该命令不接受任何参数
命令支持的选项及含义
–help 显示帮助并退出。
–version 显示版本信息。
注意事项
hostid仅安装在具有gethostid功能的系统上,因此可移植脚本不应依赖其存在。
使用示例
如下示例,打印我们当前主机的唯一标识符:

# hostid
1bac013d

在这个系统上,32位的值恰好与系统的网络地址密切相关,但情况并非总是如此。
退出状态
退出状态为零表示成功,非零值表示失败。
相关手册
gethostid(3)
查看在线手册:http://www.gnu.org/software/coreutils/hostid
查看info手册:info ‘(coreutils) hostid invocation’
参考文献

man 1 hostid, version GNU coreutils 8.28

更新日志

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

READ MORE

「hostname(1)」-

打印或者设置主机名
命令语法格式
hostname [name]
命令描述
如果没有参数,命令hostname将显示当前主机系统的名称。如果指定了一个参数name,则将当前主机名设置为由name指定的字符串。必须具有适当的权限才能设置主机名。
推荐使用hostnamectl(1)命令还设置主机名。
命令支持的选项及含义
–help 显示帮助并退出。
–version 显示版本信息。
退出状态
退出状态为零表示成功,非零值表示失败。
注意事项
命令hostname默认情况下是不安装的,其他软件包中也提供了hostname命令,使用上也存在差异,因此可移植脚本不应该依赖于它的存在或上述行为。比如,在Debian 8及其他的一些系统中,hostname命令来自于net-tools软件包,它和这里描述的hostname命令差异很大。
在使用systemd的系统上,目前我们使用hostnamectl(1)命令来修改主机名。
相关手册
查看在线手册:https://www.gnu.org/software/coreutils/manual/coreutils.html#hostname-invocation
查看info手册:info ‘(coreutils) hostname invocation’
参考文献

info ‘(coreutils) hostname invocation’

更新日志

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

READ MORE

「id(1)」-

打印真正的有效用户ID和组ID
命令语法格式
id [OPTION]… [USER]
命令描述
命令id打印关于给定用户USER的信息,如果没有指定用户USER,则打印运行id命令的进程的用户和组信息。
USER可以是用户ID或用户名。如果USER为用户ID,则需要使用前导加号(+),否则id会将USER视为一个用户名。请参阅消除歧义名称和ID。
默认情况下,打印真实用户ID、实际组ID、有效用户ID(如果不同于真实用户ID)、有效组ID(如果不同于真实组ID)、补充组ID。另外,如果启用SELinux并且未设置POSIXLY_CORRECT环境变量,则打印’context=c’,其中c是安全上下文。
在命令的输出中,每个数字值前面都有一个标识字符串,后面跟着相应的用户名或组名。
命令支持的选项及含义
-Z, –context 只打印进程的安全上下文,通常是从父进程继承的用户安全上下文。如果SELinux或SMACK都未启用,则打印警告,并将状态1退出。
-g, –group 仅打印基本组ID。
-G, –groups 打印基本组ID与附属组ID。
-u, –user 只打印用户ID。
-r, –real 与-u、-g、-G选项一起使用,打印出真正的用户ID或组ID,而不是默认的有效ID。
-n, –name 与-u、-g、-G选项一起使用,打印出用户名或组名,而不是默认的ID。
-z, –zero 使用NUL来分割字符,而不是默认的空白字符。使用默认输出格式时,不允许使用此选项。
其他选项
–help 显示帮助并退出。
–version 显示版本信息。
-a 被忽略的选项,只是为了兼容之前的版本。
基本组(Primary)与附属组(Supplementary)
基本组,也被称为Primary Group、First Group、Initial Login Group,用户的默认组,用户的GID所标识的组。
附属组,也被称为Secondary Group、Supplementary Group,用户的附加组。
系统中所有的组及其信息保存在/etc/group文件中,该文件中保存了组名、组ID以及一些其他的信息,他们之间由冒号(:)分隔。而用户的所属的基本组保存在/etc/passwd文件中,各个字段也是由冒号(:)分隔的,其中第4个字段为组ID,对应了/etc/group中的组ID。而用户所属的附属组信息保存在/etc/gshadows/gshadows文件中。
实际用户与有效用户、实际用户组与有效用户组
在Unix进程中涉及多个用户ID和用户组ID,包括如下:[……]

READ MORE

「install(1)」-

复制文件并设置属性
命令语法格式
install [option]… [-T] source dest install [option]… source… directory install [option]… -t directory source… install [option]… -d directory…
命令描述
命令install复制文件,然后设置文件模式位,如果可能,还会修改文件所属的用户和组。

如果给出了两个文件名,install会将第一个文件复制到第二个文件。
如果给出–target-directory(-t)选项,则install将每个源文件(source…)复制到该选项指定的目录directory中,文件名为原文件名。或者如果最后一个文件是目录,并且没有给出–no-target-directory(-T)选项,则install的会执行失败。
如果给出了–directory(-d)选项,install会创建每个目录以及任何缺少的父目录。无论-m选项或当前的umask是什么,父目录都使用’u=rwx,go=rx’(755)模式创建。有关如何继承父目录的set-user-ID和set-group-ID位的信息,请参见目录Setuid和Setgid。

命令instlal类似于cp,但install允许控制目标文件的属性。它通常用于Makefiles中,将程序复制到目标目录中。它拒绝将文件复制到自身。
命令install永远不会保留扩展属性(xattr)。
命令支持的选项及含义
需要提供给长选项的参数也必须提供给相应的短选项。
-b, –backup[=method] 备份每个可能被覆盖或删除的文件。请参阅备份选项。
-C, –compare 比较每对源文件source和目标文件dest,并且如果目标文件dest具有相同的内容和任何指定的所有者、组、权限、可能的SELinux上下文,则不要修改目标文件dest。
请注意,此选项最好与–user、–group、–mode选项一起使用,以免install错误地决定了安装文件的默认属性(例如,因为它不考虑setgid目录和POSIX默认ACL)。这可能会导致多余的副本或属性未被重置为正确的默认值。
-D 创建任何缺少dest的父目录,然后再将source复制到dest。显式指定–target-directory=dir将同样确保在复制参数source之前存在该层次结构。
-d, –directory 创建任何缺少dest的父目录,为它们提供默认属性 然后创建每个给定的目录,将它们的所有者、组、模式设置为在命令行中给出[……]

READ MORE

「join(1)」-

以公共的字段连接两个文件的行
命令语法格式
join [option]… file1 file2
命令描述
将每一对具有相同连接字段的输入行连接在一起并写入标准输出。它的行为与SQL语句的JOIN指令是类似的。在「使用示例」部分查看演示示例。
参数file1和file2可以是‘-’表示从标准输入中读取数据,但是不能同时为‘-’。file1和file2的连接字段需要先进行排序。
命令join的默认行为(未指定任何命令行参数时):

连接所使用的字段是每行中的第一个字段;
使用空白作为字段之间的分隔符,行上的前导空格会被忽略;
输出结果中的字段之间由空格进行分隔;
每个输出行都是由连接字段、file1中剩余的字段、file2中剩余的字段组成。

命令支持的选项及含义
-a file-number 除了正常打印外,还打印第file-number个文件中无法配对的行。file-number的取值只能为1和2中的一个。
默认情况下,join只会输出两个文件中能够配对的行,使用该选项可以将无法配对的行也打印出来。
–check-order 使用该选项后,如果用于连接的字段是未排序的,则产生错误。
–nocheck-order 不检查输入文件中用于连接的字段是否排序。这是默认行为。
-e string 用字符串替换输入中缺少的输出字段。即,缺少用-1, -2, -j, -o选项指定的字段。
–header 将每个输入文件的第一行视为标题行。标题行将被连接,并作为输出的第一行进行打印。如果使用了-o选项用于指定输出格式,则会根据指定的格式打印标题行。即使指定了–check-order,也不会检查标题行。
另外,如果文件中用于连接的字段的标题不匹配,则将使用第一个文件中的标题字段。
-i, –ignore-case 在连接比较时忽略大小写的差异。使用此选项,输入文件中用于连接的行也必须以忽略大小写的方式进行排序。可以使用’sort -f’来产生这种顺序。
-1 field 指定file1中用于连接的字段。field为正整数。
-2 field 指定file2中用于连接的字段。field为正整数。
-j field 等价于-1 field -2 field。
-o field-list, -o auto 如果指定了关键字’auto’,则从每个文件的第一行推断输出格式。这与默认输出格式相同,但也确保为每行输出相同数量的字段。缺少的字段被替换为-e选项指定的字符串,并且放弃额外的字段。
否则,按照field-list中的格式构建每个输出行。字段列表中的每个元素可以是单个字符’0[……]

READ MORE

「link(1)」-

调用link函数创建链接
命令语法格式
link filename linkname link OPTION
命令描述
link一次创建单个硬链接。它是系统提供的link函数的一个简单接口。请参阅GNU C库参考手册中的硬链接。可以避免使用花哨复杂的ln(1)命令。
filename必须指定一个现有文件,并且linkname必须为目录中不存在的一个条目。命令link只需调用link (filename, linkname)来创建链接。
在GNU系统上,该命令的作用类似于“ln –directory –no-target-directory filename linkname”。但是, –directory和–no-target-directory选项不是由POSIX指定的,并且在实践中link命令更具可移植性。
如果filename是符号链接,则link无法确定创建到符号链接的硬链接,还是创建指向符号链接的目标的硬链接。此时需要使用ln -P或ln -L来指定需要哪种行为。
退出状态为零表示成功,非零值表示失败。
命令支持的选项及含义
–help 显示帮助并退出。
–version 显示版本信息。
退出状态
退出状态为零表示成功,非零值表示失败。
相关手册
link(2)
查看在线手册:http://www.gnu.org/software/coreutils/link
查看info手册:info ‘(coreutils) link invocation’
参考文献

man 1 link, version GNU coreutils 8.28

更新日志

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

READ MORE

「ln(1)」-

创建文件之间的链接
命令语法格式
ln [option]… [-T] target linkname ln [option]… target ln [option]… target… directory ln [option]… -t directory target…
命令描述
命令ln用于在文件之间建立链接。默认情况下,它创建的是硬链接;如果与-s选项一起使用,则创建的是符号链接(或软链接)。

如果给出两个文件名,则ln将从第二个文件创建一个指向第一个文件的链接。
如果给出了一个target,ln在当前目录中创建一个指向该文件的链接。
如果给出了–target-directory(-t)选项,ln会在指定的目录directory中为每一个target创建一个指向该target的链接,链接的名字为target的名称。或者如果最后一个文件是一个目录,并且没有给出–no-target-directory(-T)选项则失败。

通常,ln不会替换现有的文件。使用–force(-f)选项无条件地替换它们;使用–interactive(-i)选项来有条件地替换它们;使用–backup(-b)选项来重命名它们。除非使用–backup(-b)选项,否则不存在target不存在的瞬间,这是对POSIX的扩展。
硬链接是现有文件的另一个名称;硬链接和原文是无法进行区分的。从技术上讲,它们共享相同的inode,并且inode包含有关文件的所有信息 —— 事实上,说inode是文件并不正确。大多数系统禁止建立指向目录的硬链接;在允许的情况下,只有超级用户才可以这样做(并且要小心,因为创建一个循环的链接指向会给许多其他实用程序带来问题)。硬链接不能跨越文件系统边界。(然而,这些限制不是由POSIX授权的。)
另一方面,符号链接(软链接)是一种特殊的文件类型(并非所有的内核都支持:System V release 3(和更早的版本)系统缺少符号链接的支持),其中链接文件实际上是指不同的文件,名称。当大多数操作(打开,读取,写入等)都通过符号链接文件时,内核会自动解析链接的引用,并操作链接指向的目标。但是一些操作(例如移除)会在链接文件本身上工作,而不是在其指向的目标上工作。对于通过链接进行访问文件,符号链接的所有者和组对于文件访问没有意义,但对于从设置了有限删除位的目录中删除符号链接有影响。在GNU系统中,符号链接的权限模式位没有意义,也不能改变,但在一些BSD系统中,链接的权限模式位可以改变,并且会影响符号链接是否在文件名解析中被遍历。请参阅GNU C库参考手册中的符号链接。
符号链接可以包含任意字符串;当符号链接中的字符串不解析为一个文件时,就会[……]

READ MORE

「logname(1)」-

打印用户的登录名
命令语法格式
logname [OPTION]
命令描述
logname打印在“系统维护的文件”中找到的调用者的用户名,并以状态0退出,这里所说的“系统维护的文件”通常为/var/run/utmp或/etc/utmp。
如果调用进程没有对应的条目,则logname打印 一条错误消息并状态1退出。
命令支持的选项及含义
–help 显示帮助并退出。
–version 显示版本信息。
退出状态
0 表示成功
>0 表示失败
相关手册
查看在线手册:http://www.gnu.org/software/coreutils/logname
查看info手册:info ‘(coreutils) logname invocation’
参考文献

man 1 logname, version GNU coreutils 8.28

更新日志

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

READ MORE

「ls(1)」-

列出目录内容
命令语法格式
ls [OPTION]… [FILE]…
命令描述
命令ls列出有关文件(任何类型的文件,包括目录)的信息。像往常一样,选项和文件参数可以任意混合。
对于非选项的命令行参数,如果是目录,缺省情况下,ls会列出目录的内容(不是递归列出),并省略文件名以“.”开头的文件;对于其他非选项参数,默认情况下,ls只列出文件名。如果没有指定非选项参数,那么ls在当前目录下运行,就好像使用参数’.’进行调用。
默认情况下,根据有效的语言环境设置,输出的文件及目录名按字母顺序排序。如果标准输出为终端,则按列进行输出(垂直排序),控制字符作为问号输出; 否则,输出每行输出一列,控制字符按原样输出。
因为ls是一个非常基本的程序,多年来积累了很多选项。在下面的部分中会介绍它们;在每个部分中,选项按字母顺序列出(忽略大小写)。将选项分为小节并不是一个十分准确的做法,因为一些选项会影响ls操作的多个方面。
下面会按不同的部分进行介绍这些选项。
命令行选项
列出哪些文件
下面的这些选项决定ls会为哪些文件列出信息。默认情况下,ls列出文件和命令行参数中任何目录里的内容,但是会忽略目录中文件名以’.’开头的文件。
-a, –all 列出所有的文件和目录,包括那些文件名以‘.’开始、默认会被忽略的文件。
-A, –almost-all 列出所有的文件和目录,包括那些文件名以“.”开始、默认会被忽略的文件。但是,会忽略“.”和“..”。选项–all (-a)会覆盖该选项。
-B, –ignore-backups 忽略目录中以“~”结尾的文件。该选项等价于–ignore=’*~’ –ignore=’.*~’组合。
-d, –directory 与其他类型的文件一样,列出目录名,而不是列出其内容。除非指定了–dereference-command-line(-H),–deference(-L)或–dereference-command-line-symlink-to-dir选项,否则不会解析命令行中列出的符号链接。
-H, –dereference-command-line 如果命令行参数指定了符号链接,则显示链接引用的目标的信息,而不是链接本身的信息。
–dereference-command-line-symlink-to-dir 不要解析符号链接,显示符号链接的信息。但是:如果命令行参数是一个指向目录的符号链接,则显示该目录的信息,而不是符号链接本身。当没有指定其他与解析符号链接相关的选项时,这是默认行为。(–classify (-F), –directory (-d), (-l), –dereferen[……]

READ MORE

「md5sum(1)」-

计算和检查文件的MD5值
命令语法格式
md5sum [OPTION]… [FILE]…
命令描述
命令md5sum为每个文件参数FILE计算一个128位校验和(或指纹,或消息摘要)。
如果参数FILE为’-‘,或者没有指定,则命令md5sum从标准输入中读取数据来计算校验和。md5sum还可以确定文件与校验和是否一致。
在默认输出中,每个文件会对应一行输出,该行由MD5校验和、空格、表示二进制或文本输入模式的标志、文件名这四部分组成。二进制模式用星号(’*’)表示,文本模式用空字符(”)表示。二进制模式是重要系统上的默认模式,否则文本模式是默认模式。
命令支持的选项及含义
控制输出格式
–tag 输出BSD风格的校验和,表示使用的校验和算法。作为GNU扩展,具有特殊字符的文件名通过如上所述方法被转义,在行的开始使用相同的转义指示符’\’。选项–tag隐含了二进制模式,并且禁止与–text一起使用,这会不必要地使输出格式复杂化,同时提供很少的好处。
-z, –zero 在每行的末尾输出一个零字节(NUL),而不是换行符(LF)。
此选项会使md5sum产生其他程序能够解析的输出,即使该输出中包含了嵌入换行符的数据。也不使用文件名转义。
没有指定–zero选项时,如果参数FILE包含反斜杠或换行符,则对应的输出行以反斜杠开头,并且文件名中的每个有问题的字符都使用反斜杠进行转义,即使存在任意文件名,也会使输出明确无误。
文件读取模式
-b, –binary 通过以二进制模式读取文件,并输出’*’标志,将每个输入文件视为二进制文件。这与–text选项相反。
在像GNU这样的不区分二进制文本和文本文件的系统上,该选项仅将每个输入模式标记为二进制:MD5校验和不受影响。除了标准输入是终端时读取标准输入时,此选项是MS-DOS等区分二进制和文本文件的系统的默认选项。
-t, –text 将每个输入文件作为文本处理,通过在文本模式下读取,并输出空字符(”)标志。这与–binary选项相反。这个选项是像GNU这样的系统的默认值,它不区分二进制和文本文件。在其他系统上,当标准输入是终端时,它是读取标准输入的默认值。
如果使用–tag选项,则此模式永远不会默认为。
验证校验和
-c, –check 从每个参数FILE中读取要检查的文件名和校验和信息(不是数据),并报告校验和是否与对应的文件想匹配。这种md5sum模式的输入通常是先前产生“md5sum”校验和的输出。支持三种输入格式:上述的默认输出格式、–tag输出格式、BSD反向模式格式(类似于默认模式,但不使用字符来区分二进制和文本模式)。
对于文件中每个[……]

READ MORE

「mkdir(1)」-

创建文件夹
命令语法格式
mkdir [OPTION]… DIRECTORY…
命令描述
mkdir按照给定的顺序创建每个目录DIRECTORY。如果名称已经存在,它会报告错误,除非给出-p选项并且DIRECTORY是目录。
命令支持的选项及含义
-m, –mode=MODE 将创建的目录的文件权限位设置为MODE,该模式MODE的使用与chmod(1)中的语法相同,并为出发点使用’a=rwx’(允许读取,写入和执行,以供所有人使用)。请参阅文件权限。
通常,在创建时,该目录就具有所需的文件模式位。作为一个GNU扩展,模式MODE也可能会提到特殊模式位,但在这种情况下,可能存在一个临时窗口:在该窗口期间,目录存在,但目录的特殊模式位不正确。有关如何继承目录的SETUID和SETGID位,除非以这种方式重写,请参见目录SETUID和SETGID。
-p, –parents 为每个目录参数创建缺失的上级目录,并将它们的文件权限位设置为由’u+wx’结合umask的结果。忽略已经存在的上级目录,并且不要更改它们的文件权限位。
要将任何新创建的上级的文件权限位设置为包含’u+wx’的值,你可以在调用mkdir之前设置umask。例如,如果SHELL命令(umask u=rwx,go=rx; mkdir -p P/Q)创建上级目录P,则它将上级目录的权限位设置为’u=rwx,go=rx’。要设置上级目录的特殊模式位,你可以在mkdir之后调用chmod。有关如何继承新创建的上级目录的SETUID和SETGID位,除非以这种方式重写,请参见目录SETUID和SETGID。
-v, –verbose 为每个创建的目录打印一条消息。这对于创建了上级目录时非常有用。
-Z, –context[=CTX] 如果没有指定的上下文CTX,请根据目标文件的系统默认类型调整SELinux安全上下文,与restorecon命令类似。
具有指定的特定上下文的–context选型将仅为新创建的文件设置上下文。在指定的上下文中,如果SELinux和SMACK都被禁用,则会发出警告。
–help 显示帮助并退出。
–version 显示版本信息。
相关手册
mkdir(2)
查看在线手册:http://www.gnu.org/software/coreutils/mkdir
查看info手册:info ‘(coreutils) mkdir invocation’
参考文献

man 1 mkdir, version GNU coreutils 8.28

更新日志

06/16/2018 创[……]

READ MORE

「mkfifo(1)」-

创建FIFO(创建命名管道)
命令语法格式
mkfifo [OPTION]… NAME…
命令描述
FIFO是一种特殊的文件类型,允许独立的进程进行通信。一个进程打开FIFO文件进行写入,另一个进程进行读取,之后数据可以像通常的匿名管道一样在Shell或其他地方流动。
命令支持的选项及含义
需要提供给长选项的参数也必须提供给相应的短选项。
-m, –mode=MODE 将创建的FIFO的模式位设置为MODE,MODE的格式与chmod的格式是相同的,并且权限的出发点为’a=rw’(允许每个人读写)。MODE应该只指定文件权限位。参阅文件权限。
-Z, –context[=CTX] 如果没有指定的上下文CTX,请根据目标文件的系统默认类型调整SELinux安全上下文,类似于restorecon命令。
具有指定的特定上下文CTX的长选项将仅为新创建的文件设置上下文。使用指定的上下文,但如果同时禁用SELinux和SMACK,则会发出警告。
–help 显示帮助并退出。
–version 显示版本信息。
退出状态
退出状态为零表示成功,非零值表示失败。
相关手册
mkfifo(3)
查看在线手册:http://www.gnu.org/software/coreutils/mkfifo
查看info手册:info ‘(coreutils) mkfifo invocation’
参考文献

man 1 mkfifo, version GNU coreutils 8.28

更新日志

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

READ MORE

「mknod(1)」-

创建字符或者块特殊文件
命令语法格式
mknod [OPTION]… NAME TYPE [MAJOR MINOR]
命令描述
命令mknod使用指定的名称name创建FIFO、字符特殊文件、块特殊文件。
与上面的“特殊文件类型”不同,“特殊文件”是一个术语,在Unix上具有技术含义:可以生成或接收数据的东西。通常它对应于物理硬件,例如打印机、磁盘。这些文件通常在系统配置时创建。mknod命令用于创建此类型的文件。这种设备可以一次读取一个字符,或一次读取一个“块”(多个字符),因此我们说有“块特殊文件”和“字符特殊文件”。
命令行中参数NAME后面的参数TYPE指定了要创建的文件的类型:

“p”:用于创建FIFO文件;
“b”:用于块特殊文件;
“c”:用于字符特殊文件;

在创建块特殊文件和字符特殊文件时,必须在文件类型TYPE之后给出主设备号MAJOR和次设备号MINOR。如果主次设备编号以’0x’或’0X’开始,则被解释为十六进制;如果它以’0’开始,为八进制;否则,被解释为十进制。
命令支持的选项及含义
需要提供给长选项的参数也必须提供给相应的短选项。
–help 显示帮助并退出。
–version 显示版本信息。
-m, –mode=MODE 将创建的FIFO的模式位设置为MODE,MODE的格式与chmod的格式是相同的,并且权限的出发点为’a=rw’(允许每个人读写)。MODE应该只指定文件权限位。参阅文件权限。
-Z, –context[=CTX] 如果没有指定的上下文CTX,请根据目标文件的系统默认类型调整SELinux安全上下文,类似于restorecon命令。
具有指定的特定上下文CTX的长选项将仅为新创建的文件设置上下文。使用指定的上下文,但如果同时禁用SELinux和SMACK,则会发出警告。
注意事项
由于Shell别名和内置mknod函数的存在,当直接在命令行中执行mknoe命令时,执行的可能不是本文描述的mknod命令。可以通过env调用它(即env mknod …),以此避免Shell的干扰,或者使用绝对路径来执行env命令。
相关手册
mknod(2)
查看在线手册:http://www.gnu.org/software/coreutils/mknod
查看info手册:info ‘(coreutils) mknod invocation’
参考文献

man 1 mknod, version GNU coreutils 8.28

更新日志

07/01/2018 创建[……]

READ MORE

「mktemp(1)」-

创建临时文件或者目录
命令语法格式
mktemp [OPTION]… [TEMPLATE]
命令描述
命令mktemp用于创建临时文件或者目录,然后打印出所创建的临时文件或目录的名字。由于mktemp既能创建文件,也可以创建目录,但是为了表述方便,下面我们统一使用”文件”来代指文件或目录。
文件的默认权限为u+rw;目录的默认权限为u+rwx。如果umask对权限的限制更为严格,则使用umask的权限设置。
命令支持的选项及含义
-d, –directory 创建一个临时目录。默认情况下,创建文件。
–suffix=SUFF 将SUFF追加到TEMPLATE后面;SUFF中不能包含斜线。如果TEMPLATE没有以X结尾,则该选项是隐含的。
-p DIR, –tmpdir[=DIR] 参数TEMPLATE相对于目录DIR。
如果没有指定DIR(只能在使用长选项–tmpdir时)或者是空字符串,则使用环境变量TMPDIR的值(如果可用),否则使用’/tmp’。如果指定了该选项,TEMPLATE不能是绝对路径名。然而TEMPLATE中仍然可以包含斜线,但是中间目录必须已经存在。
-t 将TEMPLATE视为相对于TMPDIR值的单个文件(如果可用),或者相对于由-p指定的目录,否则指定为’/tmp’。TEMPLATE不能包含斜杠。
此选项已弃用;使用-p且不使用-t可以提供更好的默认值(通过支持TMPDIR的命令行)和更多的灵活性(通过允许中间目录)。
-u, –dry-run 不创建任何文件或者目录,只是打印一个名字。
-q, –quiet 文件或者目录创建失败时,并不打印任何消息。
其他选项
–help 显示帮助并退出。
–version 显示版本信息。
命令行参数
TEMPLATE 临时文件的模板。其值的最后部分中至少要包含3个连续的X,用于被替换成随机字符。
如果没有指定TEMPLATE参数,则默认值为tmp.XXXXXXXXXX,并且选项–tmpdir是隐含的。
使用示例
在当前目录中创建临时文件:

# mktemp
/tmp/tmp.zTQljffojd
# mktemp file.XXXX
file.H47c

使用指定的后缀来创建文件:

# mktemp –suffix=.txt file-XXXX
file-H08W.txt
# mktemp file-XXXX-XXXX.txt
file-XXXX-eI9L.txt

如上示例。
相关手册
mkste[……]

READ MORE

「mv(1)」-

pwd移动或者重命名文件
命令语法格式
mv [OPTION]… [-T] SOURCE DEST mv [OPTION]… SOURCE… DIRECTORY mv [OPTION]… -t DIRECTORY SOURCE…
命令描述
如果给出两个文件名,则mv将第一个文件移动到第二个文件。如果给出了–target-directory(-t)选项,则mv将每个SOURCE移动到目录DEST中,SOURCE的名字保持不变,或者如果最后是一个目录,并且没有给出–no-target-directory(-T)选项则失败。
mv可以将任何类型的文件从一个文件系统移动到另一个文件系统。在fileutils 4.0之前,mv只能在文件系统之间移动常规文件。例如,现在mv可以将包括特殊设备文件的整个目录层次结构从一个分区移动到另一个分区。它首先复制文件(复制使用的是一些与cp -a用来复制目录和文件相同代码),然后(假设复制成功)它将删除原始文件。如果复制失败,则将复制到目标分区的部分删除。如果要将三个目录从一个分区复制到另一个分区,并且第一个目录的副本成功,但第二个目录的副本不成功,则第一个目录将保留在目标分区上,第二个和第三个目录将保留在原始分区上。
mv会试图复制扩展属性(xattr),其中可能包括SELinux上下文,ACL,Capability。一旦发生故障,会产生’Operation not supported’警告。
如果目标文件存在但通常不可写,标准输入是终端,并且未给出-f或–force选项,则mv会提示用户是否替换该文件。(你可能拥有该文件,或对其目录拥有写入权限。)如果用户的响应不是肯定的,则会跳过该文件。
警告:当SOURCE可能是指向目录的符号链接时,在SOURCE名中避免使用尾部斜线。否则,mv可能会做一些非常令人惊讶的事情,因为它的行为取决于底层的rename系统调用。在具有现代Linux内核的系统上,它会因errno=ENOTDIR而失败。但是,在其他系统上(至少FreeBSD 6.1和Solaris 10),它不会重命名符号链接,而是重命名符号链接引用的目录。请参阅尾部斜杠。
注意:mv只会替换目标中的空目录。相互冲突的填充目录会被跳过,并产生诊断信息。
命令支持的选项及含义
-b, –backup[=method] 备份每个可能被覆盖或删除的文件。参阅备份选项。
-f, –force 删除DEST之前不要提示用户。如果指定了多个-i,-f,-n选项,则只有最后一个生效。
-i, –interactive 提示是否覆盖每个现有DEST,而不考虑其权限。如果用户的响应不是肯定的,则跳过该文件。如果指定了多个-i,-[……]

READ MORE

「nice(1)」-

使用指定的调度优先级运行程序
命令语法格式
nice [OPTION] [COMMAND [ARG]…]
命令描述
如果没有给出参数,那么nice会打印出当前的niceness值。否则,命令nice根据调整的niceness值来运行命令COMMAND。默认情况下,它的niceness增加10。
niceness值至少从-20开始(具有高优先级的进程会获得更多资源,因此会减慢其他进程)最高到19(具有较低优先级的进程,它自身运行缓慢,但对其他运行进程的速度影响较小)。某些系统可能具有更广泛的niceness范围;相反,其他系统可能会强制实施更严格的限制。如果尝试将niceness设置为支持范围之外的数值,则会被视为尝试使用系统支持的最小值或最大值。
不要把niceness与调度优先级混淆,调度优先级允许应用程序确定调度线程的运行顺序。与优先级不同,niceness是对调度程序的建议,调度程序可以自由忽略。此外,作为一个术语,POSIX根据一个nice值定义了nice的行为,这是一个niceness和最小niceness之间的非负差异。虽然nice符合POSIX,但它的文档和诊断使用术语“niceness”来与历史实践兼容。
命令支持的选项及含义
需要提供给长选项的参数也必须提供给相应的短选项。
-n adjustment, –adjustment=adjustment 在命令的niceness中添加由adjustment指定的值,而不是默认的10。如果adjustment是负数值的,并且你缺少适当的权限,则命令nice会发出警告,此外就像指定adjustment为零一样。
为了兼容性,命令nice还支持过时的选项语法-adjustment,但是新脚本中应该使用新的–adjustment(-n)选项调整。
–help 显示帮助并退出。
–version 显示版本信息。
注意事项
参数COMMAND不能是特殊的内置程序(请参阅特殊内置实用程序)。
由于Shell别名和内置的nice函数,在脚本中直接使用nice可能会获得与此处描述的功能不同的功能。通过env调用它(即env nice)以避免Shell的干扰。或者通过绝对路径进行调用。
注意,要更改现有进程的niceness值,需要使用renice(1)命令。
命令nice仅安装在具有POSIX函数setpriority系统上,因此可移植脚本不应依赖于非POSIX平台中nice的存在。
退出状态
0 没有指定niceness值,并打印当前的niceness值。
125 命令nice自身发生错误。
126 找到命令COMMAND,但是无法调用。
127[……]

READ MORE

「nl(1)」-

为文件添加行号
命令语法格式
nl [OPTION]… [FILE]…
命令描述
nl将输入的文件数据分解为(逻辑)页面;默认情况下,每个逻辑页面的行号从1开始。nl会将所有输入文件视为单个文件,所以行号也是连续的;它不会重置文件之间的行号或逻辑页面。
一个逻辑页面由三部分组成:标题,正文,页脚。任何部分都可以是空的。每个部分都可以使用不同于其他部分的风格编号。
在输入文件中,逻辑页中部分的开始由下面的字符序列进行标识:

‘\:\:\:’:页眉部分的开始;
‘\:\:’:正文部分的开始;
‘\:’:正文部分的开始;

这些字符串中的’\’和’:’两个字符可以通过选项进行更改(参见下文-d选项),但是每个字符串的模式和长度不能更改。
部分的分隔符会在输出时使用空行替换。输入文件中第一个分隔符字符串之前的任何文本都被认为是正文的一部分,因此nl会将不包含分隔符的文件视为单个正文部分。
默认将处理后的文件结果写入到标准输出中,输出行的前面会附带行号。如果未指定文件,或者文件为-,则从标准输入中读取内容。
命令支持的选项以含义
长选项的必填参数,在短选项中也必须提供。
-b, –body-numbering=STYLE 设置每个逻辑页中正文部分的行号风格。如果一个行没有设置行号,则当前的行号不会增加,但是行号分隔字符(参考-s选项)依会添加到行前。
STYLE的值如下:

‘a’:给所有的行添加行号。
‘t’:只为非空行添加行号。该风格对于正文是默认的。
‘n’:不给行添加行号。该风格对于页眉和页脚是默认的。
‘pBRE’:只给那些匹配基本正则表达式BRE的行。请参阅GNU实现的Grep手册中的正则表达式。

-d, –section-delimiter=CC 将部分的分隔符字符设置为CC;默认值是’\:’。如果只给出一个C,则第二个保持为’:’。(请记住,需要使用引号或额外的反斜杠来转义’\’或其他元字符,以避免SHELL扩展这些字符。)
-f, –footer-numbering=STYLE 类似于–body-numbering选项。
-h, –header-numbering=STYLE 类似于–body-numbering选项。
-i, –line-increment=NUMBER 设置行号的步长,emmmm。。。。,增长值,默认为1,即下一个行号值是上一个行号值加1。如果NUMBER为2,那么下一个行号值是上一个行号值加2。
-l, –join-blank-lines=NUMBER 将多个连续的空白行视为一个[……]

READ MORE

「nohup(1)」-

执行命令,并忽略HUP信号
命令语法格式
nohup COMMAND [ARG]…
nohup OPTION
命令描述
执行COMMAND,并忽略HUP信号(SIGHUP,1)。因此,在终端退出后该命令COMMAND可以继续在后台运行。
如果标准输入是终端,请重定向终端,以便终端会话不会错误地将终端用于命令。使替代文件描述符不可读,可以将错误地从标准输入读取的数据命令可以报告出错误。这个重定向是一个GNU扩展;如果要移植到非GNU主机中,程序中可以使用’nohup command [arg] … 0>/dev/null’来代替。
如果标准输出是终端,则命令的标准输出将追加到当前目录下的nohup.out文件;如果当前目录下不能写入,则将其追加到文件$HOME/nohup.out;如果前面的两个都无法写入,则不运行该命令。无论当前的umask设置如何,由nohup创建的nohup.out文件都只能由所属用户进行读写。
如果标准错误是终端,它通常被重定向到与标准输出相同的文件描述符。但是,如果标准输出关闭,则标准错误终端输出将被追加到nohup.out文件,如上所述。
要将命令的输出捕获到nohup.out以外的文件,可以输出重定向。例如,要捕获make的输出:

# nohup make > make.log

命令nohup不会自动将它在后台运行的命令放入;你必须明确地做到这一点,可以通过使用’&’结束命令行。另外,nohup不会改变命令的优先级;这需要使用nice,例如’nohup nice command’。
命令支持的选项及含义
–help 显示帮助并退出。
–version 显示版本信息。
注意事项
你所使用的Shell中可能有内建的nohup指令,直接执行nohup可能会不是本文描述的版本。可以使用/usr/bin/nohup手动指定使用非内建的nohup,或者使用env nohup…来执行。有关内建的nohup指令所支持的选项的详细信息,请参阅你所使用的Shell的文档。
命令参数COMMAND不能是内建的命令,参考「内置的特殊实用程序」一文中的说明。
如果你的命令使用了‘&’符号直接在后台运行,那并没有必要使用nohup命令。通常使用nohup的情景是:我们的命令运行在前台,而由于终端的异常退出(或远程连接断开)会导致命令的退出,这时候你应该使用nohup,即使终端退出,命令也不会退出。
退出状态
125 如果nohup自身失败,并且没有设置POSIXLY_CORRECT环境变量。如果设置了POSIXLY_CORRECT环境变量,则nohup的内部故[……]

READ MORE

「nproc(1)」-

打印可用的处理器单元数
命令语法格式
nproc [OPTION]…
命令描述
打印当前进程可用的处理单元数,可能少于在线处理器数。如果无法访问此信息,则打印已安装的处理器数量。如果设置了OMP_NUM_THREADS或OMP_THREAD_LIMIT环境变量,则它们将分别确定最小和最大返回值。结果保证大于零。
命令支持的选项及含义
–all 打印系统上已安装处理器的数量,这可能大于在线数量或当前进程可用的数量。
在这种情况下,不支持OMP_NUM_THREADS或OMP_THREAD_LIMIT环境变量。
–ignore=N 如果可能,请排除此数量N的处理单元。
–help 显示帮助并退出。
–version 显示版本信息。
退出状态
退出状态为零表示成功,非零值表示失败。
相关手册
查看在线手册:http://www.gnu.org/software/coreutils/nproc
查看info手册:info ‘(coreutils) nproc invocation’
参考文献

man 1 nproc, version GNU coreutils 8.28

更新日志

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

READ MORE

「numfmt(1)」-

数字格式转化。将数字转为易读的格式,或者从易读的格式进行转化
命令语法格式
numfmt [OPTION]… [NUMBER]…
命令描述
重新格式化数字NUMBER。如果没有指定NUMBER,则从标准输入中读取数字。
命令支持的选项及含义
长选项的必填参数,在短选项中也必须提供。
–debug 将可能的错误用法的警告消息打印到标准错误。
-d, –delimiter=X 使用字符X作为输入字段分隔符(默认值:空格)。注意:使用非默认分隔符会关闭自动填充。
–field=FIELDS 转换输入字段FIELDS中的数字。默认值1,即默认只转换第一列。FIELDS支持cut(1)风格的字段范围,参见「FIELD支持cut(1)风格的字段范围」部分。
–format=FORMAT 使用printf风格的浮点FORMAT字符串。FORMAT必须包含一个’%f’指令,以及可选的`’`、`-`、’0’、宽度、精度修饰符。`’`修饰符(%’f) 将启用–grouping;’-‘修饰符将启用左对齐–padding;宽度修饰符将启用右对齐–padding;’0’宽度修饰符(不带’-‘修饰符)将在数字上生成前导零,直到指定的宽度。像’%.1f’这样的精度规格将会覆盖由–to选项自动缩放而从输入数据集中确定的精度。
–from=UNIT 根据单位UNIT来缩放输入的数字。见下面的单位。默认值不是缩放,为none,这意味着如果有后缀(例如’M’,’G’)会触发错误。参见「单位选项」部分。
–from-unit=N 指出输入数字的单位大小。默认为1。例如,如果输入数字“10”代表10个512字节的单元,则使用’–from-unit=512’。
–grouping 根据当前语言环境的分组规则(例如,千位分隔符字符,通常’.’(点)或’,’逗号)将输出数字中的数字分组。该选项在’POSIX/C’语言环境中不起作用。
–header[=N] 打印第N行(默认值:1),不进行任何转换。
–invalid=MODE 对输入错误的默认操作是立即用状态码2退出,–invalid=’abort’为该默认模式。在“fail”模式下,为每个转换错误输出一个警告,然后以状态2退出。在’warn’模式下,即使在存在转换错误的情况下,退出状态也始终为0,模式为’ignore’不打印任何诊断信息。
–padding=N 通过向输出数字添加空格的方式,将输出数字填充到N个字符。如果N是正数,则数字将右对齐。如果N是负数,则数字将左对齐。默认情况下,数字会根据输入行的宽度自动对齐(仅适用于默认分隔符)。
–round=METHOD 在转换数字表示时,按[……]

READ MORE

「od(1)」-

功能简述
以八进制或者其他格式打印文件
常用命令
显示 hexdump(1) 格式的输出:

od -A x -t x1z -v “/path/to/file”

命令 od 的默认输出格式:

od -A o -t oS -w16 “/path/to/file”

语法格式

od [OPTION]… [FILE]…
od [-abcdfilosx]… [FILE] [[+]OFFSET[.][b]]
od –traditional [OPTION]… [FILE] [[+]OFFSET[.][b] [+][LABEL][.][b]]

命令描述
od会生成一个文件FILE的清楚表示,默认是八进制。如果没有指定FILE或者FILE为-,则从标准输入中读取文件。
每个输出行由输入文件中的偏移量组成,然后紧跟偏移量的是文件中的数据组。默认情况下,od以八进制打印偏移量,并且每组文件数据都是一个C语言的short int类型的输入值,并打印为单个八进制数字。
偏移量OFFSET指定了在格式化输出之前要跳过多少个输入字节。默认情况下,OFFSET被解释为一个八进制数字,但OFFSET后面可选的结尾小数点可以使它被解释为十进制数值。如果没有指定小数点,并且OFFSET以’0x’或’0X’开始,则它会被解释为十六进制数字。如果OFFSET存在尾随的’b’,跳过的字节数将被偏移量乘以512。
对于命令既可以是第一种形式又可以是第二种形式(比如od foo 10,你说10是文件还是个偏移量?)的情况:如果最后一个操作数以’+’开头或一个数字(如果有两个操作数),则假定是第二种形式,即最后一个操作数是便宜量。例如,在’od foo 10’和’od +10’中,’10’是偏移量,而在’od 10’中’10’是文件名。
命令选项
-A, –address-radix=RADIX 选择输出结果中文件偏移列的进制。参数RADIX可以是以下之一:

‘d’ 十进制;
‘o’ 八进制;
‘x’ 十六进制;
‘n’ 在输出结果中不打印进制;

默认为八进制。
–endian={big|little} 对输入字节进行重新排序,以不同的字节顺序处理输入数据,或者提供独立于当前系统的排序规则的一致输出。
交换是根据指定的类型–type的大小和–endian的顺序执行的,可以是“little”或“big”。
-j, –skip-bytes=BYTES 在格式化输出之前跳过从输入字节中跳过BYTES字节。如果字节BYTES以’0x’或’0X’开头,则视为十六进制数[……]

READ MORE

「paste(1)」-

合并多个文件中的行
命令语法格式
paste [OPTION]… [FILE]…
命令描述
paste向标准输出中写入行,每一输出的行依次对应每个给定文件的行,由TAB字符分隔。如果没有指定FILE或者FILE为’-‘,则从标准输入中读取文件内容。
如果你不理解这个命令的用法,可以先查看「使用示例」部分。
命令支持的选项及含义
需要提供给长选项的参数也需要提供给对应的短选项。
-d, –delimiters=LIST 连续使用LIST中的字符,而不是TAB,来分隔要被合并的行。当LIST中的字符耗尽时,则再次从LIST的第一个字符重新开始。
-s, –serial 一次粘贴一个文件的行,而不是每个文件的一行。
-z, –zero-terminated 使用零字节(ASCII NUL)而不是换行符(ASCII LF)来分隔每个项。即,将输入视为由ASCII NUL分隔的项目,并用ASCII NUL终止输出项目。
这个选项可以和’perl -0’或者’find -print0’和’xargs -0’等等命令结合使用,它们可以可靠地处理任意文件名,甚至包含空格或其他特殊字符。
–help 显示帮助信息并退出。
–version 显示版本信息。
使用示例
下面的这个示例会解释paste命令的作用。我们有如下文件:

# cat num2
1
2

# cat let3
a
b
c

在执行paste num2 let3 num2后,输出如下:
1 a 1
2 b 2

c

从混合标准输入与输入行,执行paste – let3 – < num2命令,输出如下:
1 a 2

b
c

连续添加一个空格:

# seq 4 | paste -d ‘ ‘ – –
1 2
3 4

选项-s的使用示例:

# paste -s num2 let3
1 2
a b c

选项-d的使用示例:

# paste -d ‘%_’ num2 let3 num2
1%a_1
2%b_2
%c_

输出如上所示。
相关手册
查看在线手册:http://www.gnu.org/software/coreutils/paste
查看info手册:info ‘(coreutils) paste invocation’
参考文献

man 1 pas[……]

READ MORE

「pathchk(1)」-

检查文件名是否有效或者是否具有可移植性
命令语法格式
pathchk [OPTION]… NAME…
命令描述
对于每一个路径NAME,如果下面条件为真,则pathchk打印一个错误消息:

在NAME中的一个现有目录没有搜索(执行)权限;
NAME的长度大于操作系统支持的最大值;
NAME的一个组件的长度比其文件系统的最大长度长;

注意,文件名NAME不存在并不是一个错误。
命令支持的选项及含义
-p 如果下面这些条件中的任何一个条件成立,则不执行基于底层文件系统的检查,而是打印错误消息:

文件名为空。
文件名包含POSIX可抑制文件名字符集外的字符,即「ASCII字母」、「数字」、「.」、「_」、「-」、「/」;
文件名或其组件之一的长度超过了POSIX可移植性的最低限制。

-P 如果文件名为空,或者包含以’-‘开头的组件,则打印一条错误消息。
–portability 如果文件名不可移植到所有POSIX主机,则打印错误消息。该选项等同于’-p -P’。
–help 显示帮助信息并退出。
–version 显示版本信息并退出。
相关手册
完整在线文档:http://www.gnu.org/software/coreutils/pathchk
查看info手册:info ‘(coreutils) pathchk invocation’
参考文献

man 1 pathchk, version GNU coreutils 8.26

更新日志

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

READ MORE

「pinky(1)」-

用户信息查看程序。是finger(1)命令的轻量级版本
命令语法格式
pinky [OPTION]… [USER]…
命令描述
pinky是finger(1)命令的轻量级版本;用于打印用户的信息。utmp文件为/var/run/utmp。
命令支持的选项及含义
长格式的输出
-l 为指定用户USER产生一个长格式的输出。输出中包含了当前登录名、主目录等信息。
-b 在长输出(使用了-l选项)中,忽略用户的家目录和当前使用的SHELL。
-h 在长输出(使用了-l选项)中,忽略用户的项目文件。
-p 在长输出(使用了-l选项)中,忽略用户的计划文件。
短格式的输出
-s 进行简单的输出,这是默认的。
-f 在输出中忽略列的标题行。
-w 在输出中忽略用户名(Name)。
-i 在输出中忽略用户名(Name)、远程主机(Where)。
-q 在输出中忽略用户名(Name)、远程主机(Where)、idle时间(Idle)。
帮助选项
–help 显示帮助信息并退出。
–version 显示版本信息并退出。
相关手册
完整在线文档:http://www.gnu.org/software/coreutils/pinky
查看info手册:info ‘(coreutils) pinky invocation’
参考文献

man 1 pinky, version GNU coreutils 8.26

更新日志

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

READ MORE

「pr(1)」-

转换文件的内容,用于排版打印
命令语法格式
pr [OPTION]… [FILE]…
命令描述
命令pr将参数FILE的内容写入标准输出,它会对输出数据进行分页,并可以以多列格式输出、可以合并所有文件、并行打印、每列一个。
默认情况下,每页会打印一个高度为5行的标题:两个空白行;包含日期、文件名、页数;还有两个额外的空白行。并且还会打印一个高度为5行的空白行页脚。默认的页面高度(page_length)是66行,因此默认的文本行的高度为56行。标题中的文本行采用“date string page”的形式,并会在字符串周围插入空格,以便该文本行的宽度为整个页面的宽度(page_width)。这里,date是日期(有关详细信息,请参阅-D或–date-format选项);string是居中的标题字符串;page标识页码。LC_MESSAGES语言环境类别影响page的拼写;在默认的C语言环境中,它形如“Page number”,其中number是十进制页码。
输入中的换页符(Form Feed)会导致输出中的页面中断。多个换页符号会导致生成空白页。
列宽度相等,由可选字符串分隔(默认为“空格”)。对于多列输出,除非使用-J选项,否则始终将行截断为page_width(默认为72)。对于单列输出,默认情况下不会发生行截断,在这种情况下,可以使用-W选项截断行。
命令支持的选项及含义
需要提供给长选项的参数也必须提供对对应的短选项。
+FIRST_PAGE[:LAST_PAGE], –pages=FIRST_PAGE[:LAST_PAGE] 打印第FIRST_PAGE页到第LAST_PAGE页。比如,pr +2:4,打印第2页到第4页。如果没有指定:LAST_PAGE,则打印到文件结束。对于输入页面中存在的换页符号,会在输出页中产生对应数量的新页面。进行页面统计时,使用和不使用:FIRST_PAGE是相同的。默认情况下,计数从输入文件的第一页开始(不是第一页打印)。可以通过-N选项更改行编号。
-COLUMN, –columns=COLUMN 对于每个单个文件FILE,将每一页分为COLUMN列,然后垂直打印列。COLUMN的默认值为1。emmmmm….这个选项什么意思呢?报纸和杂志的那种排版你知道吧,一列一列的向下读的那种排版,那种排版不像我们平时看的书籍,使用这选项就可以生成那种排版。
因为默认的页面总宽度是固定的,所以列宽会随着COLUMN的增加而自动减小;除非使用-W/-w选项来增加页面宽度。因为显示COLUMN列,如果页面宽度不足,该选项很可能会导致一些行被截断,使得无法显示完整。每个页面中列的行数是均衡的。选项-e和-i可以作用于多个文本列输出,与该选项[……]

READ MORE

「printenv(1)」-

打印全部或部分的环境变量
命令行语法格式
printenv [OPTION]… [VARIABLE]…
命令描述
如果没有指定参数名,则printenv会打印所有环境变量值。否则,只打印命令行中指定的环境变量。如果命令行中指定的变量不存在,则不会打印。
打印指定的全局变量VARIABLE。如果没有指定VARIABLE,则打印全部的VARIABLE,格式为NAME=VALUE。
命令行选项
-0, –null 默认情况下,每行显示一个条目,行尾为换行符(ASCII LF)。使用该选项后,每个条目的结尾使用零字节(ASCII NUL)。
该选项使printenv生成其他程序能够解析的输出,比如xargs -0。尤其是在输出条目中包含嵌入换行符之类的特殊字符时非常有用。
–help 显示帮助信息。
–version 显示版本信息并退出。
注意事项
注意:SHELL中可能包含了自己版本的printenv,通常会覆盖这里表述的版本,有关内容可以查看SHELL的手册。可以使用env printenv命令来调用本文所说的printenv指令。
退出状态
0 命令行指定的变量都找到了。
1 至少有一个变量没有找到。
2 发生了写错误。
相关手册
查看在线手册:http://www.gnu.org/software/coreutils/printenv
查看info手册:info ‘(coreutils) printenv invocation’
参考文献

man 1 printenv, version GNU coreutils 8.26

更新日志

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

READ MORE

「printf(1)」- 格式化数据并打印

常用命令
格式化数字输出:

命令语法格式

printf FORMAT [ARGUMENT]…

printf OPTION

命令描述
命令printf打印以参数FORMAT指定的格式打印ARGUMENT,解析参数FORMAT中的’%’指令和’\’转义来格式化数字和字符串参数,其方式与C语言中’printf’函数大致相似。
有关详细信息,请参阅“GNU C库参考手册”中的「printf格式化指令」,关于二者之间的差异参考下面的「与printf(3)函数之间的差异」部分。
命令支持的选项及含义
–help 显示帮助信息。
–version 显示版本信息并退出。
转义序列
请参阅“GNU C库参考手册”中的printf格式化指令。
与printf(3)函数之间的差异
必要时,命令printf会重用FORMAT参数来转换所有给定的参数ARGUMENT。例如,命令printf ‘%s#’ a b输出’a#b#’这与printf ‘%s#%s#’ a b的输出相同。
缺少的参数ARGMENT被视为空字符串()或零(0),这取决于上下文是字符串还是数字。例如,命令printf %sx%d”打印的结果为’x0’。
无意义的转义符,比如’\c’,会导致命令printf终止解析,不再产生输出。例如,命令printf ‘A%sC\cD%sF’ B E输出’ABC’。
十六进制转义序列’\xhh’最多可以有两位,而不同于C语言中可以有无限数量的数字。例如,命令printf ‘\x07e’打印两个字节,而C语言中printf (“\x07e”)打印只有一个字节。
指令“%b”会将参数ARGUMENT中的转义序列进行特殊处理,对比命令printf ‘%s’ “\n1″与命令printf ‘%s’ “\n1″的输出。所不同的是八进制转义的形式为“\0ooo”其中ooo是0至3个八进制数字。如果’\ooo’是9位值(超过255),则忽略第9位。如果还给出了精度,则它限制从转换后的字符串打印的字节数。
指令’%q’会以”Shell可重用”的格式打印其参数字符串,”Shell可重用”指的是可以被大多数Shell重用作输入。使用POSIX建议的$语法转义不可打印的字符,并适当引用Shell元字符。这是类似于ls –quoting=shell-escape”的输出。
数字类型的参数必须是简单的C常量,可能带有前导’+’或’-‘。例如,printf %.4d -3输出’-0003’。
如果一个数字类型的参数的前导字符是引号(单引号或双引号),然后输出为紧随引号字符的值。如果设置了POSIXLY_CORRECT环境变量,[……]

READ MORE

「ptx(1)」-

生成文件的置换索引
命令语法格式
ptx [OPTION]… [INPUT]… (without -G) ptx -G [OPTION]… [INPUT [OUTPUT]]
命令描述
命令ptx读取文本文件,并生成置换索引,每个关键字包含其上下文中。关于什么是置换索引参考「什么是置换索引(permuted index)?」部分中的介绍。
请注意,对于任何作为选项值的文件参数,或作为输入文本文件,可以使用单个短划线(“-”),在这种情况下,表示使用标准输入。但是,每个程序调用多次使用此约定是没有意义的。
以下各节介绍了各个选项。
命令支持的选项及含义
常规选项:影响一般程序行为的选项
–help 显示帮助信息。
–version 显示版本信息并退出。
-G, –traditional 选项-G(–traditional)禁用所有GNU扩展功能,并使用传统模式,因此会引入一些限制,并更改程序的几个默认选项值。如果未指定-G选项,则始终启用GNU扩展。在本文档中的适当位置记录了命令ptx的GNU扩展。有关完整列表,请参阅「在ptx中的兼容性」部分。
当启用GNU扩展时,选项后可能有零个、一个、多个文件参数FILE:

如果没有文件参数FILE,则程序将从标准输入中读取数据。
如果有一个或多个文件,它们指的是输入文件名,这些文件都是依次被读取的,就好像所有输入文件都被连接在一起一样。但是,每个文件之间存在完整的上下文中断,并且在要求自动引用时,文件名和行号会引用单个文本输入文件。
在所有情况下,程序都将生成的置换索引输出到标准输出。

当未启用GNU扩展时,即当程序在传统模式下运行时,除选项外可能还有零个、一个、两个参数:

如果没有参数,程序将读取标准输入,并将置换索引输出到标准输出中。
如果只有一个参数,则该参数被视为要读取的文本,而不是从标准输入中读取。
如果给出了两个参数,则它们分别为要读取的输入文件名和要生成的输出文件名。请注意,在这种情况下,第二个参数给出的文件内容将被销毁。此行为由System V的ptx兼容性决定;在GNU标准中,通常不鼓励出现非选项引入的输出参数。

如前所述,此选项禁用所有GNU扩展到ptx并切换到传统模式。
字符集选择:基础字符集注意事项
正如现在的设置,命令ptx(1)假定输入文件使用8位ISO 8859-1代码编码(也称为Latin-1字符集),除非ptx是为MS-DOS编译的,在这种情况下它使用IBM-PC的字符集。(GNU ptx不再适用于较小的MS-DOS机器。)与7位ASCII相比,字母字符集不同;这改变了正则表[……]

READ MORE