Relative Content

LINUX MANUAL PAGES

category

「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

「truncate(1)」- 缩小或扩展文件的大小

常用命令
清空文件:

truncate -s 0 /path/to/file

语法格式

truncate OPTION… FILE…

命令描述
如果参数FILE指定了一个不存在的文件,则会进行创建。
如果FILE的大小超过了指定的大小,则多余的数据会丢失。如果FILE的大小小于指定的大小,truncate将会使用零字节填充FILE。
命令选项
需要提供给长选项的参数也必须提供给对应的短选项。
-c, –no-create 如果文件不存在,则不要进行创建文件。
-o, –io-blocks 将SIZE(参考-s选项)视为文件的I/O块的数量,而不是字节数。
-r, –reference=RFILE 将每个文件的大小设置为基于RFILE的大小。
-s, –size=SIZE 根据SIZE设置或调整每个文件的大小。SIZE以字节为单位,除非指定了–io-blocks。
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’。
SIZE也可以由以下之一单位作为前缀,以根据当前大小调整每个文件的大小:

‘+’ => 增加。比如,+500表示将文件增加500字节。
‘-’ => 减少。不解释。
‘<’ => 最多。不解释。
‘>’ => 最少。比如,>500表示文件最少为500字节;如果少于500字节,则扩展到500字节;如果大于500字节,则不对文件进行操作。
‘/’ => 减小,使其成为SIZE的倍数。比如,/2表示缩小文件,直到文件大小是2的倍数。
‘%’ => 增大,使其成为SIZE的倍数。比如,/2表示增大文件,直到文件大小是2的倍数。

–help 显示帮助信息并退出。
–version 显示版本信息并退出。
附加说明
退出状态
退出状态为零表示成功,非零值表示失败。
相关手册
dd(1), truncate(2), ftruncat[……]

READ MORE

「tsort(1)」-

执行拓扑排序
命令语法格式
tsort [OPTION] [FILE]
命令描述
tsort对给定文件FILE执行拓扑排序。如果没有指定参数FILE或者参数FILE为’-‘,则从标准输入中读取。
tsort读取它的输入,并将其做为字符串的一部分,由空白分隔,表明部分排序。输出则是对应于给定的部分排序的总排序。
tsort检测输入中的任何环形拓扑,并将遇到的第一个环形拓扑写入标准错误。
命令支持的选项及含义
–help 显示帮助信息并退出。
–version 显示版本信息并退出。
退出状态
退出状态为零表示成功,非零值表示失败。
使用示例
如下示例,对于命令:

# tsort <<EOF
a b c
d
e f
b c d e
EOF

产生的输出如下:

a
b
c
d
e
f

考虑一个更现实的例子。你在一个文件中有大量的函数,除了一个函数外,它们都被声明为静态的。目前,一个(称为main)是文件中定义的第一个函数,它所调用的函数会直接跟在它后面,然后后面再跟着它们所调用的函数。假设你决定利用原型,所以你必须选择 在声明所有这些函数之间(这意味着从定义中复制大量信息)并重新安排函数,以便尽可能地在函数被使用之前进行定义。使后一个过程自动化的一种方法是获得它直接调用的函数的每个函数的列表。许多程序可以生成这样的列表。他们描述了一个调用图。考虑下面的列表,其中给定的行指示左侧的函数直接调用右侧的函数:

main parse_options
main tail_file
main tail_forever
tail_file pretty_name
tail_file write_header
tail_file tail
tail_forever recheck
tail_forever pretty_name
tail_forever write_header
tail_forever dump_remainder
tail tail_lines
tail tail_bytes
tail_lines start_lines
tail_lines dump_remainder
tail_lines file_lines
tail_lines pipe_lines
tail_bytes xlseek
tail_bytes start_bytes
tail_bytes[……]

READ MORE

「tty(1)」-

打印当前终端连接到的标准输入的文件名
命令语法格式
tty [OPTION]…
命令描述

Print the file name of the terminal connected to standard input.

命令支持的选项及含义
-s, –silent, –quiet 什么都不打印;只返回退出状态。参考下面的「退出状态」部分。
–help 显示帮助信息并退出。
–version 显示版本信息并退出。
退出状态
0 如果标准输入是一个终端。
1 如果标准输入是一个非终端的文件。使用nohup(1)执行tty命令,此时tty会以状态值1退出。
2 参数错误。
3 发生写错误。
相关手册
查看在线手册:http://www.gnu.org/software/coreutils/tty
查看info手册:info ‘(coreutils) tty invocation’
参考文献

