 Linux基础
          Linux基础
        
  # shell脚本运算符
# 算数运算符
| 运算符 | 说明 | 举例 | 
|---|---|---|
| + | 加法 | expr $a + $b结果为 30。 | 
| - | 减法 | expr $a - $b结果为 -10。 | 
| * | 乘法 | expr $a \* $b结果为 200。 | 
| / | 除法 | expr $b / $a结果为 2。 | 
| % | 取余 | expr $b % $a结果为 0。 | 
| = | 赋值 | a=$b 将把变量 b 的值赋给 a。 | 
| == | 相等。用于比较两个数字,相同则返回 true。 | [ $a == $b ] 返回 false。 | 
| != | 不相等。用于比较两个数字,不相同则返回 true。 | [ $a != $b ] 返回 true。 | 
# 关系运算符(常问)
| 运算符 | 说明 | 举例 | 
|---|---|---|
| -eq | 检测两个数是否相等,相等返回 true。 | [ $a -eq $b ] 返回 false。 | 
| -ne | 检测两个数是否不相等,不相等返回 true。 | [ $a -ne $b ] 返回 true。 | 
| -gt | 检测左边的数是否大于右边的,如果是,则返回 true。 | [ $a -gt $b ] 返回 false。 | 
| -lt | 检测左边的数是否小于右边的,如果是,则返回 true。 | [ $a -lt $b ] 返回 true。 | 
| -ge | 检测左边的数是否大于等于右边的,如果是,则返回 true。 | [ $a -ge $b ] 返回 false。 | 
| -le | 检测左边的数是否小于等于右边的,如果是,则返回 true。 | [ $a -le $b ] 返回 true。 | 
# 布尔运算符
| 运算符 | 说明 | 举例 | 
|---|---|---|
| ! | 非运算,表达式为 true 则返回 false,否则返回 true。 | [ ! false ] 返回 true。 | 
| -o | 或运算,有一个表达式为 true 则返回 true。 | [ $a -lt 20 -o $b -gt 100 ] 返回 true。 | 
| -a | 与运算,两个表达式都为 true 才返回 true。 | [ $a -lt 20 -a $b -gt 100 ] 返回 false。 | 
# 逻辑运算符
| 运算符 | 说明 | 举例 | 
|---|---|---|
| && | 逻辑的 AND | [[ $a -lt 100 && $b -gt 100 ]] 返回 false | 
| || | 逻辑的 OR | [[ $a -lt 100 || $b -gt 100 ]] 返回 true | 
# 字符串运算符
| 运算符 | 说明 | 举例 | 
|---|---|---|
| = | 检测两个字符串是否相等,相等返回 true。 | [ $a = $b ] 返回 false。 | 
| != | 检测两个字符串是否相等,不相等返回 true。 | [ $a != $b ] 返回 true。 | 
| -z | 检测字符串长度是否为0,为0返回 true。 | [ -z $a ] 返回 false。 | 
| -n | 检测字符串长度是否为0,不为0返回 true。 | [ -n "$a" ] 返回 true。 | 
| $ | 检测字符串是否为空,不为空返回 true。 | [ $a ] 返回 true。 | 
# 文件测试运算符
| 操作符 | 说明 | 举例 | 
|---|---|---|
| -b file | 检测文件是否是块设备文件,如果是,则返回 true。 | [ -b $file ] 返回 false。 | 
| -c file | 检测文件是否是字符设备文件,如果是,则返回 true。 | [ -c $file ] 返回 false。 | 
| -d file | 检测文件是否是目录,如果是,则返回 true。 | [ -d $file ] 返回 false。 | 
| -f file | 检测文件是否是普通文件(既不是目录,也不是设备文件),如果是,则返回 true。 | [ -f $file ] 返回 true。 | 
| -g file | 检测文件是否设置了 SGID 位,如果是,则返回 true。 | [ -g $file ] 返回 false。 | 
| -k file | 检测文件是否设置了粘着位(Sticky Bit),如果是,则返回 true。 | [ -k $file ] 返回 false。 | 
| -p file | 检测文件是否是有名管道,如果是,则返回 true。 | [ -p $file ] 返回 false。 | 
| -u file | 检测文件是否设置了 SUID 位,如果是,则返回 true。 | [ -u $file ] 返回 false。 | 
| -r file | 检测文件是否可读,如果是,则返回 true。 | [ -r $file ] 返回 true。 | 
| -w file | 检测文件是否可写,如果是,则返回 true。 | [ -w $file ] 返回 true。 | 
| -x file | 检测文件是否可执行,如果是,则返回 true。 | [ -x $file ] 返回 true。 | 
| -s file | 检测文件是否为空(文件大小是否大于0),不为空返回 true。 | [ -s $file ] 返回 true。 | 
| -e file | 检测文件(包括目录)是否存在,如果是,则返回 true。 | [ -e $file ] 返回 true。 | 
参考 Shell脚本之五 基本运算符 - fengMisaka - 博客园 (cnblogs.com) (opens new window)
# 权限管理
- 一般包括读,写,执行。对应字母为 r、w、x 
- 权限粒度有拥有者、群组、其他组三种 
- 数字权限(即 r=4,w=2,x=1 ) 比如rwx=4+2+1=7 
- -表示没有权限比如 - rw-(可读写不可运行)
- 十位权限表示 - -rw------- (600) 只有拥有者有读写权限。 -rw-r--r-- (644) 只有拥有者有读写权限;而属组用户和其他用户只有读权限。 -rwx------ (700) 只有拥有者有读、写、执行权限。 -rwxr-xr-x (755) 拥有者有读、写、执行权限;而属组用户和其他用户只有读、执行权限。 -rwx--x--x (711) 拥有者有读、写、执行权限;而属组用户和其他用户只有执行权限。 -rw-rw-rw- (666) 所有用户都有文件读、写权限。 -rwxrwxrwx (777) 所有用户都有读、写、执行权限。1
 2
 3
 4
 5
 6
 7- 第一位实际上表示的文件类型,有下面几种 - d代表的是目录(directroy) -代表的是文件(regular file) s代表的是套字文件(socket) p代表的管道文件(pipe)或命名管道文件(named pipe) l代表的是符号链接文件(symbolic link) b代表的是该文件是面向块的设备文件(block-oriented device file) c代表的是该文件是面向字符的设备文件(charcter-oriented device file)1
 2
 3
 4
 5
 6
 7- 后面9位前3位对应拥有者权限、4-6位对应群组权限、7-9对应其他组权限 
