dong-frank的博客

Linux系统基础 复习

字数统计: 2.5k阅读时长: 9 min
2024/07/27

考试复习

考试地点:仙 1-207

  1. 前三天的PPT的课堂练习和提问
  2. 每天的作业
  3. 怎么去查找帮助
    1. man
    2. help
    3. tldr
  4. 权限的概念 针对不同文件类型有什么区别
    1. 可读 r 4
    2. 可写 w 2
    3. 可执行 x 1
    4. 修改权限 chmod chmod 644 file
    5. 两个特殊权限
    6. 改变文件的拥有者 chown
    7. 改变文件所属的组 chgrp
  5. 理解shell和通过shell执行命令的关键概念
    1. 哪些是shell解析的
    2. 哪些是命令解析的
    3. 如何解决有些命令接受的是参数,用管道连接
  6. shell脚本
    1. 特殊变量
    2. 命令替换和进程替换
    3. 脚本和函数的概念
    4. 简单脚本的编写
  7. vim编辑器
    1. 模式的概念
    2. 常见的移动编辑命令
  8. 正则表达式
    1. 特殊字符的含义
    2. 通过正则表达式给出输出结果
  9. 数据处理
    1. 常见命令
    2. 课堂练习
  10. PPT介绍的常见命令和用法
    1. 特殊参数的含义 grep

自主整理

第一天

  1. pwd打印当前工作路径
  2. cd ~ 切换到家路径
  3. cd - 切换到上一次的路径
  4. ls -a 显示全部文件包括隐藏文件
  5. ls -l 显示详细信息
  6. man command查看命令的手册
  7. command -hcommand --help 查看命令的帮助
  8. tldr command 第三方帮助手册
  9. sudo apt install tldr 软件包安装
  10. sudo apt update sudo apt upgrade 软件包更新
  11. echo $PATH 查看环境变量
  12. which command 查看执行的命令的位置
  13. type command shell内置的功能,查看命令位置
  14. shell是在怎么执行命令的
    1. 拿到一个命令,在环境变量中找到对应的二进制文件
    2. shell完成变量的解析和替换$PATH
    3. 命令替换部分的命令被shell先执行
    4. shell完成通配符的扩展
    5. shell处理引号
    6. shell解析管道符 | 和重定向
    7. 命令本身解析传递给它的选项和参数
  15. 文件的权限
    1. 三个字母为一组,分别表示u(所有者) g(所属组) o(其他人)
    2. rwx 分别对应数字 4 2 1
    3. s权限 SUID 其他用户拥有所有者的权限 这类文件一定不能有bug
    4. t权限 粘滞位 只有文件所有者或超级用户可以删除或重命名 /tmp目录
    5. 目录和文件的区别
      1. 目录第一位为d
      2. 目录可读表示可以列出目录下的文件 可以用ls列出
      3. 目录可写表示可以增加或删除目录下的文件 文件的能否删除不取决于文件是否可写
      4. 目录可执行表示可以进入目录 对于目录来说最重要的权限
  16. mv 文件重命名或移动
  17. cp 文件复制
  18. rm -i 确定后再删除 rm不能删除目录
  19. rm -r 递归删除目录下所有文件
  20. rmdir 删除空目录
  21. mkdir 新建目录
  22. c-l 清屏 相当于clear
  23. cat hello.txtcat < hello.txt的区别
    1. 重定向会由shell先解析
    2. <输入重定向
    3. >输出重定向
    4. >>追加输出重定向
    5. 2>错误输出重定向
  24. passwd修改密码
  25. less 一页一页显示内容 比more好用
  26. 管道的概念
    1. 管道符|
    2. 用于将一个程序的输出连接到另一个程序的输入 和流的重定向区别
    3. 注意有些命令不接受输入,无法用管道连接
    4. 不接受输入的命令echo,cd,mkdir,rm,touch 使用xargs将输入转化为参数 ls | xargs echo
  27. sudo -i切换为超级用户
    1. sudo和重定向 重定向是shell完成 sudo echo 1 > /sys/class/leds/input2::capslock/brightness echo 1 由sudo完成
  28. tee 三通管道 标准输入 > 标准输出 和 文件 一般和管道结合使用
    1. 结合sudo完成向需要权限的文件写入内容echo "new content" | sudo tee /etc/somefile
  29. 链接
    1. 硬链接:文件名 是对文件数据块的指向
    2. 软链接:指向文件名的路径名 相当于快捷方式
    3. 文件一般只有一个硬链接
    4. 目录至少有两个目录名和.,每当一个子目录创建,父目录就会增加一个硬链接 ..
  30. touch创建文件或更改已有文件时间戳