man 1 tty, version GNU coreutils 8.28

更新日志

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

READ MORE

「uname(1)」-

打印系统信息
命令语法格式
uname [OPTION]…
命令描述
命令uname打印有关机器和它所运行的操作系统的信息。如果没有给出选项OPTION,则默认执行-s选项。
如果给出多个选项或-a选项,则会按照如下顺序打印相关的信息:

kernel-name nodename kernel-release kernel-version
machine processor hardware-platform operating-system

输出的信息可能包含内部空格,因此此类输出结果可能无法进行可靠地解析。在下面的例子中:

# uname -a
Linux linux 4.9.0-kali3-amd64 #1 SMP Debian 4.9.18-1kali1 (2017-04-04) x86_64 GNU/Linux

上面的命令按如下顺序对应相应的属性「Linux」 「linux」 「4.9.0-kali3-amd64」 「#1 SMP Debian 4.9.18-1kali1 (2017-04-04)」 「x86_64」 <processor> <hardware-platform> 「GNU/Linux」,由于处理器和硬件是未知的(unknown),所以输出中并没有显示。
命令支持的选项及含义
-a, –all 打印所有的信息,但如果处理器类型和硬件平台名称是未知的,则省略它们。
-s, –kernel-name 打印内核名称。POSIX 1003.1-2001(参见「标准一致性」)将此称为“操作系统的实现”,因为POSIX规范本身没有“内核”的概念。内核名称可能与由-o(–operating-system)选项打印的操作系统名称相同,但可能有所不同。某些操作系统(例如FreeBSD,HP-UX)与其底层内核具有相同的名称;其他(例如,GNU/Linux,Solaris)则不是。
-n, –nodename 打印网络节点主机名。
-r, –kernel-release 打印内核发行版本。
-v, –kernel-version 打印内核版本。
-m, –machine 打印机器硬件名称(有时称为硬件类别或硬件类型)。
-o, –operating-system 打印操作系统的名称。
-p, –processor 打印处理器类型(有时称为指令集架构或ISA)。如果此信息不可用,则打印“unknown”。注意这是不可移植的(即使在多个不同的GNU/Linux发行版中也是如此)。
-i, –hardware-platfor[……]

READ MORE

「unexpand(1)」-

将空格转化为制表符
命令语法格式
unexpand [OPTION]… [FILE]…
命令描述
命令unexpand将给定的文件FILE的内容写入标准输出,并将每行开始处的空白转换为所需的多个制表符。在默认的POSIX语言环境中,“空白”指的是空格或制表符;其他语言环境中可能会指定其他空白字符。
如果未指定文件FILE,或者FILE为’-‘,则从标准输入中读取数据。
默认情况下,命令unexpand仅转换在每行初始的空白(位于所有非空白字符之前的空白)。在输出中,它会保留退格字符(BS);他们减少了制表符(TAB)计算的列数。默认情况下,每8个空白列才会被设置为一个制表符。
命令支持的选项及含义
用于长选项的必须参数也必须提供给对应的短选项。
–help 显示帮助信息并退出。
–version 显示版本信息并退出。
-a, –all 还要在制表符停止之前,转换两个或多个空白的所有序列,即使它们出现在一行中的非空白字符之后。
–first-only 只转换每行初时的空白,即位于所有非空白字符之前的空白。覆盖-a选项。
-t tab1[,tab2]…, –tabs=tab1[,tab2]… 该选项隐含了-a选项的功能。除此之外:
如果只给出一个制表位,形如-t tab1,则将在每tab1列的空白设置为一个制表符,而不是默认的每8列。
如果给出多个制表位,形如-t 1,3,4,则将制表符分别设置在tab1,tab2,…指定的位置上(从0开始编号),在制表位之外没有改变的地方留下空白。多个制表位之间既可以用空格分隔,也可以逗号分隔。
作为一个GNU扩展,指定的最后一个制表位可以用’/’作为前缀,指示了用于其余位置的制表符的大小。例如,–tabs=2,4,/8,表示将在第2和第4位设置制表位,此后是8的倍数位置设置一个制表符。
另外,最后一个制表位可以用“+”作为前缀,以指示用于剩余位置的制表符的大小,与最后明确指定的制表位间的偏移量。例如,要忽略差异输出中出现的1个字符的装订线,可以使用–tabs=1,+8来指定1个字符的偏移量,这将在位置1,9,17…处设置制表符。
为了兼容性,GNU的unexpand支持过时的选项语法,-tab1[,tab2]…,其中制表位必须用逗号分隔。与-t不同,这个过时的选项语法并不隐含了-a选项。新脚本应该使用–first-only -t tab1[,tab2]…来代替这种旧的用法。
相关手册
expand(1)
查看在线手册:http://www.gnu.org/software/coreutils/unexpand
查看inf[……]

