Linux系统编程Day3-- Linux常用操作(终)
往期内容回顾:
Linux常用操作(续)
Linux常用操作
Linux系统的概念,主要内容
一、find指令的介绍:
find 是 Linux 系统中非常强大且常用的文件查找命令,可以在指定目录下递归查找文件或目录,支持多种条件组合搜索。
其中:
-
搜索路径:在哪个目录下查找(可以是.表示当前目录)
-
搜索条件:如 -name、-type、-size 等
-
处理动作:如 -print(默认)、-delete、-exec 等
-
1、-name 选项:按名称匹配文件
find [路径] -name "文件名"
find . -name "test.txt"
2、查找以 .log 结尾的文件(通配符)
find /var/log -name "*.log"
*:匹配任意字符
*.log:匹配所有以 .log 结尾的文件名
⚠️ 注意:
-
-name 匹配是大小写敏感的;
-
若想大小写不敏感,可以用 -iname:find查找磁盘效率很低。
-
3、常配合 -name 使用的组合示例:
用法 | 含义 |
---|---|
find . -type f -name "*.c" | 查找当前目录及子目录下所有 .c 文件 |
find / -name passwd 2>/dev/null | 在整个系统中查找名为 passwd 的文件,忽略报错信息 |
find . -name "*.sh" -exec chmod +x {} \; | 查找所有 .sh 脚本并添加执行权限 |
4、总结
选项 | 说明 |
---|---|
-name | 精确匹配文件名(大小写敏感) |
-iname | 不区分大小写的名称匹配 |
-type f | 查找普通文件 |
-type d | 查找目录 |
-exec ... | 对匹配结果执行命令 |
-delete | 删除匹配到的文件或目录 |
5、其他相关的查找命令
1、locate —— 按文件名快速查找文件路径
locate 命令通过系统维护的文件索引数据库(通常是 /var/lib/mlocate/mlocate.db)来快速查找文件,相比 find,速度更快,但查找的不是“实时”的文件系统。
locate filename.txt
2、which —— 查找可执行文件的位置
用于显示某个命令在系统中的完整路径(一般是 PATH 环境变量中的)
which python3
3、command -v —— 类似于 which,适合脚本中使用
command -v grep
4、whereis—— 查找命令的所有相关路径(包括执行文件、源码、man手册等)
whereis gcc
6、alias命名
alias 是 Linux/Unix 系统中的一个 Shell 内建命令,用于为常用的命令创建快捷方式或别名,以减少输入量,提高效率。
1、基本语法
alias [别名]='[原始命令]'
注意:等号两边不能有空格,命令要用引号括起来。
1. 给 ls命令加颜色:
alias ls='ls --color=auto'
2. 防止 rm 误删文件,要求确认:
alias rm='rm -i'
3. 缩写常用命令:
alias ll='ls -l' alias la='ls -la' alias gs='git status'
4、取消别名
unalias ll
二、grep指令的介绍
一、基本语法:
grep "^[a-zA-Z]" file.txt
grep [选项] "要查找的内容" 文件名
grep "hello" file.txt
表示在 file.txt 文件中查找所有包含字符串 "hello" 的行。
二、常用选项说明:
选项 | 含义 |
---|---|
-i | 忽略大小写(ignore case) |
-n | 显示匹配的行号(line number) |
-v | 显示不包含匹配字符串的行 |
-r 或 -R | 递归搜索子目录 |
-l | 只输出包含匹配内容的文件名(不显示内容) |
-c | 统计匹配的行数 |
-E | 使用扩展正则表达式(同 egrep) |
三、正则表达式支持(进阶)
1、匹配以字母开头的行:
grep "^[a-zA-Z]" file.txt
2、匹配空行:
grep "^$" file.txt
三、sort指令介绍
1、基本语法
sort [选项] [文件名]
若不指定文件名,则默认从标准输入读取(可以使用管道输入)
2、常用选项详解
选项 | 含义 |
---|---|
-n | 按 数字 排序(默认按字符串排序) |
-r | 倒序排序(reverse) |
-k | 按指定 列 排序,例如 -k 2 |
-t | 指定分隔符,例如 -t : |
-u | 去重排序(只保留唯一行) |
-o | 指定输出文件 |
-V | 按照 版本号 排序,例如 v1.2 v1.10 |
3、使用举例
1. 默认排序(按字典序)sort 默认是按字符串的字典序排序(而不是按数字),所以:
sort names.txt
2、数值排序(按数字大小排序)
sort -n numbers.txt
3. 倒序 + 数值排序
sort -nr numbers.txt
4. 去除重复行排序
sort -u words.txt
5、搭配管道使用(常用)
例如统计某文件中出现次数最多的行:
sort file.txt | uniq -c | sort -nr
4、总结
用法 | 说明 |
---|---|
sort file.txt | 字典序排序 |
sort -n | 数字排序 |
sort -r | 倒序 |
sort -k 2 | 按第2列排序 |
sort -t ':' | 设置分隔符 |
sort -u | 排序+去重 |
sort -V | 版本号排序 |
sort -o output.txt | 输出到文件 |
四、zip和unzip命令介绍
zip 和 unzip 是 Linux 中最常用的压缩与解压命令之一,主要用于 .zip 格式的压缩包的创建与解压。
1、zip基本语法和常用选项
zip [选项] 压缩包名.zip 要压缩的文件/目录
常用选项:
选项
含义
-r
递归压缩整个目录
-q
静默模式(不显示压缩过程)
-9
最大压缩率(从 0 到 9)
-e
创建加密压缩文件(需要输入密码)
1. 压缩单个文件:zip myfile.zip file.txt
2. 压缩多个文件:
zip archive.zip file1.txt file2.txt
3. 压缩整个目录(递归):
zip -r mydir.zip mydir/
4. 压缩并设置密码:
zip -e secret.zip secret.txt
2、unzip命令及常用选项
unzip [选项] 压缩包.zip
常用选项:
选项
含义
-l
查看压缩包内文件(列出文件列表)
-d
指定解压目录
-o
解压时自动覆盖已有文件,无需确认
-n
解压时不覆盖任何已存在的文件
-q
静默模式,不显示过程信息
1. 解压到当前目录:
unzip archive.zip
2. 解压到指定目录:
unzip archive.zip -d /path/to/destination
3. 解压时覆盖已有文件:
unzip -o archive.zip
4. 查看压缩包内容(不解压):
unzip -l archive.zip
补充说明:
.zip 文件通常不保留文件权限(不像 .tar.gz)
如果你要压缩包含 Linux 权限和符号链接的文件夹,推荐使用 tar 命令
如果系统未安装 zip / unzip,可以使用以下命令安装:
sudo apt install zip unzip # Ubuntu / Debian sudo yum install zip unzip # CentOS / RHEL
操作
命令
压缩文件
zip a.zip a.txt
压缩目录
zip -r a.zip folder/
解压当前目录
unzip a.zip
解压指定目录
unzip a.zip -d ./out/
查看内容
unzip -l a.zip
五、tar指令(重要)
一、tar 的基本语法
tar [选项] [归档文件名] [要归档的文件/目录]
常见选项组合(核心操作):
操作
命令组合
含义说明
-c
create
创建归档文件
-x
extract
解包归档文件
-t
list
列出归档内容(不解包)
-v
verbose
显示详细处理信息
-f
file
指定归档文件名
-z
gzip
用 gzip 进行压缩/解压
-j
bzip2
用 bzip2 压缩(.bz2 格式)
-J
xz
用 xz 压缩(.xz 格式)
二、常用操作举例
1. 创建归档(打包)
将目录/文件打包为 .tar(不压缩):
tar -cvf archive.tar mydir/
打包并用 gzip 压缩为 .tar.gz
tar -xjvf archive.tar.bz2
tar -czvf archive.tar.gz mydir/
打包并用 bzip2 压缩为 .tar.bz2
tar -cjvf archive.tar.bz2 mydir/
打包并用 xz 压缩为 .tar.xz
tar -cJvf archive.tar.xz mydir/
2. 解压归档
解压 .tar文件:
tar -xvf archive.tar
解压 .tar.gz 或 .tgz文件:
tar -xzvf archive.tar.gz
解压 .tar.bz2 文件:
tar -xjvf archive.tar.bz2
解压到指定目录:
tar -xvf archive.tar -C /path/to/destination
3. 查看归档内容(不解压)
tar -tvf archive.tar.gz
4. 从归档中提取某个文件
tar -xvf archive.tar.gz path/to/file.txt
三、典型用途总结
用途
命令示例
打包目录
tar -cvf dir.tar mydir/
打包并 gzip 压缩
tar -czvf dir.tar.gz mydir/
解压 .tar.gz
tar -xzvf dir.tar.gz
查看 .tar.gz 内容
tar -tzvf dir.tar.gz
解压到指定目录
tar -xvf file.tar.gz -C /target/dir/
添加文件到已有归档
tar -rvf archive.tar newfile.txt
删除归档中的某个文件
tar --delete -f archive.tar file.txt
解压多个 .tar.gz 脚本
for i in *.tar.gz; do tar -xzvf $i; done
四、注意事项
.tar 本质是打包工具,不压缩(加 -z/-j/-J 才压缩)
.tar.gz 是 .tar + gzip 压缩,最常用
.tgz 与 .tar.gz 是一样的,只是文件名简化
文件名要写在 -f 之后,如 -czvf archive.tar.
六、Linux计算器
bc 是 Linux 下一个功能强大的 命令行计算器(Basic Calculator),支持 任意精度运算、浮点运算、变量定义、数学函数(如 s(sin)、l(ln) 等),还可以配合脚本做更复杂的计算。
一、基本用法
启动交互式 bc:
bc
进入后可直接输入表达式,比如:
3 + 5 7 * 8
退出用:
quit
二、使用示例
1. 直接执行表达式
echo "3+5" | bc
2. 支持浮点运算(默认不开启小数)
echo "scale=2; 5/3" | bc # 输出:1.66
scale=2 表示保留 2 位小数
3. 定义变量
echo "a=3; b=5; a*b" | bc
4. 使用数学函数(需加 -l 参数加载数学库)
echo "s(1.57)" | bc -l # 近似 sin(π/2) echo "l(2.71828)" | bc -l # 自然对数 ln(e) echo "e(1)" | bc -l # e 的 1 次方 echo "sqrt(2)" | bc -l # 平方根
三、注意事项
-
bc 默认不显示小数,要用 scale 设置精度;
-
支持整数和浮点数运算;
-
可定义变量、支持流程控制(if、while 等);
-
bc -l 加载数学库,能用如 sqrt()、s()、l() 等数学函数
七、Linux操作常用热键
1、命令行编辑热键(适用于 Bash)
快捷键 | 功能说明 |
---|---|
Ctrl + A | 光标移动到行首 |
Ctrl + E | 光标移动到行尾 |
Ctrl + U | 删除光标到行首的内容 |
Ctrl + K | 删除光标到行尾的内容 |
Ctrl + W | 删除光标前的一个“单词”(以空格为界) |
Ctrl + Y | 粘贴上次被 Ctrl+U/K/W 删除的文本 |
Ctrl + L | 清屏(类似于 clear 命令) |
Ctrl + C | 中断当前命令 |
Ctrl + D | 退出终端(当没有输入内容时)/ 发送 EOF |
Ctrl + H | 相当于退格键(Backspace) |
Ctrl + _ | 撤销上一步操作(Undo,部分终端支持) |
2、命令历史与搜索
快捷键 | 功能说明 |
---|---|
↑ / ↓ | 浏览历史命令 |
Ctrl + R | 搜索历史命令(反向增量搜索) |
Ctrl + G | 退出历史搜索模式 |
!! | 执行上一条命令(等价于 `history -1 |
!n | 执行历史记录中编号为 n 的命令 |
!string | 执行最近一条以 string 开头的命 |
3、命令行跳词(光标快速移动)
快捷键 | 功能说明 |
---|---|
Alt + F | 向右移动一个“单词” |
Alt + B | 向左移动一个“单词” |
Alt + D | 删除光标后的一个“单词” |
Ctrl + T | 交换光标前两个字符 |
4、进程控制与终端操作
快捷键 | 功能说明 |
---|---|
Ctrl + Z | 暂停当前任务(挂起),可用 fg 或 bg 恢复 |
Ctrl + C | 强制终止当前运行的命令 |
Ctrl + D | 结束终端会话或向程序发送 EOF |
Ctrl + S | 暂停屏幕输出(冻结终端) |
Ctrl + Q | 恢复屏幕输出(解冻终端) |
5、屏幕管理(tmux/screen 可增强)
快捷键(需安装 tmux 或 screen) | 功能说明 |
---|---|
Ctrl + B,然后按 " | 分割窗口为上下两个 pane |
Ctrl + B,然后按 % | 分割窗口为左右两个 pane |
Ctrl + B,然后按 o | 在 pane 之间切换 |
Ctrl + B,然后按 d | 暂时离开 tmux 会话 |
八、关机操作
在 Linux 系统中,关机(Shutdown)操作可以通过多种命令实现,常用于关闭系统、重启系统或让系统进入特定的电源状态。下面是常用的关机相关命令及其详细用法:
一、关机命令
1. 立即关机:
sudo shutdown now
2. 定时关机(例如 10 分钟后):
sudo shutdown +10
3. 关机并发送广播消息:
sudo shutdown +5 "系统将在5分钟后关机,请保存工作。"
4. 指定时间关机(如晚上11:00):
sudo shutdown 23:00
5. 取消计划中的关机:
sudo shutdown -r now
sudo shutdown -c
二、重启命令
1. 使用 reboot:
sudo reboot
2. 使用 shutdown 实现重启:
sudo shutdown -r now
大多数关机、重启操作都需要使用 sudo 提权,因为普通用户无权限控制电源管理