Linux中如何用指令文件管理
文件命名规则
- 目录也是文件类型之一
- 在同一路径下,不允许两个不同类型文件同名
目录文件管理
本质是对目录下的文件进行增删改查操作
创建目录
命令:mkdir(make directory)
基本格式:
mkdir [-参数] 目录名常用参数:
| 参数 | 作用 |
|---|---|
| -p | 递归创建目录(可创建多级嵌套目录),已存在目录不会被覆盖 |
| -v | 显示创建过程 |
特殊符号应用:
mkdir t1 t2 # 同时创建t1和t2目录 mkdir {1,2,3} # 创建1、2、3目录 mkdir {1..3} # 创建1、2、3目录 mkdir {1..5..2} # 以步长2创建1、3、5目录 mkdir {1,2}{a} # 创建1a、2a目录 mkdir -p t1/t2 # 创建t1目录并在其中创建t2子目录 mkdir -v t1 # 显示创建t1的过程 mkdir /root/t1 # 在/root目录下创建t1目录查看目录
命令:ls
常用通配符:
| 通配符 | 作用 |
|---|---|
| * | 匹配任意多个字符 |
| ? | 匹配单个字符 |
| [] | 匹配括号内单个字符("-"表示范围) |
| [^]或[!] | 取反匹配括号内任意字符 |
示例:
ll -d # 仅查看目录 ll -d A* # 显示所有A开头的文件夹 ll -d A? # 显示除a10外的所有A开头单字符文件夹(如a1-a9) ll -d A[123] # 显示a1、a2、a3目录 ll -d A[1-5] # 显示a1到a5目录 ll -d A[^1-5] # 显示a6到a10目录命令:tree(树形结构显示)
格式:
tree [-参数] [路径]常用参数:
| 参数 | 作用 |
|---|---|
| -a | 显示所有文件(包括隐藏文件) |
| -f | 显示完整路径 |
| -d | 仅显示目录 |
| -L | 设置显示深度 |
示例:
tree -L 2 /root # 显示/root目录下2层结构命令:du(统计目录磁盘使用情况)
常用参数:
| 参数 | 作用 |
|---|---|
| -a | 统计所有文件大小 |
| -s | 仅统计指定路径大小 |
| -h | 以易读格式显示 |
删除目录
命令:rm
格式:
rm [-参数] 文件名常用参数:
| 参数 | 作用 |
|---|---|
| -r | 递归删除目录及内容 |
| -f | 强制删除(不提示) |
示例:
rm 1 # 删除文件1 rm -r 1 # 删除目录1(带确认提示) rm -f 1 # 强制删除文件1(不提示) rm -rf 1 # 强制递归删除目录1及内容普通文件管理
创建文件
命令:touch
用法一:创建新文件
touch a1.c a1.txt a1.py # 创建多个文件 touch a{1..3}.txt # 创建a1.txt到a3.txt touch a{1..3}{a,b} # 创建1a、1b...3a、3b用法二:更新文件时间属性
touch a1 # 更新a1文件的访问/修改时间 stat a1 # 查看文件详细信息时间属性说明:
- atime:最后访问时间
- mtime:内容修改时间
- ctime:元数据修改时间
- btime:创建时间
命令:dd(创建定制大小文件)
格式
示例:
dd if=/dev/zero of=/root/1 count=2 bs=5M # 创建10MB文件 dd if=/dev/sr0 of=RHEL9.iso # 制作光盘映像查看文件内容
命令:cat(适合小文件)
格式:
cat [-参数] 文件名常用参数:
| 参数 | 作用 |
|---|---|
| -n | 显示行号(含空行) |
| -b | 显示行号(不含空行) |
命令:tac(倒序显示内容)
命令:more(适合大文件)
特点:
- 可翻页查看(回车/上下键)
- 退出后内容保留在屏幕
- 不支持搜索
格式:
more [-参数] 文件名示例:
more -S 文件名 # 压缩连续空行命令:less(改进版more)
特点:
- 退出后内容不保留
- 支持搜索
- 查看到底部不会自动退出
命令:head(查看文件开头)
示例:
head 文件名 # 默认显示前10行 head -2 a # 显示a文件前2行命令:tail(查看文件结尾)
示例:
tail a # 显示a文件最后10行 tail -2 a # 显示最后2行 tail -f a # 动态监控文件变化 tail -f /var/log/messages # 实时监控日志高级文件处理
管道操作
符号:|功能:将左侧命令输出作为右侧命令输入
示例:
tail -10 /etc/passwd | head -1 # 显示passwd倒数第10行内容过滤
命令:grep
格式:
grep [-参数] 匹配模式 文件名常用参数:
| 参数 | 作用 |
|---|---|
| -c | 统计匹配行数 |
| -i | 忽略大小写 |
| -n | 显示行号 |
| -v | 反向匹配 |
| -r | 递归搜索 |
| -w | 整词匹配 |
| -A/-B | 显示匹配行及下/上n行 |
| -C | 显示匹配行及上下n行 |
正则表达式示例:
grep -ic a a # 统计a/A出现行数(不区分大小写) grep -cv a a # 统计不含a的行数 grep -C2 a a # 显示匹配行及上下各2行 grep ^a /etc/passwd # 查找以a开头的行 grep h$ /etc/passwd # 查找以h结尾的行 grep -n "^root" /etc/passwd # 显示以root开头的行及行号 grep ^[root] /etc/passwd # 查找以r/o/t开头的行 grep ^[^root] /etc/passwd # 查找不以r/o/t开头的行 grep -n "^$" a1 # 查找空行并显示行号 grep -n [0-9]$ /etc/passwd # 查找以数字结尾的行 grep -n [a-z]$ /etc/passwd # 查找以字母结尾的行列操作
命令:cut
格式:
cut -d "分隔符" -f 列号 文件名示例:
cut -d ":" -f1 /etc/passwd # 提取passwd第一列文本替换
命令:tr
格式:
tr [-参数] 原内容 新内容常用参数:
| 参数 | 作用 |
|---|---|
| -c | 取反操作 |
| -d | 删除字符 |
| -s | 压缩重复字符 |
示例:
cat /etc/passwd | tr a-z A-Z # 小写转大写 cat /etc/passwd | tr -d a-z # 删除所有字母 tr -s " " # 压缩连续空格为单个排序与去重
命令:sort
格式:
sort [-参数] 文件名常用参数:
| 参数 | 作用 |
|---|---|
| -f | 忽略大小写 |
| -n | 数值排序 |
| -r | 逆序排列 |
| -u | 去除重复行 |
| -t | 指定分隔符 |
| -k | 按指定列排序 |
示例:
sort -t ":" -k 3 -n /etc/passwd # 按第三列数值排序命令:uniq(去除连续重复行)
示例:实例
uniq -c A # 统计每行连续出现次数实例运用一
列出所有账号的账号名(/etc/passwd)
将 /etc/passwd 中内容按照冒号隔开的第三个字符从大到小排序后输出所有内容
列出 /etc/passwd 中的的 15 - 20 行内容
切割出你的 IP 地址和 mac 地………
切割出 /etc/passwd 最后一个字段并进行重复内容的重复次数统计
编辑普通文件
数据流与重定向
- 标准输入 (0):键盘输入
- 标准输出 (1):默认将指令执行结果输出到屏幕
- 标准错误输出 (2):指令执行失败时输出到屏幕
重定向符号
- 输出重定向:
>>> - 输入重定向:
<<<
使用方法
| 命令格式 | 功能说明 | 示例 |
|---|---|---|
指令 > A或指令 1>A | 覆盖方式写入文件A(不存在则创建) | date 1> A.txt |
指令 >> A | 追加方式写入文件A | date 1>> A.txt |
指令 2>A | 将错误信息写入文件A | ls /home/ /aaa 2>A.txt |
指令 2>/dev/null | 丢弃错误信息 | ls /home/ /aaa 2>/dev/null |
指令 &>A | 将正确和错误信息写入文件A | ls /home/ /aaa &>A.txt |
指令 <A | 将A内容作为指令输入 | cat < A.txt |
指令 <<结束标识符 | 读取输入直到指定结束标识 | cat >A.txt << end |
echo 命令
输出字符串或变量值到屏幕
语法格式
echo "字符串" echo "$变量"示例
echo "hello world" aa="hello aa"; echo $aa num=1000; echo $num echo $SHELL echo hello > a1.txt echo world >> a1.txt文件合并示例
touch t1.txt t2.txt t3.txt echo hello > t1.txt echo world > t2.txt cat t1.txt t2.txt > t3.txttee 命令
将输出保存到文件同时显示在屏幕上
语法格式
tee [-参数] 文件名 tee -a # 追加模式示例
cat /etc/passwd | tee mypasswd_2 # 显示并保存vi/vim 编辑器
三种模式
- 命令模式:阅读模式,可移动光标、删除、复制、粘贴
- 输入模式:编辑模式
- 末行模式:保存、退出、查找
模式切换
- 命令→输入:
i - 输入→命令:
ESC - 命令→末行:
:或/ - 末行→命令:
ESC
命令模式快捷键
| 按键 | 功能 |
|---|---|
| ↑↓←→ | 移动光标 |
| w/b | 向后/前移动单词 |
| ^/$ | 行首/行尾 |
| gg/G | 首行/尾行 |
| ngg/nG | 跳转到第n行 |
| dd | 删除当前行 |
| ndd | 删除n行 |
| d^/d$ | 删除到行首/行尾 |
| yy | 复制当前行 |
| nyy | 复制n行 |
| p/P | 粘贴到下一行/上一行 |
| u | 撤销 |
末行模式命令
| 命令 | 功能 |
|---|---|
| /word | 查找word |
| :s/old/new | 替换当前行第一个old |
| :s/old/new/g | 替换当前行所有old |
| :n1,n2s/old/new/g | 替换n1-n2行所有old |
| :%s/old/new/g | 替换全文old |
| :w | 保存 |
| :q | 退出 |
| :wq | 保存退出 |
| :r /home/file | 读取文件内容 |
| :set nu | 显示行号 |
| :n1,n2d | 删除n1-n2行 |
vim 配置文件
/etc/vimrc和~/.vimrc可配置:
set hlsearch # 高亮搜索结果 set backspace=2 # 完整退格功能 set autoindent # 自动缩进 set tabstop=4 # Tab显示为4空格 set mouse=a # 启用鼠标 set nu # 显示行号 syntax on # 语法高亮链接文件管理
硬链接
- 与源文件共享inode
- 不能跨文件系统
- 不能链接目录
ln 源文件 链接文件 # 创建硬链接软链接
- 类似Windows快捷方式
- 可跨文件系统
- 可链接目录
ln -s 源文件 链接文件 # 创建软链接区别对比
| 特性 | 硬链接 | 软链接 |
|---|---|---|
| inode | 相同 | 不同 |
| 源文件删除 | 不受影响 | 失效 |
| 目录链接 | 不支持 | 支持 |
| 跨文件系统 | 不支持 | 支持 |
| 大小 | 与源文件相同 | 路径名长度 |
查看文件属性
stat 命令
显示文件属性信息,包括大小、inode、软硬链接等
stat a1 # 查看文件属性 # 输出示例: File: a1 Size: 4013 Blocks: 8 IO Block: 4096 regular file Device: fd00h/64768d Inode: 19873143 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2025-12-27 21:06:54.598846295 +0800 Modify: 2025-12-27 21:05:59.590568080 +0800 Change: 2025-12-27 21:05:59.590568080 +0800 Birth: 2025-12-27 18:33:09.713916575 +0800时间属性说明:
- atime:最后访问/读取时间
- mtime:内容修改时间
- ctime:元数据修改时间
- btime:文件创建时间
刷新 atime
stat a1 cat a1 # cat 访问不会刷新 atime # 因默认 relatime 挂载选项,减少磁盘 I/O 开销 # relatime 刷新规则: # 1. 距上次 atime 超过 24 小时 # 2. mtime 或 ctime 比 atime 新 mount -o remount,strictatime / # 临时开启严格 atime mount -o remount,relatime / # 恢复默认设置刷新 mtime
echo 1 >> a1 # 追加内容刷新 mtime # 注意:vim 编辑会更新所有时间属性刷新 ctime
通过可视化界面重命名文件
wc 命令
统计行数、字数、字节数
格式:
wc -参数 文件名常用参数:
-l:只显示行数-w:只显示单词数-c:只显示字符数
示例:
wc /etc/passwd # 输出:37 90 2097 /etc/passwd # 分别表示:行数 单词数 字节数 # 统计可登录用户数 grep /bin/bash /etc/passwd | wc -l文件操作
cp 命令
复制文件
格式:
cp -参数 源文件 目标文件常用参数:
-a:保留所有属性(递归处理目录,保留链接)-d:保留链接-f:强制覆盖-i:提示确认覆盖-r:递归复制目录
示例:
# 复制文件 touch t1.txt cp t1.txt / # 复制到根目录 cp t1.txt /t2.txt # 复制并重命名 # 复制目录 mkdir p1 cp -r p1/ / # 复制目录到根目录 cp -r p1/ /p2 # 复制并重命名mv 命令
移动/重命名文件
格式:
mv 源文件 目标文件示例:
mv A1 A2 # 移动并可能重命名 mv A1 A2 # 同目录下操作即为重命名文件查找
whereis 命令
查找可执行文件路径及说明文档
whereis catwhich 命令
查找可执行文件路径
which catfind 命令
高级文件搜索
基本格式:
find 路径 -选项 条件 [操作]按文件名搜索
find / -name passwd # 精确匹配 find / -iname passwd # 忽略大小写 find / -inum 128 # 按 inode 号 find / -name "?a*" | wc -l按大小搜索
find / -size -1k # 小于 1KB find / -size -empty # 空文件按时间搜索
find / -atime -10 # 10天内访问过的 find / -newer A.txt # 比 A.txt 更新的文件按权限搜索
find / -perm 644 # 精确匹配 find / -perm -644 # 包含匹配 find / -perm /644 # 任意匹配按所属者搜索
find / -user aya find / -uid 128 find / -nouser # 查找无主文件按类型搜索
find /dev -type b # 块设备文件 find ~ -type d # 目录 find /root -type f -size +1k # 普通文件且大于1KB逻辑运算
find / -size +10M -a -size -15M # AND find / -name "aa*" -o -name "bb*" # OR find / -name "b??" -not -user root # NOTexec 操作
# 复制找到的文件 find / -name "a??" -exec cp -a {} /root/test/ \; # 保存结果到文件 find / -name "a??" > /root/test/a.txt文件压缩与归档
压缩和解压
zip 命令
格式zip [参数] 压缩后文件名 被压缩文件
| 参数 | 作用 |
|---|---|
| -A | 压缩率(1最低,9最高,默认6) |
| -r | 压缩目录 |
| -m | 移动文件到压缩包(不保留源文件) |
| -d | 删除压缩包中的文件 |
| -x | 压缩时排除指定文件 |
示例
# 压缩文件 zip A.zip A.txt zip A.zip 1.txt 2.txt # 压缩目录(压缩等级1) mkdir a zip -r1 A.zip a/ du -hs A.zip # 查看压缩文件大小 # 管理压缩包内容 zip -m a.zip a3 # 添加文件并删除源文件 zip -d a.zip a1 # 删除压缩包中的文件 zip a.zip a? -x a3 # 压缩文件时排除a3unzip 命令
格式unzip [参数] 压缩包名
| 参数 | 作用 |
|---|---|
| -d | 解压到指定目录 |
| -v | 查看压缩包内容(不解压) |
示例
unzip -v a.zip # 查看压缩包内容 unzip a.zip -d a # 解压到指定目录 # 使用绝对路径 touch b1 zip b.zip /root/b1 mkdir c unzip b.zip -d c/ tree /root/c/xz/unxz 命令
特点
- 默认不保留源文件
- 不支持直接压缩目录
- 压缩效率:xz > bzip2 > gzip
格式xz [参数] 被压缩文件
| 参数 | 作用 |
|---|---|
| -c | 标准输出(可重定向保留源文件) |
| -k | 保留源文件 |
| -v | 显示详细过程 |
| -d | 解压缩(等同于unxz) |
| -r | 递归压缩目录下的文件 |
压缩文件查看命令
zcat:查看.gz文件内容bzcat:查看.bz2文件内容xzcat:查看.xz文件内容
注意:这些命令返回的是源文件内容,而zip压缩包查看显示的是文件名列表。
归档命令
tar 命令
基本格式tar [参数] 打包后文件名 被打包文件
主要参数
| 参数 | 作用 |
|---|---|
| -c | 创建.tar包文件 |
| -x | 释放.tar包文件 |
| -t | 查看.tar包文件列表 |
| -f | 指定文件名(必选) |
辅助参数
| 参数 | 作用 |
|---|---|
| -v | 显示详细过程 |
| -z | 使用gzip压缩(.tar.gz) |
| -j | 使用bzip2压缩(.tar.bz2) |
| -J | 使用xz压缩(.tar.xz) |
操作示例
# 打包 tar cf 文件名.tar 被打包目录/文件 # 打包并压缩 tar czf 文件名.tar.gz 目录/文件 tar cjf 文件名.tar.bz2 目录/文件 tar cJf 文件名.tar.xz 目录/文件 # 释放 tar xf 文件名.tar -C 目标路径 # 释放并解压 tar xf/xzf 文件名.tar.gz -C 目标路径 tar xf/xjf 文件名.tar.bz2 -C 目标路径 tar xf/xJf 文件名.tar.xz -C 目标路径 # 查看包内容 tar tf 文件名.tar tar tzf 文件名.tar.gz tar tjf 文件名.tar.bz2 tar tJf 文件名.tar.xz总结
- zip 原生支持目录压缩
- gzip/bzip2/xz 仅支持单文件压缩,需先使用tar打包
文件传输
scp 命令
Linux主机间文件传输
# 本地传输到远程主机 scp -r /root/test root@192.168.17.200:/root/ # 远程主机传输到本地 scp -r root@192.168.17.200:/root/file1 /root/test实例运用二
- 题目附着结果代码
1.在 root 用户的家目录下创建两个目录分别为 haha 和 hehe,复制 hehe 目录到 haha 目录并重命名为 apple。 #mkdir haha hehe | cp -r hehe haha/apple 2.将 hehe 目录移动到 apple 目录下,在 haha 目录下创建一个普通文件为 heihei.txt。 #mv hehe haha/apple/ | touch /root/haha/heihei.txt 3.在终端中显示当前系统时间,时间格式为月日时; #date "+%m %d %h" 4.将上述显示的时间保存在文件 A.txt 中; #date "+%m %d %h" > A.txt 5.用户配置/etc/passwd文件将 3,4 字段分别截取出来写入文件 UID 和文件 GID; #cut -d : -f3 /etc/passwd > UID | cut -d : -f4 /etc/passwd > GID 6、将/etc/passwd中内容按照冒号隔开的第三个字符从大到小排序后输出所有内容; #sort -t : -k 3 -rn /etc/passwd 7、列出/etc/passwd中的第20行-25行内容; #head -24 /etc/passwd | tail -5 8、切割出你的ip地址和mac地址; # ip a | grep ens160$ | tr -s " " | cut -d " " -f3 #ip a | grep ff$ | tr -s " " | cut -d " " -f3 9、通过:切割出/etc/passwd中的最后一个字段并进行重复内容的重复次数统计; #cut -d : -f7 /etc/passwd | sort | uniq | uniq -c 10、查找/var所有的日志文件(*.log)备份在自定义的日志目录/logfile下。 #find /var -name "*.log" -exec cp -a {} /logfile/ \; 11、将备份好的所有日志文件进行压缩格式为.gz 包名为all_log_backup.tar.gz。 #tar zcf all_log_backup.tar.gz /logfile/ 12、将压缩包中的文件解压到/root/log_backup目录下。 #tar zxf all_log_backup.tar.gz -C /root/log_backup