READ MORE

「uniq(1)」-

报告或者忽略重复的行
命令语法格式
uniq [OPTION]… [INPUT [OUTPUT]]
命令描述
命令uniq用于打印输入文件INPUT中唯一的行,可以用于行级别的去重操作。
如果没有指定INPUT或者INPUT为‘-’,则从标准输入中读取数据。如果没有指定输出文件OUTPUT,则将结果打印到标准输出中。
默认情况下,命令uniq打印其输入文件中的行,但它会丢弃连续重复行中除第一行以外其他的行,因此不会重复输出行。通过指定选项,它可以丢弃不重复的行,或丢弃所有重复的行。
输入数据不需要排序,但只有当它们相邻时,才会被检测为重复行。如果要丢弃不相邻的重复行,可能要使用sort -u进行排序。参见sort(1)手册。
比较的过程遵循LC_COLLATE语言环境类别指定的规则。
命令支持的选项及含义
需要提供给长选项的参数也必须提供给相应的短选项。
–help 显示帮助并退出。
–version 显示版本信息。
-f n, –skip-fields=n 在检查唯一性之前,跳过每行上的n个字段。如果一行少于n个字段,则会跳过所有的字段,然后使用空字符串进行比较。字段是由非空格非制表符的序列组成,它们之间通过至少一个空格或制表符彼此分开。
为了兼容性,uniq支持传统的-n选项语法。新脚本应该使用-f n代替。
-s n, –skip-chars=n 在检查唯一性之前,跳过每行行的n个字符。如果一行少于n个字符,则使用空字符串进行比较。如果同时使用字段(-f)和字符(-s)跳过选项,则会先进行字段跳过。
在不符合POSIX 1003.1-2001的系统上,uniq支持传统的+n选项语法。尽管可以使用_POSIX2_VERSION环境变量控制此传统行为(请参阅「标准一致性」),但可移植脚本应避免其行为依赖于此变量的命令。例如,应该使用uniq ./+10或uniq -s 10,而不是模糊的uniq +10,因为在此时+10可能是一个文件名,也可能是一个字符跳过的选项。
-c, –count 在每行的开始输出该行重复的次数,同重复次数进行统计。
-i, –ignore-case 在执行比较的时候忽略大小写差异。
-d, –repeated 丢弃不重复的行,仅打印那些重复行的第一行。与此相反的是-u选项。
-u, –unique 只打印那些唯一存在的行。单独使用时,此选项会使uniq打印唯一的行,而不会打印任何其他行。于此相反的是-d选项。
-D, –all-repeated[=delimit-method] 不要丢弃重复的输入行,而是丢弃不重复的行,即打印所有的重复行。该选项主要与其他[……]

READ MORE

「unlink(1)」-

调用unlink函数删除指定文件
命令语法格式
unlink FILE unlink OPTION
命令描述
unlink将删除单个指定的文件名。它是系统提供的unlink函数的极简接口。
请参阅GNU C库参考手册中的删除文件。unlink命令用于避免花哨的rm命令
命令支持的选项及含义
–help 显示帮助信息并退出。
–version 显示版本信息并退出。
注意事项
在某些系统上,可以使用unlink来删除目录。在其他情况下,只能由特权用户以这种方式使用它。而在GNU系统中,unlink永远不能删除目录,只能删除文件。
相关手册
unlink(2)
查看在线手册:http://www.gnu.org/software/coreutils/unlink
查看info手册:info ‘(coreutils) unlink invocation’
参考文献

man 1 unlink, version GNU coreutils 8.26

