小c我好久没有见到小L哥哥啦,今天专门去他家,看看他在做什么。
咦,门怎么关着?还是走后门吧!
小哥哥在打坐,这是在练什么武功呀?它欢快的跟我打了一声招呼,又闭上了眼睛,他说他在练bash大法!我问他bash是啥子个东西,他叫我先喝杯茶,慢慢解释给我听。
bash是shell的一种,常见的shell有:sh,bash,csh,ksh,zsh等等。那什么又是shell呢?shell是用户和Linux操作系统之间的接口,是一种命令解析器,能够识别各种命令。
而bash就是其中的一种啦!那shell都有什么功能呢?
bash 常用特性
1. 命令行扩展:~,{,}
2. tab键自动补全:文件名/文件路径
3. history: 命令历史
4. alias: 命令别名
5. 命令引用:
' '单引号:强引用
“”双引号:弱引用
` `: 命令引用
6. 快捷键:
Ctrl+a:跳转到当前命令最前面
Ctrl+e:跳转到当前命令最末尾
Ctrl+u:删除光标至行首内容
Ctrl+k:删除光标至行尾
7. 通配符:
*:匹配任意字符
?:匹配任意单个字符
[0-9]:匹配范围内单个字符
[^a-z]:匹配范围外的单个字符
bash 编程特性
1. 变量:
环境变量:export varName=VALUE 作用域:当前shell进程及其子进程
本地变量:set varName=VALUE 作用域:当前shell进程
局部变量:local varName=VALUE 作用域:当前代码段
位置变量:$1, $2, $3 .....
特殊变量:
$?:上一个命令的状态返回值
撤销变量:unset varName
2. 语法
顺序
分支
循环
bash 子给自足
1. type COMMAND:查看命令类型
2. which COMMAND: 查看命令存放位置
3. help COMMAND:内嵌命令详解
4. man COMMAND:外部命令详解
bash 系统类命令
1. shutdown [-r 重启] [ -h 关机] [+time]
2. reboot, half, poweroff
3. date [+format] : 显示日期/设置日期
4. cal : 日历类
bash 处理文本的命令
1. wc [ -l 行数 ] [ -w 单词 ] [ -c 字节 ] /path/to/file : 用于计算file文件中的行数,单词数,字节数
2. tr [list1] [list2] /path/to/file :将file中的list1出现的字符换成list2中的字符
3. cut -d: -f[1-9] /path/to/file :将file中的文件以‘:’分组,取出第[1-9]个字段
4. sort [-f 忽略大小写] [-n 按数值排序] [-u 重复的行只出现一次] -t: -k[1-7] /path/to/file :将file文件以:分组,取[1-7]字段进行排序
5. uniq [-c 行首显示改行的次数] [-d 仅显示重复行] [-u 重复的行只出现一次]
6. grep [-e 扩展的正则表达式 ] "pattern" /path/to/file :查找file文件中包含“pattern”字符串的行,pattern是一种模式(正则表达式)
-v : 显示不匹配的行 -o : 仅显示匹配到的字符串
-I : 不区分大小写 -A # : 匹配到行的下#行一起显示 (-B 上 | -C上下#行 )
7. sed [-n 静默模式,不输出模式空间中的内容] [-r 扩展正则] [-f 读取sed脚本] "/pattern1/[d 删除命令][i \text 在后面追加文本] [a \text 在前面追加文本] "s/查找/替换/[g 全局]" /path/to/file : 不处理原文件,只处理副本
8. awk [-F:指定分隔符] 'BEGIN {处理之前的动作} { 表达式语句;print $1 "," $2} END{处理之后的动作}'
9. bash伪随机数生成器:$RANDOM%10 = 10以内的整数
bash 文件测试
-a:逻辑与
-o:逻辑或
!:逻辑非
&&,||
文件的类型:-f 普通文件, -d 目录文件,-h 链接文件,设备文件(-b 块,-c 字符),-S 套接字文件,-p 管道文件
-e file : 测试文件是否存在
-r /w /x : 测试文件是否有读/写/执行权限
-z file_name:文件长度=0
-n file_name:文件长度不为0
-s file_name:文件大小非0为真
例子: 如果某个文件不存在就创建它
[ -e fileName ] || mkdir $fileName
哇哦,听了L小哥哥的解释,顿时又对他崇拜了起来,他咋这么厉害呢,希望他能修炼神功,带我飞!
说明:纯属个人学习编造