考试复习
考试地点:仙 1-207
- 前三天的PPT的课堂练习和提问
- 每天的作业
- 怎么去查找帮助
- man
- help
- tldr
- 权限的概念 针对不同文件类型有什么区别
- 可读 r 4
- 可写 w 2
- 可执行 x 1
- 修改权限 chmod
chmod 644 file
- 两个特殊权限
- 改变文件的拥有者 chown
- 改变文件所属的组 chgrp
- 理解shell和通过shell执行命令的关键概念
- 哪些是shell解析的
- 哪些是命令解析的
- 如何解决有些命令接受的是参数,用管道连接
- shell脚本
- 特殊变量
- 命令替换和进程替换
- 脚本和函数的概念
- 简单脚本的编写
- vim编辑器
- 模式的概念
- 常见的移动编辑命令
- 正则表达式
- 特殊字符的含义
- 通过正则表达式给出输出结果
- 数据处理
- 常见命令
- 课堂练习
- PPT介绍的常见命令和用法
- 特殊参数的含义 grep
自主整理
第一天
pwd
打印当前工作路径cd ~
切换到家路径cd -
切换到上一次的路径ls -a
显示全部文件包括隐藏文件ls -l
显示详细信息man command
查看命令的手册command -h
或command --help
查看命令的帮助tldr command
第三方帮助手册sudo apt install tldr
软件包安装sudo apt update
sudo apt upgrade
软件包更新echo $PATH
查看环境变量which command
查看执行的命令的位置type command
shell内置的功能,查看命令位置- shell是在怎么执行命令的
- 拿到一个命令,在环境变量中找到对应的二进制文件
- shell完成变量的解析和替换
$PATH
- 命令替换部分的命令被shell先执行
- shell完成通配符的扩展
- shell处理引号
- shell解析管道符 | 和重定向
- 命令本身解析传递给它的选项和参数
- 文件的权限
- 三个字母为一组,分别表示u(所有者) g(所属组) o(其他人)
- rwx 分别对应数字 4 2 1
- s权限 SUID 其他用户拥有所有者的权限 这类文件一定不能有bug
- t权限 粘滞位 只有文件所有者或超级用户可以删除或重命名 /tmp目录
- 目录和文件的区别
- 目录第一位为d
- 目录可读表示可以列出目录下的文件 可以用ls列出
- 目录可写表示可以增加或删除目录下的文件 文件的能否删除不取决于文件是否可写
- 目录可执行表示可以进入目录 对于目录来说最重要的权限
mv
文件重命名或移动cp
文件复制rm -i
确定后再删除 rm不能删除目录rm -r
递归删除目录下所有文件rmdir
删除空目录mkdir
新建目录c-l
清屏 相当于clear
cat hello.txt
和cat < hello.txt
的区别- 重定向会由shell先解析
<
输入重定向>
输出重定向>>
追加输出重定向2>
错误输出重定向
passwd
修改密码less
一页一页显示内容 比more
好用- 管道的概念
- 管道符
|
- 用于将一个程序的输出连接到另一个程序的输入 和流的重定向区别
- 注意有些命令不接受输入,无法用管道连接
- 不接受输入的命令
echo
,cd
,mkdir
,rm
,touch
使用xargs将输入转化为参数
ls | xargs echo
- 管道符
sudo -i
切换为超级用户sudo
和重定向 重定向是shell完成sudo echo 1 > /sys/class/leds/input2::capslock/brightness
echo 1 由sudo完成
tee
三通管道 标准输入 > 标准输出 和 文件 一般和管道结合使用- 结合
sudo
完成向需要权限的文件写入内容echo "new content" | sudo tee /etc/somefile
- 结合
- 链接
- 硬链接:文件名 是对文件数据块的指向
- 软链接:指向文件名的路径名 相当于快捷方式
- 文件一般只有一个硬链接
- 目录至少有两个目录名和.,每当一个子目录创建,父目录就会增加一个硬链接 ..
touch
创建文件或更改已有文件时间戳
第二天
- vim编辑器
- 正常模式
- 插入模式
i
或a
- 替换模式
r
或R
一直替换 - 可视化模式
v
s-v
按行选中c-v
按块选中 - 命令模式
:
?
/
- vim常见的移动编辑
- hjkl
- w 按单词跳转 W 按变量名跳转
- b 向后按单词跳转 B 同理
- e 跳转到单词的结尾 和w区分
- $ 跳转到行末
- 0 跳转到行首
- c-f 向后翻页 c-d 向后翻半页
- c-b 向前翻页 c-u 向前翻半页
- G 跳转到文章末尾
- gg 跳转到文章开头
- o 向下插入一行 O 向上插入一行
- d 删除 可以结合移动命令
- u 撤销
- c-r 恢复撤销
- c 删除并进入插入模式
ci(
- t 查找到字符的前一个位置
- f 查找到字符上’
- . 重复上一个操作
- shell脚本
- 变量赋值注意等号前后没有空格
- $变量
- 单引号内的字符是完全引用,不会进行转义和变量替换
- 双引号会进行变量替换和转义
- 特殊变量 $1 $2 … $N 表示传递的参数
- $0脚本的名称
- $?上一条命令的执行情况 0为正常
- !! 完整的上一条命令
- #!/usr/bin/bash Shebang 用于指定脚本的解释器
- 命令替换
$(CMD)
相当于变量 - 进程替换
<(CMD)
重定向到一个临时文件 - 函数和脚本的区别
- 函数是在脚本或命令行中定义的
- 函数在当前shell进程中执行而脚本是新开了一个子进程
- 函数通过函数名调用,脚本通过运行脚本文件来调用
- 函数仅在定义时加载,而脚本是每次运行时加载
bash 脚本名
指定用bash执行,且不需要可执行权限,会新开一个子进程脚本名
根据Shebang行指定解释器,需要可执行权限,会新开一个子进程source 脚本名
相当于在shell中重新打一遍, 在当前进程下
- 通配
- ? 匹配一个
- 匹配零个或任意
- {} 生成一系列字符串
- [] 匹配方括号内的任意一个字符
- 通配是完整路径的扩展而变量是字面意义的扩展
- shell查找文件
find <搜索起点> -name <文件名> -type <类型>
find . -path '**/test/*.py' -type f
两个**表示任意层级的文件
- shell查找打过的命令
history
!!
执行上一条命令for item in item1 item2 item3; do1
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循环
echo $item
donewhile [ $count -lt 10 ]; do1
1. while循环
echo $count
count=$((count + 1))
doneif [ $count -lt 10 ]; then1
2
31. **中括号用于条件测试**
2. **双小括号用于算术运算**
3. if判断
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 不能捕捉的信号,杀死一个程序且不能被忽视