Linux 基础命令 16~40
16.source: 加载配置到当前环境
source~/.bashrc #使用 source 加载配置
source /etc/profile
17.file:查看文件的类型
file 文件路径
----------------
#二进制程序(命令)
file /bin/bash
/bin/bash: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=b3078871b93598006980c166e4cd885b60a4f6af, stripped
--------------------------
#shell脚本
file init.sh
init.sh: POSIX shell script, UTF-8 Unicode text executable
--------------------------
#纯英文文件
file anaconda-ks.cfg
anaconda-ks.cfg: ASCII text
---------------------------
#包含中文或其他非英文字符的文本
file a.txt
a.txt:UTF-8 Unidcode text
---------------------------
#软连接文件(快捷方式文件)
file /dev/cdromn
/dev/cdrom: symbolic link to `sr0'
--------------------------
#块文件:一般对应存储设备(硬盘,u盘,光盘)
file /dev/sr0
/dev/sr0: block special
---------------------------
#字符文件:输入输出设备(键盘,鼠标)
file /dev/tty
/dev/tty: character special
---------------------------
#目录文件
file /
/: directory
---------------------------
#网络套接字,用于进程间网络通信
file /dev/log
/dev/log: socket
---------------------------
#pipe:管道服务文件,多个进程通过管道进行数据传输
file /run/systemd/initctl/fifo
/run/systemd/initctl/fifo: fifo (named pipe)
----------------------------
- text (file) 脚本.程序源代码.配置文件.日志文件
- ASCII
- UTF-8 (Unicode)
llink 链接文件,快速访问某些文件bblock 光盘.U盘.硬盘ccharacter 字符类型,输入输出设备ddirectory 目录类型的文件-executable 可执行文件(二进制文件)/usr/bin/ppipe 管道类型的文件用于程序与程序间数据传输\ssocket 网络套接字,用于程序间的网络通信
18.reboot: 重启关机
reboot #重启系统
19.关机
命令对比与选择建议
| 命令 | 适合场景 | 特点 |
|---|---|---|
| shutdown | 优雅关机/重启(推荐日常使用) | -支持定时操作-通知用户-等待进程退出-跨系统兼容 |
| reboot | 紧急重启 | -立即重启-不通知用户-简单直接 |
| poweroff | 关机 | -等同于 shutdown -h now -尝试切断物理电源 |
| init 0/6 | 传统SysVinit | -兼容性强-基于运行级别概念 -部分新系统仍兼容但不推荐优先使用 |
| systemctl | 现代Linux | -统一管理系统状态和服务-推荐在 systemd系统中使用 |
19.shut down:优雅地关闭或重启系统(推荐方式)
常用选项
- -h: 关机(halt)
- -r: 重启(reboot)
- -c 取消已计划的关机(cancel)
时间参数
- now:立即执行
- +5:5分钟后执行(+分钟数)
- 23:30:指定时间执行(如今晚11:30)
示例:
shutdown -h now #立即关机
shutdown -h 10:10 #定时关机
shutdown -r +10 "系统将在10分钟后重启,请保持工作!“" # 10分钟后重启并通知用户
shutdown -c #取消上述计划
20.init切换系统运行级别
init[运行级别]
常见运行级别:
| 级别 | 作用 |
|---|---|
| init 0 | 关机 |
| init 1 | 单用户单机模式,只能root登入, 不联网,恢复系统 |
| init 2 | 多用户模式, 不能使用NFS(网络文件系统) |
| init 3 | 多用户网络模式,命令行模式 (没有图形化时默认模式) |
| init4 | 多用户网络模式,命令行模式(没有图形化时默认模式) |
| init5 | 图形化模式,安装图形化界面GuI,才能使用 |
| init6 | 重启 |
示例
init 0 #关机
init 6 #重启
init 1 #进入单用户模式
21.poweroff关机
poweroff # 推荐方式(跨系统兼容)
22.halt关机
halt # 传统方式
等价命令:
sudo shutdown -h now # 等同于 poweroff
sudo systemctl poweroff # 基于 systemd 的系统
区别:
poweroff:尝试切断物理电源(如关闭服务器)。halt:停止系统运行,但可能保持电源开启(适用于虚拟机)。
23.systemctl: 管理系统与服务
功能:基于 systemd 管理系统服务和状态(取代传统的 init 和部分 service 命令)。 语法:
systemctl [操作] [目标]
常见操作:
reboot:重启系统。poweroff:关机。halt:停止系统。suspend:挂起(睡眠)。hibernate:休眠(保存会话到磁盘)。- systemclt start 服务名.service 启动服务
- systemclt stop 服务名.service 关闭服务
- systemclt restart 服务名.service 重启服务
- systemclt status 服务名.service 查看服务状态
- systemclt enable 服务名.service 开机自启动服务
- systemclt disable 服务名.service 开机不启动
- systemclt reload 服务名.service 重载服务(重新加载服务配置文件)
- systemctl list-unit-files --type=service 查看各个级别的启动与禁用情况 示例:
systemctl reboot # 重启
systemctl poweroff # 关机
systemctl suspend # 挂起
24.touch:创建空文件
用法:touch:文件名
- touch创建空文件,也可以创建新的时间戳
touch 1.txt #创建新的文件
touch test.sh #对已存在的文件使用,可以更新时间
25.vi/vim:编辑器
-
vi:非常经典的Unix编辑器
-
vim:vi的扩展版本,增加了例如:代码高亮显示,插件功能。最小化安装不包含,需要安装yum install vim或ept in stall vim
-
VI的三种模式
命令模式(默认)
编辑模式(i/a/o/I/A/O)
末行模式(命令模式中敲":")
命令模式
- 跳转:gg首行,10gg跳转到第10行,GG末行
- 复制:yy复制一行,3yy复制三行
- 粘贴:p粘贴一次,2p粘贴2次
- 删除:dd删除一行,5dd删除5行
- 剪切:先dd删除,再粘贴
- 撤销:按U撤销 一次操作
- 重置:Ctrl+r可以还原撤销
- 删除一个字符: x/X
编辑模式:
- i :(insert)在光标前插入编辑
- a: (append)在光标后插入编辑
- o: 在光标下方新创建一行编辑
- I :将光标移动到首行编辑
- A: 将光标移动到行末编辑
- O: 在光标上方创建一行编辑
末行模式
- 显示行号:set nu
- 取消行号:set nonu
- 保存:w
- 末修改退出:q
- 强制退出:q!
- 保存退出:wq或:x
- 强制保存退出:wq!
- 单行替换:s/old/new/
- 全局替换:%s/old/new/g
- 查找:/关键字 n向下查找,N向上查找
#打开vim 教程的副本,每次打开都会生成新副本
vimtutor
1.Linux 中一切皆文件
2.一个命令只能完成一项操作,复杂任务由简单命令组合实现;
3.尽量避免不必要的交互,不要让用户做过多的选择;
26.mkdir:创建目录(文件夹)
mkdir 目录名
mkdir -p a/b/c
# 案例:
mkdir code
rmdir code # 删除空目录
27.rm: 删除文件
rm 文件
#rm删除目录
rm -r 目录
-r 递归删除,
-r 递归删除,删除该目录和该目录中的所有文件
-f 强制删除, -i功能失效,不提示直接删除
-i 提示删除,删除文件前,让用户确认yes or no.
28.cp:复制文件
cp 原文件 副本文件
cp -r 原目录 副本目录
29.mv:剪切文件,文件改名
#改名:同一个目录中移动,可以改名
mv 原文件 新文件
# 不同目录,移动文件到目录中
mv 原文件 目录/
# 移动+改名
mv 原文件 目录/新文件
第三部分:文本查看与处理
30.cat:输出文本内容到屏幕上
- 适合查看小文件,100行以内的文件
cat 文件名 #查看文件内容
-------------------
#文本重定向
cat << EOF >> text.txt
123
你好世界
EOF
#可以将内容写入test.txt文件内
--------------------
cat << EOF > text.txt
123
EOF
#可以将内容写入test.txt文件内将文件原有的内容代替
--------------------
>test.txt
#可以将test.txt文件里的内容全部清空
--------------------
# 显示文件内容(-n : 加上行号)
cat -n combined.txt
--------------------
31.tac:按倒序输出文本内容到屏幕上
tac test.txt #是反过来显示内容,最后一行先显示
32.more:翻页查看(只能向下翻)
more filename
#回车键:一行行的翻
#空格键:一屏屏的翻
#q:退出
33.less:翻页查看(上下翻页)
less filename
#上下方向键
#回车键:一行行的翻
#空格键:一屏屏的翻
#q:退出
#输入 /关键词 搜索
34.head:查看文件头部
head filename # 查看文件前10行
head -n 5 filename # 查看文件头部前5行
35.tail:查看文件尾部
tail filename # 查看文件后10行
tail -n 8 file.txt # 看最后 8 行
--------------------
#实时监控文件变化
tail -f file.txt # 动态显示新增内容
Linux文件处理四剑客
36.find:文件查找
用法:find [搜索路径] [条件] [操作]
- 灵活强大的文件查找工具,支持按文件名、类型、大小、修改时间等条件精准搜索,还能直接对结果执行操作。
- 可以多条件进行筛选查找。
常用操作:
# 1. 按名称查找:查找当前目录下名为 file.txt 的文件
find . -name "file.txt"
# 2. 忽略大小写:查找文件名中包含 test 的文件
find /path/to/dir -iname "*test*"
# 3. 按类型查找:查找当前目录下所有目录
find . -type d
# 4. 按大小查找:找出大于 10MB 的文件
find . -size +10M
# 5. 按时间查找:查找最近 7 天修改过的文件
find . -mtime -7
# 6. 结合操作:查找 .log 文件并删除
find . -name "*.log" -exec rm {} \;
# 7. 结合操作:查找 .log 文件进行查找并拷贝到/root/logs
find . -name "*.log" -exec cp {} /root/logs \;
小总结:
- 按文件名: 用
-name或-iname匹配文件名(-iname忽略大小写),可以使用通配符*。 - 按类型: 用
-type筛选类型(d目录,f文件,b块文件,l链接文件,c字符文件,s套接字)。 - 按大小: 用
-size精确筛选文件大小(b,c,w,k,M,G)[+ 是大于的文件,- 是小于的文件]。- b —— 块(512字节)
- c —— 字节
- w —— 字(2字节)
- k —— 千字节
- M —— 兆字节
- G —— 吉字节
- 按时间: 用
-mtime通过修改时间来查找,+1一天以上的文件,-1一天以内的文件,1大约一天。 - 结合操作: 用
-exec对查找到的结果执行操作,例如cp/mv/rm等操作。
find 是命令行下的文件管理利器,搜索与操作一气呵成!
37.grep:字符过滤查找
用法:grep [选项] "关键词" 文件/目录
- 格式:grep 选项 条件 文件路径
- 或者使用管道符过滤前一个命令的执行结果
- 常用选项:
-n:显示行号
-v:反向选择
-r:递归查找, 在目录中所有文件内查找
/:将前一个命令的执行结果交给后一个命令继续执行
- 文本搜索神器,支持关键词匹配、忽略大小写、行号显示等功能,适合日志分析、快速定位问题。
常用操作:
# 1. 查找文件中包含 "error" 的行
grep "error" logfile.txt
# 2. 忽略大小写匹配 -i 忽略大小写
grep -i "error" logfile.txt
# 3. 显示匹配行的行号 -n 显示行号
grep -n "error" logfile.txt
# 4. 递归搜索目录下所有文件
grep -R(r) "error" /path/to/directory
# 5. 反向匹配:只显示不包含 "error" 的行
grep -v "error" logfile.txt
# 6. 搜索多个关键词(用 \| 分隔)
grep -E "error|fail" logfile.txt
# 7. 统计匹配的行数
grep -c "error" logfile.txt
# 8. 只显示匹配的文件名
grep -l "error" *.txt
# 9.递归搜索 + 忽略二进制文件 (常用)
grep -nRI "keyword" /path/to/directory
小总结:
- 匹配方式: 默认区分大小写,
-i忽略大小写,-E支持多关键词匹配。 - 显示信息: 用
-n显示行号,用-c统计匹配行数,用-l仅列出文件名。 - 过滤内容: 用
-v显示不匹配关键词的内容。 - 递归搜索: 用
-r搜索目录及子目录中的所有文件。
grep 是命令行中的搜索神器,轻松应对日志分析和快速文本定位!
正则表达式:
通过一些具有特殊功能的符号,实现对文本的查找,替换,删除等功能
| 符号 | 含义 |
|---|---|
| 普通字母,数字,汉字 | 匹配自己 |
| . | 任意一个字符 |
| [0-z] | 匹配任意小写字母 |
| [0-q] | 匹配任意一个数字 |
| [a-zA-z0-q] | 匹配变量名 |
| [^0-9] | 匹配非数字 |
| a | b | 匹配a或b |
| ^a | 匹配以什么开头的内容 |
| $ | 匹配以什么结尾的内容 |
| ^$ | 匹配空白行 |
量词符号
| 符号 | 含义 |
|---|---|
| * | 匹配任意次0~∞ |
| ? | 匹配0或1次,非贪婪模式(尽可能少的匹配) |
| + | 匹配~∞ |
| 匹配n次 | |
| 匹配n~m次 |
38.sed:文件流编辑器
作用:不用打开文件,直接通过sed命令就可以修改文件;
查找,替换,添加,删除,支持正则表达式
流编辑,按行处理数据
- 命令格式:sed [选项] ‘指令’ 文件
- -t:对文件本身进行操作,不加则不会修改文件。
- -i.bak:修改前对原文件进行备份。
- -n:输出时只显示sed执行后行的内容。
用法: sed[选项] '命令‘ 文件
- 强大的流式编辑器,支持查找,替换,删除,插入等操作,适合于文本处理和自动化。
# 选项
# 1. 查找并替换:将文件中所有的 "old" 替换为 "new"(不会对文件本身进行修改)
sed 's/old/new/g' file.txt
# 2. 只显示替换后的结果,不修改原文件
sed 's/old/new/g' file.txt
# 3. 直接修改文件本身(加 -i)
sed -i 's/old/new/g' file.txt
# 修改前对原文件进行备份
sed -i.bak 's/old/new/g' file.txt
# 4. 删除包含 "unwanted" 的行
sed '/unwanted/d' file.txt
# 5. 输出时只显示sed执行的结果,显示文件的特定行(如第 5 行)
sed -n '5p' file.txt
sed -n '/12/p' 1.txt #查找包含12的行
# 6. 批量插入内容:在文件每一行后添加 "END"
sed 's/$/ END/' file.txt
#sed 指令
# s 替换指令 g表示全局替换
# p 打印结果
# a 向下方添加
# i 向上方添加
# d 删除查找到的内容
## 替换文本内容
sed 's/old/new/g' 1.txt #输出的结果被替换,不改变原文件
sed -i 's/old/new/g' 1.txt #修改原文件
sed -i.bak 's/old/new/g' 1.txt # 修改并备份原文件
#查找内容
sed -n '/ad/p' 1.txt # 查找有ab 的行
#输出某行,或某几行
sed -n'5p' 1.txt #打印第5行
#添加
sed '1 a hello' 1.txt # 在第一行下面添加hello
sed '1 i hello' 1.txt # 在第一行上面添加hello
#删除
sed '/@/d' 1.txt # 删除有@的行
sed '1,2d' 1.txt # 删除1,2行
小总结:
- 查找替换: 用
s/old/new/g替换文本内容。 - 直接修改: 加
-i参数直接修改文件内容。 - 删除行: 用
/pattern/d删除匹配的行。 - 插入内容: 用
s/$/ 内容/在每行末尾添加内容。
sed 是命令行下的文本处理神器,快速、强大、灵活!
39.awk:一个伪装成命令的脚本(三剑客老大)
擅长对列操作,适合处理结果化的文件。
命令格式:awk[选项] '指令' 文件
- 适合处理结果化文本,如日志,CSV文件,支持模式匹配,字段操作,条件过滤等。
常用操作:
- -F:指定分隔符, /etc/passwd中的分隔符是’:‘,csv文件分隔符是"
,默认是空格或”/t"
#$0 一整行内容(所有内容)
#$1
#$2
#.......
#$NF 最后一列
#$NR 显示行号
# print 打印输出
awk -F ":"'{print $1}'1.txt #以:来分隔的第一列内容
# 进行条件查询
cat txt
id,name,age,sex,
1.张三,18,男
2,李四,20,女
3,王五,19,女
#使用if()实现条件判断,输出满足条件的内容
awk -F"," '{if($4=="女") NR print $2}' 1.txt
awk -F"," '{if($1==2) print $0}' 1.txt
awk -F"," '{if($3>18 && NR>1) print $0}' 1.txt
# 1. 打印每行的第 1 列和第 3 列
awk '{print $1, $3}' file.txt
# 2. 打印包含关键字 "error" 的行
awk '/error/ {print}' file.txt
# 3. 条件过滤:打印第 3 列值大于 100 的行
awk '$3 > 100 {print}' file.txt
# 4. 在输出中添加分隔符(如逗号)
awk '{print $1 "," $2}' file.txt
# 5. 统计行数
awk 'END {print NR}' file.txt
# 6. 处理 CSV 文件:打印第 2 列
awk -F ',' '{print $2}' file.csv
# 7. 计算列总和:统计第 3 列的总和
awk '{sum += $3} END {print sum}' file.txt
小总结:
1、字段操作:$1, $2, $3 表示第 1、2、3 列。
2、条件过滤: 用 /pattern/ 或条件语句(如 $3 > 100)。
3、自定义分隔符: 用 -F 指定分隔符(如 -F ',' 处理 CSV 文件)。
4、内置变量:
NR:行号。NF:字段数。$0:整行内容。
awk 是文本处理的瑞士军刀,数据提取与分析的利器!
40.wc:统计文件信息
“想知道文件有多少行、多少单词?它帮你算清楚!”
用法:wc [参数] 文件名
常用参数:
-l:统计行数
wc -l file.txt
显示文件的总行数。
-w:统计单词数
wc -w file.txt
统计文件中有多少个单词。
wc 的几个参数简单又实用,-l 数行,-w 数单词,轻松掌握文件的基本信息!

浙公网安备 33010602011771号