面试问题浓缩总结 面试问题浓缩总结
  • Go
  • Java
  • C/C++
  • JavaScript/HTML
  • MySQL
  • Redis
  • MongoDB
  • 操作系统
  • 计算机网络
  • spring全家桶
  • mybatis
  • 中间件
  • 软件相关
  • 系统相关
  • 算法
  • 数据结构
  • 设计模式
  • CMU硕士经典100题
  • 剑指offer
  • 重点手撕代码
  • 程序员面试金典
  • 3月
  • 4月
  • 智力题
  • 业务问题
  • 一些技术
  • 安全相关
APP下载 (opens new window)
GitHub (opens new window)
  • Go
  • Java
  • C/C++
  • JavaScript/HTML
  • MySQL
  • Redis
  • MongoDB
  • 操作系统
  • 计算机网络
  • spring全家桶
  • mybatis
  • 中间件
  • 软件相关
  • 系统相关
  • 算法
  • 数据结构
  • 设计模式
  • CMU硕士经典100题
  • 剑指offer
  • 重点手撕代码
  • 程序员面试金典
  • 3月
  • 4月
  • 智力题
  • 业务问题
  • 一些技术
  • 安全相关
APP下载 (opens new window)
GitHub (opens new window)
  • 软件使用

  • 系统相关

    • Linux基础
      • shell脚本运算符
        • 算数运算符
        • 关系运算符(常问)
        • 布尔运算符
        • 逻辑运算符
        • 字符串运算符
        • 文件测试运算符
      • 权限管理
      • 磁盘相关
      • 网络相关命令
      • 文本处理命令
    • Linux面试
    • 分布式系统相关
  • 软件和系统
  • 系统相关
小游
2021-03-20

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 //只列出所有目录
  • grep 文本搜索 (opens new window)
    • 在多级目录中对文本递归搜索 grep "class" . -R -n
  • xargs 命令行参数转换 (opens new window)
    • 将单行转化为多行输出n表示字段数 cat single.txt | xargs -n 3
  • sort 排序 (opens new window)
    • 可以按数字或者字典序进行排序
  • uniq 消除重复行 (opens new window)
  • 用tr进行转换 (opens new window)
    • 可以用于替换字符
  • cut 按列切分文本 (opens new window)
    • 截取文件的第2列和第4列 cut -f2,4 filename
  • 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
Docker
Linux面试

← Docker Linux面试→

Theme by Vdoing | Copyright © 2021-2021 小游
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式