第二天

  1. vim编辑器
    1. 正常模式
    2. 插入模式 ia
    3. 替换模式 rR一直替换
    4. 可视化模式 v s-v按行选中 c-v按块选中
    5. 命令模式 : ? /
  2. vim常见的移动编辑
    1. hjkl
    2. w 按单词跳转 W 按变量名跳转
    3. b 向后按单词跳转 B 同理
    4. e 跳转到单词的结尾 和w区分
    5. $ 跳转到行末
    6. 0 跳转到行首
    7. c-f 向后翻页 c-d 向后翻半页
    8. c-b 向前翻页 c-u 向前翻半页
    9. G 跳转到文章末尾
    10. gg 跳转到文章开头
    11. o 向下插入一行 O 向上插入一行
    12. d 删除 可以结合移动命令
    13. u 撤销
    14. c-r 恢复撤销
    15. c 删除并进入插入模式 ci(
    16. t 查找到字符的前一个位置
    17. f 查找到字符上’
    18. . 重复上一个操作
  3. shell脚本
    1. 变量赋值注意等号前后没有空格
    2. $变量
    3. 单引号内的字符是完全引用,不会进行转义和变量替换
    4. 双引号会进行变量替换和转义
    5. 特殊变量 $1 $2 … $N 表示传递的参数
    6. $0脚本的名称
    7. $?上一条命令的执行情况 0为正常
    8. !! 完整的上一条命令
    9. #!/usr/bin/bash Shebang 用于指定脚本的解释器
    10. 命令替换 $(CMD) 相当于变量
    11. 进程替换 <(CMD) 重定向到一个临时文件
    12. 函数和脚本的区别
      1. 函数是在脚本命令行中定义的
      2. 函数在当前shell进程中执行而脚本是新开了一个子进程
      3. 函数通过函数名调用,脚本通过运行脚本文件来调用
      4. 函数仅在定义时加载,而脚本是每次运行时加载
      5. bash 脚本名 指定用bash执行,且不需要可执行权限,会新开一个子进程
      6. 脚本名 根据Shebang行指定解释器,需要可执行权限,会新开一个子进程
      7. source 脚本名 相当于在shell中重新打一遍, 在当前进程下
  4. 通配
  5. ? 匹配一个
    • 匹配零个或任意
  6. {} 生成一系列字符串
  7. [] 匹配方括号内的任意一个字符
  8. 通配是完整路径的扩展而变量是字面意义的扩展
  9. shell查找文件
    1. find <搜索起点> -name <文件名> -type <类型>
    2. find . -path '**/test/*.py' -type f 两个**表示任意层级的文件
  10. shell查找打过的命令
    1. history
    2. !!执行上一条命令
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
            ```!cd:p```把上一条cd命令打印出来

      ```c-r```交互式的显示查找命令
      3. 命令前面加空格就不会被历史记录记下 **防止密码泄露**
      7. grep命令的参数
      1. -i 忽略大小写
      2. -v 反转匹配,显示不匹配的行
      3. -r 递归搜索
      4. -E 启用扩展正则表达式
      8. shell控制流
      1. for循环
      for item in item1 item2 item3; do
      echo $item
      done
      1
      1. while循环
      while [ $count -lt 10 ]; do
      echo $count
      count=$((count + 1))
      done
      1
      2
      3
      1. **中括号用于条件测试**
      2. **双小括号用于算术运算**
      3. if判断
      if [ $count -lt 10 ]; then
      echo “Count is less than 10”
      fi

### 第三天
1. 正则表达式 **注意和通配的区别**
   1. 正则表达式常用命令 grep sed awk
   2. 通配常用命令 ls cp mv
   3. ```.``` 除换行符之外的任意单个字符
```*``` 匹配前面字符零次或多次
```+``` 匹配前面字符一次或多次
```?``` 匹配前面字符零次或一次
```[abc]``` 匹配a,b,c 中任意一个
```(RX1|RX2)``` 任何能匹配RX1或RX2的结果 **捕获组**
```\3```表示留下三号捕获组 
```[^...]``` 匹配不在方括号内的字符 **捕获组可以将匹配的子表达式保存起来,以便后续引用或处理**
```^``` 行首
```$``` 行尾
   4. 解决正则表达式的贪婪匹配 **尽可能全面的匹配**
2. 数据处理
   1. ```sort```排序 默认为按字典排序 ```sort -n```按数值排序 ```sort -k1,1```按第一列排序
   2. ```uniq```将相同行进行合并 ```uniq -c```加上行号
   3. ```paste -sd,``` -s 序列号 -d指定分隔符
   4. ```wc -l```统计行数
3. sed流编辑器
   1. ```sed 's/<正则表达式>/<要替换的内容>/' 输入``` 默认只替换一次
   2. 若要递归的替换加参数```g```
   3. 默认支持的较老的正则表达式 若要支持较新版本加参数```-E```
```sed -E 's/<正则表达式>/<要替换的内容>/'```
   1. ```sed 's/foo/bar/p' file.txt``` 打印替换后的结果
   2. ```sed 's/foo/bar/g' file.txt``` 全局替换
1. awk语言
   1. $1-n 表示分隔的字符串,默认以空格分隔
   2. $0 表示整行
   3. {} 用于包含对每个输入行执行的操作
2. bc -l 使用数学库进行计算
   1. ```echo "5 + 3" | bc -l```

### 第四天
```sleep```命令
```sleep 10```睡10s
```c-c```中止命令的执行
```c-c``` -> SIGINT信号 **停止程序**
```kill -l``` 查看有多少信号
```man 7 signal``` 查看信号的帮助手册
```SIGQUIT``` ```c-\```发送 Quit from keyboard 会产生一个核心转储文件
```SIGTERM``` ```kill 进程号```发送 ```ps```查询进程号
```SIGHUP``` 终止终端运行的所有程序(一般是退出终端后发送)
```SIGSTOP``` 暂停程序运行
```SIGCONT``` 继续运行暂停的程序
```SIGKILL``` Kill signal 不能捕捉的信号,杀死一个程序且不能被忽视
CATALOG
  1. 1. 考试复习
    1. 1.1. 自主整理
      1. 1.1.1. 第一天
      2. 1.1.2. 第二天