Linux Shell 编程笔记

经常使用命令

echo [STR]    # 打印显示字符串
printf '[FORMAT]' [ARG]    #格式化输出(不支持数据流操做)
read [VAR]    # 读取键盘输入
    -p  # 弹出提示信息
    -t  # 指定等待输入的时间(time)
    -n  # 指定输入的字符数
    -s  # 隐藏输入的信息(secret)
    
declare [+/-] [VAR]
    -p  # 查看变量类型
    -i  # 声明整数类型(integer)
    -a  # 定义数组类型(array)
    -x  # 定义为环境变量类型
    -r  # 定义为只读类型(read only)

test [EXP]    # 测试命令

export [VAR]    # 显示和设置环境变量
    -f    # 环境变量为函数名称(function name)
    -p    # 列出Shell全部的环境变量
    -n    # 删除指定的环境变量

expr    # 指定数值运算符
wc    # 字符数统计(word count)
grep    # 正则表达式命令(global search regular expression and print)
gawk    # gawk文本处理工具(GUN awk)

比较运算符

数值及字符串比较

-eq    # 等于(equal to)
-ne    # 不等于(not equal to)
-lt    # 小于(less than)
-gt    # 大于(greater than)
-le    # 小于或等于(less than or equal to)
-ge    # 大于或等于(greater than or equal to)
-o    # 逻辑或(or)
-a    # 逻辑和(and)
-n    # 判断是否不为空(not null)
-z    # 判断是否为空(null)
-e    # 判断文件是否存在(exist)

判断文件属性

-f    # 判断是不是文件并存在(file)
-d    # 判断是不是目录并存在(directory)
-c    # 判断是不是字符设备文件(character)
-S    # 判断是不是Socket文件(socket file)
-p    # 判断是不是管道文件(pipe file)
-L    # 判断是不是连接文件(link file)

判断文件权限

 

-r    # 判断文件是否具备可读属性(readable)
-w    # 判断文件是否具备可写权限(writable)
-x    # 判断文件是否具备可执行权限(exectutable)
-u    # 判断文件是否具备超级用户(SUID,super user ID)权限
-g    # 判断文件是否具备超级用户组(SGID,super group ID)权限
-k    # 判断文件是否具备Sticky bit权限
-s    # 判断文件是不是非空白文件

文件间判断

[F1] -nt [F2]    # 判断文件1是否比文件2新(newer than)
[F1] -ot [F2]    # 判断文件1是否比文件2旧(olderthan)
[F1] -ef [F2]    # 判断文件1是否与文件2相同(equal file)

 

字符处理命令

cut [OP] [F]
    -f [COLUMN_NUM]    # 提取对应列的字符
    -d [SEPARATOR]    # 制定分隔符

正则表达式

基本格式

 

grep [OP] [REP] [F]    # 正则表达式命令
    -c    # 只输出匹配行的行数,不显示匹配的内容(count)
    -i    # 不区分大小写(ignore case)
    -h    # 查询多文件时不显示文件名
    -n    # 显示匹配行及行号(line number)
    -s    # 不显示不存在或无匹配的错误信息
    -v    # 显示不包括匹配文本的全部行
    -E    # 容许使用扩展模式匹配(extended regular expression) egrep [OP] [REP] [F]    # 拓展性的正则表达式命令
fgrep [OP] [REP] [F]    # 用于文本文件中搜索字符串的正则表达式命令

正则表达式封装类

 

[[:upper:]]    # 匹配大写字符
[[:lower:]]    # 匹配小写字符
[[:digit:]]    # 匹配数字
[[:alnum:]]    # 匹配数字和字符
[[:space:]]    # 匹配空格
[[:alpha:]]    # 匹配字符,包括大写字符和小写字符

 

 

 

转义字符控制

控制序列指示器(Control Sequence Indicator,CSI)git

普通转义字符

特殊转义字符

\d
\s
\l
\m

 

字符显示格式控制

 

\033[Xm    # 字符转义开始符号,"\033"表示Esc符号,十六进制数值为""033",X"为可变控制码,根据实际需求更改
\e[Xm    # 又或者是这种方式亦可,"\e"表示Esc符号

# 经常使用显示格式,"X"的可选参数:
0    # 重置为普通模式
1    # 设置为强亮度 
2    # 设置为弱亮度
3    # 使用斜体
4    # 使用单下划线
5    # 使用慢闪烁
6    # 使用快闪烁
7    # 背景与前景色调转
8    # 前景色设定为背景色

字符颜色格式控制

 

\033[XYm    # "X"表示前景色,若是是"3",表示前景色;若是是"4",表示背景色."Y"表示背景色,详细以下

0    # 黑色
1    # 红色
2    # 黄色
3    # 绿色
4    # 蓝色
5    # 洋红色
6    # 青色
7    # 白色

 

 

awk命令使用

基本格式

awk '{[AWK_CONTNET]}' [F]

经常使用选项

-F
-f file
-v
-mf N
-mr N
-W keyword

内置变量

$n    # n>0,获取该行第n个字段(字段间以一个空格间隔开)
$0    # 获取该行全部字段
NR    # 已经读取过的记录数,即文档中有字符记录的行数(number of records)
FNR    # 从当前文件中读出的记录数(file number of records)
FILENAME    # 当前文件名
FS    # 字段分隔符,即以空格分开的字符串列(field separator)
RS    # 记录分隔符(records separator)
OFMT    # 数字输出格式(output format of mathematics)
OFS    # 输出字符分隔符(output format of string)
ORS    # 输出记录分隔符(output records separator)
NF    # 当前记录中的字段数(number of fields)

经常使用字符串函数

 

index(string1, string2)
length(string)
blength(string)
substr(string, startChar, charNum)
match(string, ere)
split(string, array, regexp)
tolower(string)
toupper(string)
sprintf(format, expr1, expr2, ...)

 

经常使用时间函数

 

mktime
strftime(format, timestamp)
systime()

 

 

 

 

sed命令使用

基本格式

sed [OP] [CMD] [F]
sed [op] -f [SCRIPT] [F]
相关文章
相关标签/搜索