~Linux Shell命令大全
Linux Shell命令大全
Linux操作系统提供了许多命令供用户使用,这些命令Windows系统也可以使用,借由cmder或者msys2可以提供windows上的bash环境(除了系统依赖命令之外,大部分都可支持)。
Shell命令提供了数据处理和交互操作的便利,这是桌面操作不能比及的,以Shell命令组成的脚本又方便布置一系列操作。而Windows的cmd环境交互性差又不灵活,虽然有Powershell环境,但毕竟不是主流,所以命令行首推Shell环境。
Shell执行环境有多种,最常见的是bash,所有Shell执行程序都需要支持posix shell的标准,基于现在bash已成为标配,以此为标准编写Shell程序即可。
Shell命令分为内置命令和外部命令,种类繁多,涉及计算机的方方面面,这里只挑重点来讲(外部命令120条重点)。学会了这些命令,足够畅行Linux操作系统和编写Shell程序。
内置命令
内置命令都很重要,大部分都用简表的形式列出,某些重点且复杂的命令进行详解,而其他使用较少、作为语法构成的命令则仅仅列出名字。
命令简表
这里只挑重要命令,简要讲述命令用法。
| 命令 | 简要描述 | 示例 |
|---|---|---|
| alias | 设置命令别名 | alias [-p] [name[=value]] ... |
| bg | 将任务移至後台 | bg [job_spec] |
| cd | 切换当前工作目录 | cd dirname |
| dirs | 显示目录堆栈中的记录 | dirs [+/-n -l] |
| echo | 字符串输出,-n不换行,-e处理转义,-E不处理转义 |
echo [-neE] [arg ...] |
| eval | 将参数作为Shell命令执行 | eval args |
| exec | 用给定命令替换当前Shell程序并执行 | exec [-cl] [-a name] [arg ...] |
| exit | 以状态码n,退出当前Shell | exit [n] |
| export | 设置或显示环境变量 | export [-fn] [name[=value] ...] |
| fg | 将任务移至前台 | fg [job_spec] |
| getopts | 用于Shell解析参数选项,返回是否匹配 | getopts optstring name [arg ...] |
| help | 显示Shell内置命令的帮助 | help [-dms] [pattern ...] |
| history | 显示或操纵历史记录 | history [-c] [-d offset]或history [-anrwps] args |
| jobs | 显示任务的状态 | jobs [-lnprs] [jobspec ...]或jobs -x command args |
| kill | 发送信号到进程,默认是SIGTERM(15) | kill [-l] [-s sigspec,-n signum,-sigs] [pid, job_spec] |
| logout | 以状态码n,退出登陆的Shell | logout [n] |
| mapfile | 从标准输入或文件描述符读取行并赋值到数组 | mapfile [-d delim] [-n count] [-O origin] [-s count] .. |
| readarray | 与mapfile同义(补充:不指定array则写入MAPFILE的数组) | [-t] [-u fd] [-C callback] [-c quantum] [array] |
| popd | 从目录堆栈中取出记录,默认删除顶部且切换工作目录 | popd [-n] [+N,-N] |
| printf | 格式化参数并输出,语法类似C语言但以空格分隔参数 | printf [-v var] format [arg ...] |
| pushd | 将目录添加到目录堆栈顶部,-n选项阻止工作目录变化 |
pushd [-n] [+N,-N,dirpath] |
| pwd | 显示当前工作目录的绝对路径 | pwd [-LP] |
| read | 从标准输入或文件描述符读取一行并赋值给变量 | read [-ers] [-i txt] [-p prompt] [-t timeout] [-u fd] [name ...] |
| set | 显示或设置Shell特性及变量 | set [-abefhkmnptuvxBCHP] [-o opthin-name] [--] [arg ...] |
| shift | 移动参数,从$1开始的n个参数被移除(默认移除一个) |
shift [n] |
| shopt | 显示或设置Shell操作选项,-s开启,-u关闭 |
shopt [-pqsu] [-o] [optname ...] |
| source | 在当前Shell中读取并执行文件中的命令 | source filename [arg ...] |
| time | 报告命令执行消耗的时间,显示real,user,sys耗时 | time [-p] pipeline |
| type | 显示命令类型信息(内建,文件,函数,别名,关键字) | type [-afptP] name ... |
| umask | 显示或设置创建文件的权限掩码,-S以符号显示 |
umask [-pS] [mode] |
| unalias | 删除由alias定义的别名 | unalias [-a] [name ...] |
| wait | 等待进程退出并返回其状态,id是任务(%开头)或进程号 |
wait [-fn] [-p var] [id ...] |
命令详解
getopts 格式:
getopts optstring name [arg ...]解析指向的参数选项(以连字符
'-'後接一个字母作为选项),按规则获取选项和对应参数,若指向的参数不是选项,则返回失败。默认解析命令行参数(
$@),除非指定了[arg ...]参数,$OPTIND是getopts解析的索引且随之增长以循环解析参数。选项一般不带参数,带参数的选项只能有一个参数紧随其後,
optstring包含要识别的选项字母,若此选项字母後接冒号':'则为带参数选项,除此之外,都是无参数选项(包括未定义选项),optstring若以':'开头则以静默模式。OPTERR值默认为1,其表示是否启用错误报告(设为0则getopts不打印错误报告)。此命令静默模式和非静默模式对变量的赋值行为不一样:
非静默模式,有效选项但没有对应参数,或者无效选项,都会打印诊断信息(除非OPTERR设为0),同时,$name的值设为'?'字符,$OPTARG置为空。
静默模式,若是无效选项则$name设为'?'字符,若是缺少参数则$name设为':'字符,此两种情形,$OPTARG都会设为选项字母。
如果指向的参数不是选项,则$name设为'?'字符且$OPTARG置为空,且命令退出状态码设为1并返回。注:解析的参数中,一个参数可以只有选项,也可以包含选项及对应的参数,例如:
"-s a",-sa,-s等等。常用形式:
1
2
3while getopts ":s:r:a" opt; do
COMMAND...
donetrap 格式:
trap [-lp] [[arg] signal_spec ...]捕捉信号和其他事件并执行命令。返回0(成功),除非signal_spec是无效值。
选项
-l打印信号名称以及信号名称对应的数字,-p显示与每个信号关联的trap命令。参数arg是接收到信号时执行的命令,signal_spec是信号名称或信号名称对应的数字。已指定了
signal_spec,若arg未指定或为-则该信号重置为初始状态,若arg为空字符串则该信号被忽略。signal_spec可以是数字也可以是字符串,不区分大小写,字符串前缀SIG也可省略。signal_spec有些特殊值,若为EXIT或数字0则退出Shell时执行命令arg,若为DEBUG则每个简单命令之前执行arg,若为RETURN则每次Shell函数或脚本执行完毕时运行arg命令,若为ERR则每次命令返回非0时执行arg命令。如果未提供参数,trap将打印与每个信号关联的命令列表。trap设置的信号处理将在其Shell捕获到对应信号时执行,在执行外部命令时,需等待命令执行完毕才会触发。
常见信号:
信号名称 数值 说明 SIGHUP 1 本信号在用户终端连接结束时发出 SIGINT 2 程序终止信号,在用户键入 Ctrl+C时發出SIGQUIT 3 程序退出信号,键入 Ctrl+\时發出,默认触发core dumpSIGFPE 8 在发生致命的算术运算错误时发出 SIGKILL 9 用来立即结束程序的运行,本信号不能被Handler捕获 SIGALRM 14 时钟定时信号,计算的是实际的时间或时钟时间 SIGTERM 15 程序结束信号, 该信号可被Handler捕获,kill命令默认产生此信号
其他内置命令
构成语法:
declare, typeset, unset.
bind, builtin, caller, command, compgen, complete, compopt, coproc, disown, enable, fc, hash, suspend, times, trap, ulimit, unset.
前置通识
学习某些命令之前,需要了解一些前置知识,这些作为通用知识单独讲解。
正则表达式
正则表达式是一种表示字符串匹配模式的方法,通常用于文本处理。
正则表达式有多种变体,此处只讲常用的三种。
POSIX正则表达式
POSIX基本正则表达式
POSIX基本正则表达式(BRE)用于实用程序中,提供与简单正则表达式的向后兼容性。
此处只讲基础语法,元字符和字符类。整理符号和等价类,此处不讲。
注:POSIX BRE不支持任何其他功能,甚至不支持交替。
元字符
'.'
匹配任何单个字符,注:在括号表达式中,只匹配字符点号。'[ ]'
括号表达式,匹配方括号包含的单个字符,'-'在括号表达式中的首尾则可做为字符减号(否则,做为连字符以匹配范围内字符,如'[1-9]'),']'在括号表达式中只能在首个字符,括号表达式还可以包含字符类、等价类和整理字符。'[^ ]'
括号表达式,匹配不包含方括号内的单个字符,与'[ ]'含义正好相反。'^'
若作为正则表达式的首字符,则匹配字符串中的起始位置。'$'
若作为正则表达式的尾字符,则匹配字符串中的结束位置。'*'
匹配此字符前面的元素零次或多次。例如,'.*'匹配任何字符。'\{m\}'
恰好匹配前面的元素m次(m是自然数)。
备注:BRE的小括号和花括号需转义才代表元字符。'\{m,\}'
匹配前面的元素至少m次(m是自然数)。'\{m,n\}'
匹配前面的元素m到n次(m和n是自然数)。'\( \)'
定义子表达式(又称标记块、捕获组),捕获的字符串可供稍后调用。'\1'到'\9'
调用第n个定义的子表达式,可匹配或替换之前捕获的字符串。
字符类
| 字符类使用 | 等价表达式 | 描述 |
|---|---|---|
[[:upper:]] |
[A-Z] |
大写字母 |
[[:lower:]] |
[a-z] |
小写字母 |
[[:alpha:]] |
[A-Za-z] |
英文字母 |
[[:digit:]] |
[0-9] |
数字 |
[[:xdigit:]] |
[0-9A-Fa-f] |
十六进制数字 |
[[:alnum:]] |
[A-Za-z0-9] |
字母和数字 |
[[:punct:]] |
标点符号(除字母和数字之外的所有图形字符) | |
[[:blank:]] |
[ \t] |
仅限空格和Tab字符 |
[[:space:]] |
[ \t\n\r\f\v] |
空白字符 |
[[:cntrl:]] |
控制字符 | |
[[:graph:]] |
[^ [:cntrl:]] |
图形字符 |
[[:print:]] |
[[:graph:] ] |
可打印字符(图形字符和空格) |
[[:word:]] |
[[:alnum:]_] |
字母和数字以及下划线 |
POSIX扩展正则表达式
POSIX扩展正则表达式(ERE)通常提供和BRE一样的功能,通常包含命令行参数"-E"配合Unix实用程序使用,某些实用程序默认实用ERE,如awk命令。
与POSIX BRE的区别有:
特殊字符(花括号和小括号)不需要转义就可以作为正则表达式语法。
'(',')','[',']','.'.'*','?','+','|','^'和'$'是特殊字符,需使用'\'字符转义才能表示为文本字符添加了
'+','?'和'|'特殊字符。元字符 说明 '+'匹配此字符前面的元素一次或多次 '?'匹配此字符前面的元素一次或零次 '|' 匹配此字符前面或后面的元素。这一语法称为 '交替'某些POSIX BRE也支持这些ERE的语法(在BRE中需要转义才能作为元字符)。
取消了
'\1'到'\9'的子表达式语法(这理论上是不规则的,故未被标准ERE采用)。
注:POSIX正则表达式通常是贪婪的而且不支持非贪婪的写法。
Shell正则表达式
Unix Shell有用于文件名替换的一些正则表达式,主要有如下操作符:
| 操作符 | 说明 |
|---|---|
? |
匹配任何单个字符 |
[] |
匹配方括号中字符列表的单个字符 |
[! ] |
匹配不在框中字符列表的单个字符 |
* |
匹配零个或多个任何字符 |
?(pattern-list) |
匹配零次或一次出现的给定模式 |
*(pattern-list) |
匹配零次或多次出现的给定模式 |
+(pattern-list) |
匹配一次或多次出现的给定模式 |
@(pattern-list) |
完全匹配其中一个给定模式 |
!(pattern-list) |
匹配给定模式以外的任何内容 |
注意:後面五个构造是bash提供的,只有在bash内置了shopt且启用extglob选项的情况下才能使用。不能用拼接的形式组成方括号操作符,在方括号中插入的符号将被简单地视为字符列表中的字符进行匹配。
Perl兼容正则表达式
Perl兼容正则表达式(PCRE)提供更丰富和可预测的语法,许多编程语言和应用程序采用了类似Perl的语法。这里不详述PCRE语法规则,仅仅给出以下概念:
特殊字符、字符类(减法、交集)、量词、锚点、交替、重复、分组、捕获、反向引用、命名组、分支组、自由间距、注释、模式修饰、零宽断言、条件语句、平衡组、递归、子例程、回溯。
系统服务
Linux系统服务
文件管理
文件信息
- find
格式:
find [-H] [-L] [-P] [path...] [expression]
递归遍历[path...]目录树(默认深度优先遍历),对各文件依次执行[expression]表达式。不带参数的find命令会查找当前目录下子目录和文件并显示。有关参数选项有许多,在此不详述,如下:
跟随符号链接,是否处理符号链接目录里面的文件。
选项
-H,-L,-P用于处理符号链接,-H表示只跟随在[path...]指定的符号链接,-L表示跟随所有符号链接,-P是缺省选项,表示不跟随符号链接。文件名查找,示例:
find . -name "*.txt"使用
-name选项可以只打印匹配文件名的路径,使用-path选项则只打印匹配的路径,两者的区别是-name选项匹配的文件名是不包含路径部分,-path选项匹配的路径是以提供的[path...]目录树开头。
注:-name以及-path等选项对大小写敏感,使用-iname之类的选项则表示大小写不敏感。
正则表达式匹配,示例:
find . -regex '.*/[0-9]*\.c'使用
-regex选项可以按正则表达式匹配,和-path选项一样匹配的是完整的路径名。逻辑运算符,像
-name和-regex等选项及其参数都是一个表达式(expression),通过运算符求值,按优先级从高到低,主要有:运算符 说明 (expr)括号表达式优先求值 ! expr表达式求反 expr1 expr2表达式求值与,expr1求值false则不做求值expr2 expr1 -a expr2求值与,同上 expr1 -o expr2表达式求值或,expr1求值true则不做求值expr2 expr1 , expr2逗号表达式,两者求值後返回expr2 跳过目录遍历,
-prune选项用于在遍历过程中跳过当前节点(如果是目录)的子文件。输出格式,
-print打印文件名或路径名,-printf可以按格式打印,主要有:格式符 说明 %p输出文件名,包括路径名 %f输出文件名,不包括路径名 %m以8进制方式输出文件的权限 %g输出文件所属的组 %h输出文件所在的目录名 %u输出文件的属主名 示例:
find . -user root -printf "%m %p \\n"文件类型,
-type选项可以匹配文件类型,示例:find . -type l,支持的类型有:类型标识 说明 b 块设备 c 字符设备 d 目录 p 有名管道 f 普通文件 l 符号链接 s 套接字 D door(用于Solaris系统) 文件属性,对于文件的最近访问时间、文件状态最近被修改时间、文件数据最近被修改时间,有以分钟为单位的
-amin,-cmin,-mmin和以天数为单位的-atime,-ctime,-mtime选项接数值(不带符号则表恰好时间段,带+表大于,-表小于);对于文件权限位(八进制表示法),-prem mode表示匹配mode文件权限,-prem -mode表示拥有mode文件权限,-prem /mode表示有部分mode文件权限,-prem +mode与前者相同(不推荐用);-uid,-user,-gid,-group等选项匹配对应文件属性。外部命令,
-exec选项用于对匹配的文件名执行命令,示例:find . type f -exec ls -l {} \;-exec选项根据执行命令退出状态确定其表达式值,-exec选项後续直到包含';'的参数都被视为执行命令(命令将在find执行时的当前目录下运行),"{}"将替换为当前文件名,在Shell中需要'\'转义';'字符。也可以使用
-ok选项,功能和语法与-exec一致,但以更安全的模式运行。
ls stat tree locate lsattr slocate which whereis updatedb cksum, file. md5sum
文件操作
chattr chgrp chmod chown ln mkdir mktemp mknod mv mtools rmdir rm touch cp dd rename setfacl
备份压缩
- 7z
格式:
7z <command> [<switches>...] <archive_name> [<file_names>...]
7-Zip是一个高压缩比的开源软件,7z使用插件处理档案,使用方法如下:
详见:7z用户手册
| 命令 | 说明 |
|---|---|
7z a <arc> <files>... |
添加文件 |
7z b |
基准测试 |
7z d <arc> <files>... |
删除文件 |
7z e <arc> <files>... |
提取文件,不保留目录结构 |
7z h [-scrc{method}] <files>... |
文件校验,method有CRC32,CRC64,SHA1,SHA256,BLAKE2sp,默认是CRC32 |
7z i |
显示支持的格式信息 |
7z l <arc> <files>... |
列出内容,列出对应文件列表 |
7z rn <arc> [<src> <dest>]... |
重命名文件 |
7z t <arc> <files>... |
测试文件 |
7z u <arc> <files>... |
更新文件 |
7z x <arc> <files>... |
提取文件,会保留目录结构 |
7z的命令支持常见的通配符'*'和'?',可用于<file_names>参数中。此外,支持各种选项(<switches>),此处不详细说明。
ar bzip2 bunzip2 gzip gunzip arj unarj cpio gzexe tar unzip zip zipinfo mkisofs
bzip2recover, compress, lha.
文档编辑
文档读写
cat tee tail head od hexdump wc
less, more.
文本处理
- awk
格式:
awk [options] [-f progfile] [--] 'program' file ...
GNU之awk用户手册
awk之POSIX
骏马金龙之精通awk系列
awk是一种编程语言,用于文本和数据处理,适合对文本进行较复杂格式化处理。
- 常用选项:(此处只讲POSIX标准支持的)
| POSIX选项 | GNU全名 | 说明 |
|---|---|---|
-f progfile |
--file=progfile |
使用指定的脚本文件 |
-F fs |
--field-separator=fs |
指定FS变量(内部分隔符) |
-v var=val |
--assign=var=val |
设置变量的值,以供执行脚本时使用 |
awk脚本结构:
awk 'BEGIN{ ... } pattern{ ... } END{ ... }' file...一个awk脚本通常由多个语句块(BEGIN语句块、模式匹配语句块、END语句块)组成,其执行流程是:先执行BEGIN语句块,重复地从文件或标准输入读取一行并执行模式匹配语句块,最後读到EOF,执行END语句块。
变量与函数
awk支持各种编程语法,可自定义变量和函数,函数相当于一个语句块,和Shell一样,变量可直接使用,也可在外部通过参数给变量赋值,也可以使用数组。
awk函数可通过
return返回字符串或数值,不能返回数组类型。函数的定义如下:1
2
3
4function function_name(argument1, argument2, ...)
{
function body
}awk数组是关联数组,和Shell一样,不需要提前声明其大小,可直接使用。语法如下:
array_name[index]=value数组索引不仅可为数字,也可为任意有效字符串,不支持多维数组(某些版本支持),但可用关联数组的特性模拟多维数组,使用
delete语句删除数组元素,语法如下:delete array_name[index]awk字符串是双引号包围的,而不是单引号。变量不用像Shell那样以
'$'字符引用,字段引用可以用'$'字符引用变量值对应的字段,如'awk { print $NF }'.运算符
awk支持C语言运算符,此外还提供了许多内置运算函数。还提供了模式匹配和其他运算符,这些有:
运算符 描述 '$'字段引用 ' '字符串连接 ','参数分隔符 in数组中是否存在键值 '~'模式匹配(正则运算符) '!~'模式不匹配(正则运算符) '>','>>','<','<<'文件输入输出(类似Shell)'print items | command'管道操作符,借以执行外部命令command'print items |& command'双向管道符(扩展语法),awk程序可与外部命令读写'command | getline'管道操作符,也可换为使用'|&'双向管道符- command打开的管道关联到抽象文件,像普通文件一样(可以close函数关闭之)
- awk的正则语法是POSIX
ERE,awk正则类型需用两个
'/'包住,如'/.*\.txt/'
内置变量
变量引用 说明 $n字段引用,当前记录的第n个字段(n为数字) $0字段引用,当前行的文本内容 ARGC命令行参数的数目 ARGIND命令行中当前文件序号 ARGV包含命令行参数的数组 CONVFMT数字转换格式(默认值为 %.6g)ENVIRON环境变量关联数组 ERRNO最後一个系统错误的描述 FIELDWIDTHS字段宽度列表(用空格键分隔) FILENAME当前输入文件名称 FNR相对于当前文件的行号 FS字段分隔符(默认是任何空格) IGNORECASE是否忽略大小写 NF当前字段数 NR当前记录数(即行号,不随读取新文件而重置) OFMT数字的输出格式(默认值是 %.6g)OFS输出字段分隔符(默认值是一个空格) ORS输出记录分隔符(默认值是一个换行符) RS记录分隔符(默认是一个换行符) RT记录分隔符( RS为正则表达式时,RT是匹配文本)RSTART由match函数所匹配的字符串的第一个位置 RLENGTH由match函数所匹配的字符串的长度 SUBSEP数组下标分隔符(默认值是'\034') - 对于awk读取文件的一行,称为一个记录,记录按
FS分割为多个字段。 ARGC和ARGV有关命令行参数是"awk"和awk脚本之後的参数,数组下标从0开始。- 数组下标可用
','分隔参数以模拟多维数组,那么此关联数组存储的下标将是以SUBSEP连接参数,例如以下将打印数组下标"1_2":awk 'BEGIN{ SUBSEP="_"; array[1,2] } { for(x in a)print x }'
- 对于awk读取文件的一行,称为一个记录,记录按
内置函数
awk内置函数有:算术函数、字符串函数、时间函数、其他函数等。
算术函数,
atan2,cos,sin,exp,log,sqrt,int,rand,srand.字符串函数:
格式 说明 gsub(Ere,repl,str)全局替换,同sub函数,但所有匹配的部分都将被替换 sub(Ere,repl,str)子串替换,将str中首次匹配Ere的部分替换为repl,repl缺省为 $0index(str1,str2)子串位置,返回str1中出现的str2的位置(从1开始编号,表明第几个字符),若str1中无str2子串则返回0 substr(str,start,len)取子串,返回str中start位置开始的长度len的子串,若不给定len则返回start位置到末尾的子串 length(str)字符串长度,返回str字符串长度,str缺省为 $0blength(str)字符串字节数,返回以字节为单位的字符串长度,str缺省为 $0match(str,Ere)匹配字符串,返回str中匹配Ere的位置,RSTART设置为此返回值,RLENGTH设置为匹配字符串的长度,若未匹配,则返回0,且RLENGTH设为-1 split(str,array,Ere)字符串分割,将str分割为数组 array[n]并返回数组长度n,以Ere匹配的部分作为分隔符来分割,若未指定Ere则使用字段分隔符FS分割之tolower(str)转小写,将str字符串中大写字母转为小写并返回 toupper(str)转大写,将str字符串中小写字母转为大写并返回 sprintf(fmt,args...)格式化字符串,返回格式化的字符串,使用方式类似C语言 strtonum(str)转为数值,如果字符串以0开始,将之视为八进制数,以0x或0X开始则视之十六进制数,否则视为浮点数 注:以上
Ere部分可以是正则表达式(是字符串类型,不是awk正则类型)。时间函数:
mktime(dataspec)字符串转时间戳,例如:mktime("2023 05 10 18 37 10")strftime(format,timestamp)时间戳转字符串(此处不详述),例如:
strftime("Time = %m/%d/%Y %H:%M:%S", systime())systime()获取系统时间戳(从UTC时间计时的秒数)。
其他函数:
格式 说明 getline读取下一行并进行字段分割(会设置 RT,NR,FNR,NF,$0,$n),继续执行awk流程getline var读取下一行记录并保存到变量 var中(不进行字段分割,不会设置NF,$0,$n)getline [var] < file读取给定文件名 file的一行记录(不会设置NR,FNR)command|getline [var]读取 command命令输出结果的一行记录(不会设置NR,FNR)close(file [, how])关闭由 file字符串指定的文件或命令管道,第二个参数how是gawk的扩展(详见手册)fflush([file])此函数为扩展功能,刷新 file指定的文件所关联的缓冲输出,若不给定file参数则刷新所有缓冲区system(cmd)执行 cmd字符串的外部命令isarray(var)返回 var是否为数组(值0则不是数组,值1则为数组)typeof(var)返回 var的数据类型,可为array,regexp,number,string,strnum,unassigned,untyped流程控制
- awk语句类似C语言(结尾可加可不加
';'),awk语句块没有作用域,都是全局变量。 if,while,switch,for,break,continue语句语法和C语言是一致的。switch语句仅支持等值匹配或正则匹配,执行逻辑和C语言一样。for循环还支持另一种形式for(var in array) statement用于遍历数组。next语句使awk立即停止处理当前记录并处理下一条记录。nextfile语句使awk立即停止处理当前文件并处理下一个文件。exit语句退出awk程序(可指定退出状态码,如exit 1),退出前会执行END语句块。print,printf语句打印到标准输出,print打印字符串,printf和C语言一样。
- awk语句类似C语言(结尾可加可不加
- grep
- sed
- perl
awk base64 cut egrep fgrep pgrep grep ag join paste perl sed sort tr uniq vim vi emacs fmt nano nl expand unexpand
col, colrm, comm, csplit, ed, ex, fold, indent, ispell, jed, joe,look, pico, spell, split, cmp, diff, diffstat, patch, tac, jq, rev.
磁盘管理
磁盘信息
df du badblocks hdparm lsblk blkid iostat iotop
磁盘操作
sync losetup edquota, quota, quotacheck, repquota, quotaoff, quotaon. fdisk cfdisk parted lvcreate lvdisplay lvextend lvreduce lvremove lvresize lvscan pvchange pvck pvcreate pvdisplay pvremove pvs pvscan vgchange vgconvert vgcreate vgdisplay vgextend vgreduce vgremove vgrename vgscan
文件系统
mount umount mkswap swapon swapoff fsck mkfs
findfs, e2fsck, e2label, mkdosfs, mke2fs, smartctl, sfdisk.
网络通讯
网络配置
nc ifconfig ifstat iftop netstat ping ss traceroute tcpdump tcpreplay ip iptables arp arpwatch iperf host hostid nslookup dig route
远程连接
- ssh
telnet apachectl, cu. rsh rlogin ssh sshd ssh-keyscan ssh-copy-id ssh-keygen ssh-add ssh-agent
文件传输
exportfs showmount samba smbd testparm smbclient ftp tftp ncftp ftpshut ftpwho ftpcount ftptop sftp rcp scp axel wget curl aria2c
uuto, uupick, uucp, uucico.
系统管理
系统信息
- date
- dmesg
arch date last lastb lastlog logname uname who whoami w id free dmesg lscpu lsof lsmod modinfo env nproc systool uptime
用户和组
useradd adduser groupdel groupmod userdel usermod newgrp groupadd sudo su chfn login passwd gpasswd chage groupmems groups users
grpck, pwunconv, grpconv, pwconv, grpunconv.
系统操作
chroot sleep logrotate journalctl logger chsh depmod insmod modprobe mkinitrd mkinitramfs mkinitcpio rmmod sysctl timedatectl hwclock
tload, clock.
设备管理
setleds loadkeys dumpkeys lsusb lspci setpci eject reboot halt shutdown poweroff
软件管理
- apt
- pacman
rpm rpmbuild yum apt apt-get apt-key aptitude dnf apk pacman dpkg dpkg-deb pkg-config.
系统服务
- systemctl
chkconfig service systemctl init
进程管理
- ps
- top
- watch
ps procinfo pidof pidstat nice renice top pstree nohup killall pkill crontab at watch batch
终端窗口
tty wall talk write getty agetty mingetty mesg vlock reset clear dircolors resize tmux screen setfont
其他命令
- git
- man
- bash
git xargs expr bc as basename dirname cal gcc g++ gdb python info ld ldconfig ldd man whatis php bash sh zsh xclip mkfontscale mkfontdir fc-cache
lprm, lpr, lpq.