1.4 Linux 命令附录

阅读前言:命令行的艺术


时间工具

time命令 时间统计

统计给定命令所花费的总时间。

MacBook-Pro-2:~ zhangzh$ klcr
Activate the web console with: systemctl enable --now cockpit.socket

Last login: Thu Jul 13 09:59:59 2023 from 222.19.205.86
[zhangzh@node01 ~]$ exit
注销
Connection to 222.19.64.20 closed.

real	0m3.210s
user	0m0.050s
sys	0m0.028s
MacBook-Pro-2:~ zhangzh$ type klcr
klcr is aliased to `time ssh -XY klcr'
MacBook-Pro-2:~ zhangzh$ 

cal命令 打印日历

参数说明

-3显示最近三个月的日历-C使用校准模式-h显示帮助信息-j显示在当年中的第几天(儒略日)-l单月份输出日历-m将星期一作为每月的第一天-s将星期天作为每月的第一天-V显示版本信息-y显示当年的日历

date命令 显示时间

在显示方面,使用者可以设定显示格式 ,格式设定为一个加号后接数个标记,可用的标记列表如下:

若是不以加号作为开头,则表示要设定时间,而时间格式为MMDDhhmm[[CC]YY][.ss],其中MM为月份,DD 为日,hh为小时,mm为分钟,CC为年份前两位数字,YY为年份后两位数字,ss为秒数。

使用权限:所有使用者。

当不希望出现无意义的0时(比如说1999/03/07),则可以在标记中插入-符号,比如说date '+%-H:%-M:%-S'会把时分秒中的0给去掉,像是原本的08:09:04会变为8:9:4。另外,只有取得权限者(比如说 root)才能设定系统时间。

当您以 root 身分更改了系统时间之后,请记得以clock -w来将系统时间写入 CMOS 中,这样下次重新开机时系统时间才会持续保持最新的正确值。

e.g. 显示当前时间

e.g. 格式化输出:

e.g. 输出昨天日期:

e.g. 输出 2 秒后的时间:

e.g. 时间格式转换:

e.g. apache 格式转换:

e.g. 格式转换后时间游走:

e.g. 按自己的格式输出:

e.g. 显示时间后跳行,再显示目前日期:

e.g. 显示月份与日数:

e.g. 显示日期与设定时间(12:34:56):

e.g. 时间加减操作:

e.g. 设定时间:

数值计算

expr命令 命令行计数器

用于在 UNIX/LINUX 下求表达式变量的值,一般用于整数值,也可用于字符串。

seq命令 填充数字

用于以指定增量从首数开始打印数字到尾数,全拼为<Sequence>。

即产生从某个数到另外一个数之间的所有整数,并且可以对整数的格式、宽度、分割符号进行控制。

bc命令 计算器

<basic alculator>是任意精度计算器语言,通过管道符

scale=2 设小数位,2 代表保留两位:

bc 除了 scale 来设定小数位之外,还有 ibase 和 obase 来其它进制的运算:

计算平方和平方根:

factor命令 分解因数

文本处理类

cat命令 打印到标准输出设备上

参数说明:

-n 或 --number:由 1 开始对所有输出的行数编号。

-b 或 --number-nonblank:和-n相似,只不过对于空白行不编号。

-s 或 --squeeze-blank:当遇到有连续两行以上的空白行,就代换为一行的空白行。

-v 或 --show-nonprinting:使用^M-符号,除了 LFD 和 TAB 之外。

-E 或 --show-ends : 在每行结束处显示$

-T 或 --show-tabs: 将 TAB 字符显示为^I

把 textfile1 的文档内容加上行号后输入 textfile2 这个文档里:

把 textfile1 和 textfile2 的文档内容加上行号(空白行不加)之后将内容附加到 textfile3 文档里:

清空 /etc/test.txt 文档内容:

tac命令 倒序打印

wc命令 字符统计

全拼为<word count>,用于统计指定文件中的字节数、字数、行数,并将统计结果显示输出,标准格式为wc [option] [filename],它会依次打印出文件的行、字符、字节大小。

e.g.

paste命令 文本合并

用于合并文件的列/行

join命令 合并相同文本

用于将两个文件中,内容相同的行连接起来

fmt命令 格式化段落

-c, --crown-margin:将每一段的第一行与页边对齐。

-p, --prefix:在每一行的前面添加一个空格。

-s, --split-only:只拆分长行,不进行换行。

-t, --tagged-paragraph:处理标记段落而不是正常段落。

-u, --uniform-spacing:保持输入文本中的空格不变。

-w, --width=WIDTH:设置输出的行宽,默认为75个字符。

--help:显示帮助信息并退出。

--version:显示版本信息并退出。

column命令 文本对齐

将文本格式化成多个对齐、定宽的列或表格

yes命令 输出指定内容

输出指定的字符串,直到 yes 进程被杀死。常用于产生大文件或回答 yes/no ,不加文本默认输出y

expand和unexpand命令 制表符与空格之间转换

stat命令 显示文件状态信息

包括文件的类型、权限、大小、所属用户和组、访问时间、修改时间、创建时间等详细信息。它可以用于检查文件的状态以及了解文件的属性。

lockfile命令 使文件只能通过 rm -f 移除

pandoc命令 Markdown,HTML,以及所有文档格式之间的转换

head命令 查看文件开头内容

-n参数用来查看前多少行的内容,e.g. head -n 200 filename 查看filename200行的内容;

-c参数用来查看前多少个字节。

tail命令 查看文件尾部内容

-f参数可以循环读取文件末尾的内容,一般用来监视输出的日志,e.g. tail -f data.log

-n参数显示文件的尾部 n 行内容,默认显示最后 10 行,e.g. tail -n 5 notes.log

tail -n +5 notes.log 输出notes.log文件的第 +5 行至文档末尾。

nohup命令 在系统后台不挂断地运行命令

在默认情况下(非重定向时),会输出一个名叫 nohup.out 的文件到当前目录下,如果当前目录的 nohup.out 文件不可写,输出重定向到 $HOME/nohup.out 文件中。

&:让命令在后台执行,终端退出后命令仍旧执行。

实例

以下命令在后台执行 root 目录下的 runoob.sh 脚本:

在终端如果看到以下输出说明运行成功:

这时打开 root 目录就看到生成了 nohup.out 文件。

如果要停止运行,你需要使用以下命令查找到 nohup 运行脚本到 PID,然后使用 kill 命令来关闭:

以下命令在后台执行 root 目录下的 runoob.sh 脚本,并重定向输入到 runoob.log 文件:

pv命令 使用进度条显示进程

tree命令 以树状图形式显示文件结构

sort命令 将文本文件内容排序

  • -b 忽略每行前面开始出的空格字符。

  • -c 检查文件是否已经按照顺序排序。

  • -d 排序时,处理英文字母、数字及空格字符外,忽略其他的字符。

  • -f 排序时,将小写字母视为大写字母。

  • -i 排序时,除了 040 至 176 之间的 ASCII 字符外,忽略其他的字符。

  • -m 将几个排序好的文件进行合并。

  • -M 将前面 3 个字母依照月份的缩写进行排序。

  • -n 依照数值的大小排序。

  • -u 意味着是唯一的(unique),输出的结果是去完重了的。

  • -o <输出文件> 将排序后的结果存入指定的文件。

  • -r 以相反的顺序来排序。

  • -t <分隔字符> 指定排序时所用的栏位分隔字符。

  • + <起始栏位>-<结束栏位> 以指定的栏位来排序,范围由起始栏位到结束栏位的前一栏位。

  • --help 显示帮助。

  • --version 显示版本信息。

  • [-k field1[,field2]] 按指定的列进行排序。

在使用 sort 命令以默认的式对文件的行进行排序,使用的命令如下:

sort 命令将以默认的方式将文本文件的第一列以 ASCII 码的次序排列,并将结果输出到标准输出。

使用 cat 命令显示 testfile 文件可知其原有的排序如下:

使用 sort 命令重排后的结果如下:

使用 -k 参数设置对第二列的值进行重排,结果如下:

uniq命令 检查及删除文本文件中重复出现的行列

  • -c 或 --count 在每列旁边显示该行重复出现的次数。

  • -d 或 --repeated 仅显示重复出现的行列。

  • -f<栏位> 或 --skip-fields=<栏位> 忽略比较指定的栏位。

  • -s <字符位置>或--skip-chars=<字符位置> 忽略比较指定的字符。

  • -u 或--unique 仅显示出一次的行列。

  • -w<字符位置> 或--check-chars=<字符位置> 指定要比较的字符。

  • --help 显示帮助。

  • --version 显示版本信息。

  • [输入文件] 指定已排序好的文本文件。如果不指定此项,则从标准读取数据;

  • [输出文件] 指定输出的文件。如果不指定此选项,则将内容显示到标准输出设备(显示终端)。

文件 testfile 中第 2、3、5、6、7、9行为相同的行,使用 uniq 命令删除重复的行,可使用以下命令:

testfile 中的原有内容为:

使用 uniq 命令删除重复的行后,有如下输出结果:

检查文件并删除文件中重复出现的行,并在行首显示该行重复出现的次数。使用如下命令:

结果输出如下:

当重复的行并不相邻时,uniq 命令是不起作用的,即若文件内容为以下时,uniq 命令不起作用:

这时我们就可以使用 sort:

统计各行在文件中出现的次数:

在文件中找出重复的行:

join命令 将两个文件中,指定栏位内容相同的行连接起来

进一步了解

type命令 显示命令类型

在 Linux 中为 cp 和 mv 命令添加进度条

Advanced Copy 是针对 GNU cpGNU mv 程序的修改版。它添加了一个进度条,并在您复制或移动文件和文件夹时提供一些有关当前进度的信息。它不仅显示进度条,还显示数据传输速率、预计剩余时间以及当前正在复制的文件名。最后,您将看到一个简短的摘要,显示已复制的文件数量以及复制文件所用的时间。

cp 和 mv 命令是 的一部分GNU coreutils。因此您需要GNU coreutils

此命令将提取 coreutils 档案到coreutils-8.32当前目录中名为的文件夹中。使用 cd 命令进入该文件夹:

使用以下命令下载高级副本补丁:

最后,通过逐个运行以下命令来应用补丁:

现在文件夹中将创建两个新的修补二进制文件,分别为cp和。只需将它们复制到你的 $PATH 即可,如下所示:mv``coreutils-8.32/src

这样。cpmv命令现在具有进度条功能。

每当您在复制或移动文件和目录时想要进度条时,只需添加-g如下所示的标志。


参考

最后更新于