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