更新日志

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

READ MORE

「uptime(1)」-

打印当前时间,系统的正常运行时间,登录用户的数量,当前的平均负载
命令语法格式
uptime [options]
命令描述
如果指定了参数,则将其用作要读取的文件,以发现有多少用户已登录。如果未指定参数,则使用系统默认值(uptime –help表示默认设置)。
系统间负载平均值的精确计算方法有所不同。某些系统将其计算为最近1分钟,5分钟,15分钟内可运行进程的平均数量,但某些系统还包括处于不可中断睡眠状态(即正在等待磁盘I/O的进程)的进程。Linux内核包含不可中断的进程。
命令支持的选项及含义
–help 显示帮助并退出。
–version 显示版本信息。
使用示例
下面命令打印我们当前系统的update命令的输出信息:

# uptime
14:07 up 3:35, 3 users, load average: 1.39, 1.15, 1.04

注意事项
uptime仅安装在具有获取引导时间的基础结构的平台上,其他软件包也提供uptime命令,因此可移植脚本不应依赖其存在。比如,在Debian 8中的uptime命令实际来自于procps软件包,并没有提供GNU coretuils软件包中的uptime命令,而这两个命令的用法又有所不同。
参考文献

info ‘(coreutils) uptime invocation’, version GNU coreutils 8.26

更新日志

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

READ MORE

「users(1)」-

打印登录当前主机的所有用户
命令语法格式
users [OPTION]… [FILE]
命令描述
在单行行打印登录当前主机的所有用户,多个用户之间使用空白字符进行分隔。输出中的每个用户名都对应着一个登录会话,如果一个用户名有多个登录会话,那么输出结果中就会出现多次该用户名。
如果没有指定FILE,users则从系统维护的文件中提取信息,通常为/var/run/utmp或者/etc/utmp。如果给出的FILE,则从该文件中提取信息。一个常用的选择就是/var/log/wtmp。
命令行支持的选项及含义
–help 显示帮助信息并退出。
–version 显示版本信息并退出。
注意事项
users命令仅安装在具有POSIX的<utmpx.h>头文件的平台上,或等效头文件,因此可移植脚本中不应依赖其在非POSIX平台上的存在。
相关手册
getent(1), who(1)
查看在线手册:http://www.gnu.org/software/coreutils/users
查看info手册:info ‘(coreutils) users invocation’
参考文献

man 1 users, version GNU coreutils 8.26

更新日志

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

READ MORE

「vdir(1)」-

详细列出目录里的内容
命令语法格式
vdir [OPTION]… [FILE]…
命令描述
命令vdir相当于ls -l -b;也就是说,默认情况下,文件会以长格式列出,使用反斜杠转义文件名的特殊字符。
详细使用参考ls(1)中的描述。
相关手册
ls(1), dir(1)
查看在线手册:http://www.gnu.org/software/coreutils/vdir
查看info手册:info ‘(coreutils) vdir invocation’
参考文献

man 1 vdir, version GNU coreutils 8.28

更新日志

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

READ MORE

「wc(1)」-

计算每个文件中字节数,字符数,字数,行数
命令行语法格式
wc [OPTION]… [FILE]… wc [OPTION]… –files0-from=F
命令描述
wc可以用于统计文件中的字节数、字符数、字数、行数。
文件参数FILE为要统计的文件名。如果没有给出FILE,或者FILE为‘-’,则从标准输入中读取文件数据。
命令wc为每个FILE打印一行计数信息。如果指定了一个文件参数FILE,则会在计数之后打印文件名。如果给出多个文件参数FILE,则命令wc会在输出的最后一行打印一行累计值,而文件名部分为“total”。输出结果中的计数值按以下顺序打印:行数、字数(长度非零的字符集合)、字符、字节、最大行长度,这个顺序与命令行中对应选项的顺序无关。每个计数都是右对齐打印的,字段之间至少有一个空格,这使得计数和文件名在列中排列整齐。计数的宽度取决于输入,因此你不应该依赖于特定的字段宽度。但是,作为GNU扩展,如果仅打印一种计数,则打印结果中不带前导空格。
默认情况下,wc打印三个计数:行数,字数,字节计数。可以通过选项只打印特定计数。选项不会覆盖先前给出的其他选项,如下:

# wc –bytes –words