更详细的参考:Linux权限详解(chmod、600、644、666、700、711、755、777、4755、6755、7755)_wlin的博客-CSDN博客_chmod (opens new window)
# 磁盘相关
- 用 - df -h查看磁盘占用情况
- 使用 - fdisk -l查看新磁盘是否被系统识别(可以查看所有挂载的磁盘)
- 使用 - mount -t type device dir:挂载device到dir
参考:Linux查看与挂载新磁盘_ybdesire的专栏-CSDN博客_linux 查看所有磁盘 (opens new window)
# 网络相关命令
- Linux 查看端口占用情况可以使用 lsof 和 netstat 命令
# 文本处理命令
- find 文件查找 (opens new window) - 查找txt和pdf文件:  find . \( -name "*.txt" -o -name "*.pdf" \) -print
- find . -type d -print//只列出所有目录
 
- 查找txt和pdf文件:  
- grep 文本搜索 (opens new window) - 在多级目录中对文本递归搜索  grep "class" . -R -n
 
- 在多级目录中对文本递归搜索  
- xargs 命令行参数转换 (opens new window) - 将单行转化为多行输出n表示字段数  cat single.txt | xargs -n 3
 
- 将单行转化为多行输出n表示字段数  
- sort 排序 (opens new window) - 可以按数字或者字典序进行排序
 
- uniq 消除重复行 (opens new window)
- 用tr进行转换 (opens new window) - 可以用于替换字符
 
- cut 按列切分文本 (opens new window) - 截取文件的第2列和第4列  cut -f2,4 filename
 
- 截取文件的第2列和第4列  
- paste 按列拼接文本 (opens new window)
- wc 统计行和字符的工具 (opens new window) - $wc -l file// 统计行数
 
- sed 文本替换利器 (opens new window) - 可以首处替换,也可以全局替换
 
- awk 数据流处理工具 (opens new window) - 这个用法就挺多的,可以过滤出每一列的数据
 
编辑  (opens new window)
  上次更新: 2021/04/10, 21:00:03
