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 移除
rm -f 移除pandoc命令 Markdown,HTML,以及所有文档格式之间的转换
head命令 查看文件开头内容
-n参数用来查看前多少行的内容,e.g. head -n 200 filename 查看filename前200行的内容;
-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 行至文档末尾。
banner命令
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 cp 和 GNU mv 程序的修改版。它添加了一个进度条,并在您复制或移动文件和文件夹时提供一些有关当前进度的信息。它不仅显示进度条,还显示数据传输速率、预计剩余时间以及当前正在复制的文件名。最后,您将看到一个简短的摘要,显示已复制的文件数量以及复制文件所用的时间。
cp 和 mv 命令是 的一部分GNU coreutils。因此您需要GNU coreutils。
此命令将提取 coreutils 档案到coreutils-8.32当前目录中名为的文件夹中。使用 cd 命令进入该文件夹:
使用以下命令下载高级副本补丁:
最后,通过逐个运行以下命令来应用补丁:
现在文件夹中将创建两个新的修补二进制文件,分别为cp和。只需将它们复制到你的 $PATH 即可,如下所示:mv``coreutils-8.32/src
这样。cp和mv命令现在具有进度条功能。
每当您在复制或移动文件和目录时想要进度条时,只需添加-g如下所示的标志。
参考
最后更新于