上面的命令打印字节数和字数。
使用–max-line-length选项,wc会打印每个文件中最长的行的长度。如果命令行选项中指定了多个文件,则会在最后的total行中打印这些长度的最大值(不是总和)。根据当前的语言环境并假设TAB字符的宽度为8,此处的行长度在屏幕列中进行测量。
命令支持的选项及含义
-c, –bytes 只打印字节数。
-m, –chars 打印字符的个数。
-l, –lines 打印行数。以换行符(LF)的个数进行计算的。就是说,如果文件的最后一行没有换行符(LF),那计算结果会比实际的行数少一行。
-L, –max-line-length 打印文件中最长行的字符个数。如果指定了多个文件,最后的total行中显示这些字符个数中的最大值,而其他的则是显示一个合计值。
TAB会被视为8个字符;宽字符的显示宽度会考虑在内;不可打印字符的宽度为0。
-w, –words 输出文件中字的个数。
–files0-from=filename 不处理命令行中FILE,而是处理文件filename中指定的文件名列表;其中,filename中的每个文件名都以NUL(ASCII NUL)结尾的。当FILE列表长度超过命令行长度限制时,这个选项很有用。
有些情况下,通过xargs(1)运行wc是无法满足需要。因为xargs将文件列表分成多个单独输入的文件传给wc执行,[……]

READ MORE

「who(1)」-

touch显示当前登录的用户
命令语法格式
who [OPTION]… [ FILE | ARG1 ARG2 ]
命令描述
如果没有给出非选项参数,则打印每个当前登录的用户的以下信息:登录名、终端、登录时间、远程主机名或X显示器。
如果给定一个非选项参数,则将该参数视为包含用户登录记录的文件,并在其中进行查找用户,而不是使用默认的系统维护文件(通常为var/run/utmp或/etc/utmp)。/var/log/wtmp通常作为who的参数,用于查看谁之前登录。
如果给出两个非选项参数,则只打印运行它的用户的条目(根据其标准输入确定),前面带有主机名。传统上,给出的两个参数通常是’am i’,整体上看起来就像’who am i’。
时间戳根据TZ环境变量指定的时区规则进行显示,如果未设置TZ,则按系统默认规则进行显示。请参阅“GNU C库参考手册”中的「使用TZ指定时区」。
命令支持的选项及含义
-a, –all 等价与-b -d –login -p -r -t -T -u这些选项的组合。
-b, –boot 显示上次系统启动的时间。
-d, –dead 打印与死亡进程相对应的信息。
-H, –heading 打印列头。在输出的开始打印一个标题行。
-l, –login 仅列出与系统正在等待用户登录的进程相对应的条目。用户名始终为“LOGIN”。
–lookup 尝试通过DNS查找来规范化在utmp中找到的主机名。这不是默认设置,因为它在自动拨号上网功能的系统中可能会出现严重延迟。
-m 等同于who am i。
-p, –process 列出init生成的活动进程。
-q, –count 仅打印登录名和登录用户数。该选项会覆盖所有其他选项。
-r, –runlevel 打印init进程的当前(可能是之前的)运行级别。
-s 忽略;该选项是为了与其他版本的who命令兼容。
-t, –time 打印上次系统时钟更改。
-u 登录时间后,打印用户空闲(idle)的小时数和分钟数。’.’表示用户在最后一分钟处于活动状态。’old’表示用户已闲置超过24小时。
-w, -T, –mesg, –message, –writable 每个登录名后打印一个表示用户消息状态的字符:

‘+’ 允许消息写入
‘-’ 禁用消息写入
‘?’ 无法找到终端设备

–help 显示帮助信息并退出。
–version 显示版本信息并退出。
相关手册
查看在线手册:http://www.gnu.org/software[……]

READ MORE

「whoami(1)」-

打印有效用户ID对应的用户名
命令语法格式
whoami [OPTION]…
命令描述
打印当前有效用户ID对应的用户名。等价与id -un的输出。
命令支持的选项及含义
–help 显示帮助信息并退出。
–version 显示版本信息并退出。
相关手册
查看在线手册:http://www.gnu.org/software/coreutils/whoami
查看info手册:info ‘(coreutils) whoami invocation’
参考文献

man 1 whoami, version GNU coreutils 8.26

更新日志

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

READ MORE