文档章节

Linux Shell 编程笔记

海涛
 海涛
发布于 2016/03/21 23:24
字数 1334
阅读 126
收藏 0

常用命令

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)

普通转义字符

特殊转义字符

\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]

 

 

 

 

 

 

 

 

© 著作权归作者所有

海涛
粉丝 2
博文 16
码字总数 7236
作品 0
广州
后端工程师
私信 提问
免费的编程中文书籍索引

免费的编程中文书籍索引,欢迎投稿。 国外程序员在 stackoverflow 推荐的程序员必读书籍,中文版。 stackoverflow 上的程序员应该阅读的非编程类书籍有哪些? 中文版 github 上的一个流行的编...

modernizr
2014/04/08
7.4K
24
(四)Linux学习笔记-Linux常用命令-帮助文档

(四)Linux学习笔记-Linux常用命令-帮助文档 帮助文档 以下为Red Hat系列Linux的命令集,我使用的Centos7.5版本。 帮助文档 - -help(shell内部的命令帮助) man(系统手册中的命令帮助) ...

Super_RD
2018/12/05
0
0
SHELL学习笔记----IF条件判断,判断条件

前言: 无论什么编程语言都离不开条件判断。SHELL也不例外。 if list then do something here elif list then do another thing here else do something else here fi EX1: #!/bin/sh SYSTEM......

长平狐
2013/01/06
127
0
Linux学习方法分享

Linux学习方法分享 随着Linux应用的扩展许多朋友开始接触Linux,对于刚接触Linux的人而严,不知从何处开始学起。以下是一位Linux系统管理员,在看了许多有关Linux的文档和书籍并为学习Linux...

不想留名
2014/06/14
848
2
(七)Linux学习笔记-Linux常用命令-Shell常用技巧

(七)Linux学习笔记-Linux常用命令-Shell常用技巧 Shell常用技巧 以下为Red Hat系列Linux的命令集,我使用的Centos7.5版本。 Shell常用技巧 Tab :命令补齐 ↑或者↓ :查看执行过的命令 < ...

Super_RD
2018/12/06
0
0

没有更多内容

加载失败,请刷新页面

加载更多

linux 磁盘不足异常

linux 报 No space left on device 异常 ,则是磁盘不足 ,导致异常 运行 df -h 命令查询磁盘使用率,如果有100%,则查找目录大日志文件删除 1.磁盘不足导致系统应用写入文件失败,如系统日志...

zaolonglei
37分钟前
3
0
即学即用的 30 段 Python 实用代码

☞ 分享:最全最新的Python学习大礼包 ☜ 点击查看 编译:Pita & AI开发者,作者:Fatos Morina Python是目前最流行的语言之一,它在数据科学、机器学习、web开发、脚本编写、自动化方面被许...

Object_Man
37分钟前
4
0
The server time zone value 'EDT' is unrecognized or represents more than one time zone.

2019-10-14 18:07:43.714 ERROR 74363 --- [Druid-ConnectionPool-Create-1855026648] com.alibaba.druid.pool.DruidDataSource : create connection SQLException, url: jdbc:mysql://10.30......

yizhichao
51分钟前
8
0
html加载顺序以及影响页面二次渲染额的因素

本文转载于:专业的前端网站➱html加载顺序以及影响页面二次渲染额的因素 浏览器请求发往服务器以后,返回HTML页面,页面内容开始渲染,具体的执行顺序为: 1. 浏览器开始载入html代码,发现<...

前端老手
53分钟前
9
0
BeginnersBook JSP、JSTL、Servlet 教程

来源:ApacheCN BeginnersBook 翻译项目 译者:飞龙 协议:CC BY-NC-SA 4.0 贡献指南 本项目需要校对,欢迎大家提交 Pull Request。 请您勇敢地去翻译和改进翻译。虽然我们追求卓越,但我们并...

ApacheCN_飞龙
今天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部