shell
Linux 基础命令
文件类命令
1.磁盘与目录
2.文件编辑
- vi、vim
vi 1.txt
i:insert
a:append
ESC:退回命令模式
:
w:write
q:quit
! 强制
- sed
3.文件权限
三种身份
当前用户
当前组
非同组
三种权限
r,读
w,写
x,执行
参考:https://www.cnblogs.com/vivian-test/p/5071488.html
- ll,查看文件权限
- chmod,修改归属者
chmod o+w 1.txt
- chown,修改用户
- chgrp,修改组
4.文件搜索
5.文件内容
6.特殊文件
- ln,软链,相当于 windows 的快捷方式
ln -s 1.txt 3.txt
,设置软链后编辑 3.txt 就等于编辑 1.txt
7.移除文件
进程类命令
- ps,进程快照
ps aux
ps -ef
- top,持续交互式
### 网络类命令
- netstat
netstat -tlnp
,当前对外开放的端口
netsta -tnp
,当前连接
- curl
### 管道
1.输入与输出
- read,用来读取输入,并赋值给变量
把 123 赋值给 x
- ehco,输出变量
- printf,输出变量
- >file,将输出重定向到另一个文件,每次都覆盖
- >>file,将输出追加重定向到另一个文件
- <file,输入重定向
- 管道,前一个命令的输出传给后一个命令的输入
管道会开启一个新的进程,与 read 组合使用时要注意。
Linux 三剑客
gerp,基于正则表达式查找满足条件的行
grep pattern file
pattern:正则表达式
file:没给文件时,会找标准输出
1.grep 的参数
- -i,忽略大小写
- -v,不显示匹配的行
- -o,每个匹配内容用独立的行显示
- -E,使用拓展正则表达式
- -r,递归搜索文件夹
2.基本正则表达式
使用正则表达式,最好用单引号括住表达式
开头
$ 结尾
[a-z]、[0-9] 区间,其中任意一个
[a] 不匹配 a
* 表示 0 个或多个
.表示任意字符
3.拓展正则表达式
使用拓展正则表达式,需要加上-E 参数
- ? 非贪婪匹配
- + 表示一个或多个
- () 分组
- {} 范围限定
- | 匹配多个表达式中的一个
### awk,根据定位到的数据行处理其中的分段
语法:awk 'pattern{action}
掌握字段数据处理
- -F 参数,指定字段分隔符,没有指定默认以空格为分隔符
- $0,代表当前的记录,为避免 $ 符号与引用变量的 $ 混淆,需要使用{}括起来
- $1,代表第一个字段
- $N,代表第 N 个字段
- $NF,代表最后一个字段
echo $PWD |awk -F '/' '{print $2}'
以/为分隔符,打印第二个字段
### sed,根据定位到的数据行修改其中的数据
*掌握修改 *
- s 代表搜索
- /可以是其他符号,一般用/
- g 代表全局搜索修改
- -e 可以使用多个表达式
echo $PWD |sed -e's/1/a/g' -e's/h/999/'
##Bash 语言
变量
1.变量定义
- = 左右不要有空格
- 如果内容有空格,需要使⽤单引号或者双引号
- 双引号⽀持转义 $ 开头的变量会被⾃动替换
2.变量引用
$
逻辑控制
1.if
- if [ condition ] ; then …;fi
- if [ condition ] ; then …;else …;fi
- if [ condition ] ; then …;elif …;fi
- 简单的逻辑可以使⽤ && || 去替代
- [ -f file ] && echo file exist || echo file not exist
- 条件可以⽤命令返回值代替
2.for
- ⽤于递归数组
arry=(1 2 3 4);for i in ${arry[@]};do echo $i;done
- 用于递归以空格隔开的字符串序列
ss="aa bb cc dd";for x in $ss;do echo $x ;done
- 用于递归某个命令的返回值
for x in
ls;do echo $x ;done
3.while
4.退出控制
- return 函数返回
- exit 脚本进程退出
- break 退出当前循环
- continue 跳过当前的循环,进⼊下⼀次循环
### 函数
1.注释
2.传参
- $0 表⽰执⾏的程序,是相对于执⾏⽬录的路径
- \$1 ,\$2 ,$3 分别表⽰第⼏个参数。默认 shell 只⽀持 9 个参 数,使⽤ shift 可以传递更多的参数。
- \$@,\$* 表⽰所有的参数,不含 $0
- \${#*}和\${#@}表⽰位置参数的个数
- 通过\${:1:3},\${:$#} 来表⽰多个参数。
3.定义函数
4.执行函数
5.调试函数 -x
↙↙↙阅读原文可查看相关链接,并与作者交流