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)
  • l link 链接文件,快速访问某些文件
  • b block 光盘.U盘.硬盘
  • c character 字符类型,输入输出设备
  • d directory 目录类型的文件
  • - executable 可执行文件(二进制文件)/usr/bin/
  • p pipe 管道类型的文件用于程序与程序间数据传输\
  • s socket 网络套接字,用于程序间的网络通信

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 数单词,轻松掌握文件的基本信息!

posted @ 2025-07-10 16:34  粘糕好吃不粘牙  阅读(21)  评论(0)    收藏  举报