IMX6ULL开发板学习-03(Linux文件相关命令)

1. 文件查看命令

ls - 列出目录内容

列出指定目录下的文件和子目录。

语法ls [选项] [文件或目录]

常用选项 说明
-l 长格式显示,包含权限、链接数、所有者、大小、修改时间
-a 显示所有文件,包括隐藏文件(以.开头)
-h 以人类可读方式显示文件大小(如K、M)
-R 递归显示子目录内容
-t 按修改时间排序(最新的在前)
-S 按文件大小排序

示例

复制代码
ls -l                   # 显示当前目录详细信息
ls -la /home            # 显示/home下所有文件(包括隐藏)的详细信息
ls -lh                  # 显示当前目录文件大小,以KB/MB/GB表示
ls -lt                  # 按修改时间排序显示
ls -R /etc              # 递归显示/etc及其子目录所有文件

cat - 连接文件并输出

用于查看小文件内容、合并文件或创建文件。

语法cat [选项] 文件...

常用选项 说明
-n 显示行号
-b 显示行号,但空白行不编号
-s 压缩连续的空行为一行

示例

复制代码
cat file.txt                # 显示file.txt内容
cat -n file.txt             # 显示带行号的内容
cat file1.txt file2.txt > merged.txt   # 合并两个文件
cat > newfile.txt           # 创建新文件,输入内容,Ctrl+D结束

less / more - 分页查看文件

lessmore 更强大,支持前后翻页、搜索等。

示例

复制代码
less longfile.log          # 分页查看日志,按空格向下翻页,b向上翻页,q退出
more shortfile.txt         # 简单分页查看

less 中,可以按 / 搜索,按 n 跳转到下一个匹配。

head - 显示文件开头部分

默认显示前10行。

语法head [选项] 文件

常用选项 说明
-n 行数 指定显示行数
-c 字节数 指定显示字节数

示例

复制代码
head file.txt               # 显示前10行
head -n 20 file.txt         # 显示前20行
head -c 100 file.txt        # 显示前100个字节

tail - 显示文件结尾部分

默认显示后10行,常用于查看日志更新。

语法tail [选项] 文件

常用选项 说明
-n 行数 指定显示行数
-f 实时跟踪文件新增内容(常用于查看日志)
-F 类似 -f,但文件被轮转时仍可继续跟踪

示例

复制代码
tail file.txt               # 显示最后10行
tail -n 30 file.txt         # 显示最后30行
tail -f /var/log/syslog     # 实时监控系统日志

file - 识别文件类型

根据文件内容判断其类型(文本、二进制、目录等),不依赖扩展名。

语法file [选项] 文件...

示例

复制代码
file /bin/ls                # 输出:/bin/ls: ELF 64-bit LSB executable, x86-64...
file document.pdf           # 输出:PDF document, version 1.4
file unknown.txt            # 可能输出:ASCII text 或 UTF-8 Unicode text

stat - 显示文件状态信息

显示文件的详细信息,包括inode、权限、大小、访问/修改/改变时间等。

语法stat [选项] 文件...

示例

复制代码
stat file.txt
# 输出示例:
#   File: file.txt
#   Size: 1024        Blocks: 8          IO Block: 4096   regular file
# Device: 801h/2049d  Inode: 3670025     Links: 1
# Access: (0644/-rw-r--r--)  Uid: ( 1000/   user)   Gid: ( 1000/   user)
# Access: 2025-03-15 10:30:25.123456789 +0800
# Modify: 2025-03-15 09:20:10.987654321 +0800
# Change: 2025-03-15 09:20:10.987654321 +0800

2. 文件创建与编辑

touch - 创建空文件或更新文件时间戳

如果文件不存在,则创建空文件;如果存在,则更新其访问和修改时间为当前时间。

语法touch [选项] 文件...

常用选项 说明
-t 时间戳 使用指定时间戳(格式 [[CC]YY]MMDDhhmm[.ss]
-r 参考文件 将文件时间戳设为与参考文件相同

示例

复制代码
touch newfile.txt           # 创建空文件(若不存在)
touch -t 202503151030 file.txt   # 设置文件时间为 2025-03-15 10:30
touch -r ref.txt file.txt   # 将file.txt的时间改为与ref.txt相同

mkdir - 创建目录

创建新目录。

语法mkdir [选项] 目录名...

常用选项 说明
-p 递归创建父目录(如果父目录不存在)
-m 模式 设置权限模式(如755)

示例

复制代码
mkdir mydir                 # 创建单个目录
mkdir -p dir1/dir2/dir3     # 递归创建多层目录
mkdir -m 755 newdir         # 创建目录并设置权限为rwxr-xr-x

rmdir - 删除空目录

只能删除空目录,若目录非空则需使用 rm -r

语法rmdir [选项] 目录...

常用选项 说明
-p 递归删除父目录(如果父目录也空)

示例

复制代码
rmdir emptydir              # 删除空目录
rmdir -p a/b/c              # 删除c,若c删除后b为空则继续删除b,以此类推

文本编辑器(如gedit、 nanovi

用于编辑文件内容。简单示例:

复制代码
nano file.txt               # 用nano编辑(界面友好)
vi file.txt                 # 用vi编辑(功能强大,需学习模式)

geditGNOME 桌面环境 的官方文本编辑器,也是许多 Linux 发行版(如 Ubuntu、Fedora 等)默认安装的轻量级图形化文本编辑工具。

bash 复制代码
gedit                    # 打开空白窗口
gedit file.txt           # 打开指定文件
gedit *.log              # 打开当前目录所有 .log 文件

gedit 支持多种命令行参数,方便与终端结合:

选项 说明
--new-window 在新窗口打开文件(而非新标签)
--encoding=编码 指定文件编码打开,如 --encoding=UTF-8
--list-encodings 列出所有可用的编码名称
--display=显示名 指定 X 显示(通常用于远程)
--version 显示版本信息
--help 显示帮助信息

3. 文件操作

cp - 复制文件或目录

语法cp [选项] 源 目标

常用选项 说明
-r-R 递归复制目录
-i 交互式,覆盖前提示
-u 只在源文件比目标新或目标不存在时复制
-p 保留文件属性(权限、时间戳等)
-a 归档模式,相当于 -dR --preserve=all,常用于备份
-v 显示详细过程

示例

复制代码
cp file1.txt file2.txt      # 复制文件
cp -i file.txt /backup/     # 复制到目录,若存在则提示
cp -r docs/ /backup/        # 递归复制目录
cp -a source/ dest/         # 完整复制目录,保留所有属性

mv - 移动或重命名文件/目录

语法mv [选项] 源 目标

常用选项 说明
-i 交互式,覆盖前提示
-u 只在源文件比目标新或目标不存在时移动
-v 显示详细过程
-n 不覆盖已有文件

示例

复制代码
mv oldname.txt newname.txt  # 重命名文件
mv file.txt /tmp/           # 移动文件到/tmp目录
mv -i dir1/* dir2/          # 移动dir1下所有文件到dir2,若有重名则提示
mv -v *.log logs/           # 移动所有.log文件到logs/并显示过程

rm - 删除文件或目录

删除后通常无法恢复,请谨慎使用。

语法rm [选项] 文件...

常用选项 说明
-r-R 递归删除目录及其内容
-f 强制删除,忽略不存在的文件,不提示
-i 交互式,删除前确认
-v 显示详细过程

示例

复制代码
rm file.txt                 # 删除文件
rm -r olddir/               # 删除目录及其所有内容
rm -f *.tmp                 # 强制删除所有.tmp文件,不提示
rm -iv important/           # 递归删除目录,每个文件都询问

4. 文件权限与所有权

chmod - 更改文件权限

可以使用符号模式或数字模式。

语法chmod [选项] 模式 文件...

数字模式:权限用三位八进制数表示,每位对应所有者、组、其他。

  • 读(r)=4,写(w)=2,执行(x)=1。

  • 例如 755 = 所有者(7=4+2+1) rwx,组(5=4+1) r-x,其他(5) r-x。

符号模式[ugoa][+-=][rwx]

  • u=所有者,g=组,o=其他,a=所有。

  • +添加权限,-移除权限,=设置精确权限。

常用选项 说明
-R 递归更改目录及内部文件权限
-v 显示详细过程

示例

复制代码
chmod 755 script.sh         # 所有者rwx,组r-x,其他r-x
chmod +x file.sh            # 给所有用户添加执行权限
chmod u-w file.txt          # 移除所有者的写权限
chmod go=rx file            # 设置组和其他为r-x
chmod -R 644 docs/          # 递归设置docs下所有文件为644

chown - 更改文件所有者和组

需要超级用户权限。

语法chown [选项] 用户[:组] 文件...

常用选项 说明
-R 递归更改
-v 显示详细过程
--reference=参考文件 将文件所有者/组设为与参考文件相同

示例

复制代码
chown alice file.txt        # 将文件所有者改为alice(组不变)
chown alice:staff file.txt  # 所有者和组同时改为alice:staff
chown :staff file.txt       # 仅更改组为staff
chown -R alice:staff docs/  # 递归更改docs下所有文件

chgrp - 更改文件组所有权

chown 可以完成同样功能,但 chgrp 专门用于改组。

语法chgrp [选项] 组 文件...

示例

复制代码
chgrp staff file.txt        # 将文件的组改为staff
chgrp -R staff docs/        # 递归更改组

umask - 设置默认权限掩码

umask 决定新建文件和目录的默认权限。它是权限的补码。

语法umask [掩码]

  • 文件默认最大权限666,目录777。

  • 实际权限 = 最大权限 & (~umask)。

  • 例如 umask 022 则文件权限 666 & ~022 = 644,目录权限 777 & ~022 = 755。

示例

复制代码
umask                       # 显示当前掩码(如0022)
umask 027                   # 设置掩码为027,新文件权限640,新目录750

5. 文件查找

find - 在目录树中查找文件

功能强大,可根据文件名、类型、大小、时间、权限等条件查找。

语法find [路径...] [表达式]

常用测试条件:

选项 说明
-name 模式 按文件名(可使用通配符)
-iname 模式 忽略大小写的文件名
-type f/d/l 文件类型(f普通文件,d目录,l链接)
-size +10M 大小大于10MB(可用c字节,k,M,G)
-mtime +7 修改时间在7天前(+表示超过,-表示以内)
-user 用户名 属于某用户
-perm 644 权限精确匹配
-exec 命令 {} \; 对找到的文件执行命令,{} 代表文件名,以 \; 结束

示例

复制代码
find /home -name "*.txt"               # 查找/home下所有.txt文件
find /var -type f -size +10M            # 查找/var下大于10MB的普通文件
find . -mtime -1                        # 查找当前目录下24小时内修改过的文件
find / -user alice -type d              # 查找alice拥有的目录
find . -name "*.log" -exec rm {} \;     # 删除所有.log文件
find . -perm 644 -exec ls -l {} \;      # 列出权限为644的文件

locate - 快速查找文件

基于预先生成的数据库,速度极快,但可能不是最新。需定期更新数据库(updatedb)。

语法locate [选项] 模式

示例

复制代码
locate myfile.txt           # 查找包含myfile.txt的文件路径
locate -i "*.conf"          # 忽略大小写查找所有.conf文件

which - 查找命令的可执行文件路径

PATH 环境变量指定的目录中查找。

示例

复制代码
which ls                    # 输出:/bin/ls
which python3               # 输出:/usr/bin/python3

whereis - 查找命令的二进制、源代码和手册页

示例

复制代码
whereis ls                  # 输出:ls: /bin/ls /usr/share/man/man1/ls.1.gz

6. 链接文件

ln - 创建硬链接或符号链接

语法ln [选项] 目标 链接名

常用选项 说明
-s 创建符号链接(软链接)
-f 强制创建,覆盖已存在的链接
-v 显示详细过程

硬链接:多个文件名指向同一个inode,删除原文件不影响链接;不能跨文件系统,不能链接目录。

符号链接:类似于快捷方式,指向另一个文件的路径;可跨文件系统,可指向目录。

示例

复制代码
ln file.txt hardlink.txt    # 创建硬链接
ln -s /usr/bin/python3 python  # 创建符号链接python指向python3
ln -sf /new/path/file symlink  # 强制更新符号链接

查看链接信息:ls -l 可看到符号链接指向的目标。


7. 文件内容处理

grep - 搜索文本

在文件中查找匹配模式的行。

语法grep [选项] 模式 [文件...]

常用选项 说明
-i 忽略大小写
-r-R 递归搜索目录
-n 显示匹配行的行号
-v 反向匹配,显示不包含模式的行
-l 只显示包含匹配模式的文件名
-c 显示匹配的行数
-w 精确匹配整个单词
-E 使用扩展正则表达式(同 egrep

示例

复制代码
grep "error" logfile.txt            # 在文件中查找error
grep -r "main" /src/                # 递归搜索/src下所有文件
grep -i "warning" *.log             # 忽略大小写搜索
grep -v "^#" config.conf            # 显示不以#开头的行(过滤注释)
ps aux | grep python                 # 结合管道,查找包含python的进程

sort - 排序文件内容

语法sort [选项] 文件...

常用选项 说明
-r 逆序排序
-n 按数值排序
-k 字段 按指定字段排序
-t 分隔符 指定字段分隔符
-u 去重(仅保留唯一行)

示例

复制代码
sort names.txt                      # 按字母排序
sort -n numbers.txt                 # 按数值排序
sort -t: -k3 /etc/passwd            # 以:为分隔符,按第三个字段(UID)排序
sort -u file.txt                    # 排序并去重

uniq - 报告或忽略重复行

通常与 sort 结合使用,因为它只能处理连续重复的行。

语法uniq [选项] [输入文件 [输出文件]]

常用选项 说明
-c 统计重复次数
-d 只显示重复的行
-u 只显示不重复的行

示例

复制代码
sort file.txt | uniq                 # 去重
sort file.txt | uniq -c              # 统计每行出现次数
sort file.txt | uniq -d              # 只显示重复行

wc - 统计行数、单词数、字符数

语法wc [选项] 文件...

常用选项 说明
-l 统计行数
-w 统计单词数
-c 统计字节数
-m 统计字符数

示例

复制代码
wc -l file.txt                      # 显示行数
wc -w file.txt                      # 显示单词数
wc -c file.txt                      # 显示字节数
wc file.txt                         # 显示三者(行、单词、字节)

cut - 提取文件中的列

语法cut [选项] 文件...

常用选项 说明
-f 字段 指定字段(列),从1开始
-d 分隔符 指定字段分隔符(默认制表符)
-c 字符范围 按字符位置提取

示例

复制代码
cut -d: -f1,3 /etc/passwd           # 以:分隔,提取第1和第3列(用户名和UID)
cut -c1-5 file.txt                  # 提取每行前5个字符
echo "a,b,c" | cut -d, -f2           # 输出:b

diff - 比较文件差异

语法diff [选项] 文件1 文件2

常用选项 说明
-u 统一格式输出(更易读)
-c 上下文格式输出
-i 忽略大小写
-r 递归比较目录
-q 只报告文件是否不同

示例

复制代码
diff file1.txt file2.txt            # 显示差异
diff -u old.txt new.txt              # 统一格式输出(常用于补丁)
diff -r dir1 dir2                    # 比较两个目录

8. 文件压缩与归档

tar - 打包和解包文件

tar 本身不压缩,但可以结合压缩程序(如gzip、bzip2)生成压缩包。

语法tar [选项] [归档文件] [文件/目录...]

常用选项组合:

选项 说明
-c 创建归档
-x 解包
-t 查看包内文件列表
-v 详细显示处理文件
-f 文件 指定归档文件名
-z 通过gzip压缩/解压(.tar.gz)
-j 通过bzip2压缩/解压(.tar.bz2)
-J 通过xz压缩/解压(.tar.xz)
-C 目录 解包到指定目录

示例

复制代码
tar -cvf archive.tar dir1/           # 打包目录为tar
tar -czvf archive.tar.gz dir1/       # 打包并用gzip压缩
tar -xzvf archive.tar.gz             # 解压.tar.gz
tar -xjvf archive.tar.bz2 -C /tmp    # 解压.tar.bz2到/tmp
tar -tf archive.tar                  # 查看tar包内容

gzip / gunzip - 压缩/解压单个文件

gzip 将文件压缩为 .gz 格式,并删除原文件(除非使用 -c 保留)。

语法gzip [选项] 文件...

常用选项 说明
-d 解压(同 gunzip
-c 输出到标准输出,保留原文件
-r 递归压缩目录下文件
-l 列出压缩文件信息
-1-9 压缩级别,1最快,9最佳压缩

示例

复制代码
gzip file.txt                       # 压缩为file.txt.gz,删除原文件
gunzip file.txt.gz                   # 解压恢复file.txt
gzip -c file.txt > file.txt.gz       # 压缩但保留原文件
zcat file.txt.gz                     # 查看压缩文件内容(相当于gunzip -c)

zip / unzip - 处理zip格式

跨平台常用。

语法

复制代码
zip [选项] 压缩包名 文件...
unzip [选项] 压缩包名 [-d 目录]

示例

复制代码
zip archive.zip file1.txt file2.txt  # 创建zip包
zip -r archive.zip dir/              # 递归压缩目录
unzip archive.zip                    # 解压到当前目录
unzip archive.zip -d /target/        # 解压到指定目录
unzip -l archive.zip                  # 列出zip包内容

9. 其他有用命令

du - 统计磁盘使用情况

估算文件或目录占用的磁盘空间。

语法du [选项] [文件/目录...]

常用选项 说明
-h 人类可读格式
-s 只显示总计(汇总)
-a 显示所有文件(不只是目录)
-c 最后加上总计
--max-depth=N 限制递归深度

示例

复制代码
du -h                                 # 显示当前目录下每个子目录大小
du -sh /home                          # 显示/home总大小
du -h --max-depth=1 /var              # 显示/var下第一级目录大小

df - 报告文件系统磁盘空间使用情况

显示挂载分区的总容量、已用、可用等。

语法df [选项] [文件或挂载点...]

常用选项 说明
-h 人类可读格式
-T 显示文件系统类型
-i 显示inode信息而非块使用
-a 包含虚拟文件系统(如/proc)

示例

复制代码
df -h                                 # 显示所有分区使用情况
df -hT /home                          # 显示/home所在分区的详情,包括类型

ln(已介绍)

示例

复制代码
readlink /usr/bin/python              # 输出目标路径

basename / dirname - 路径操作

basename 从路径中提取文件名,dirname 提取目录部分。

示例

复制代码
basename /home/user/file.txt          # 输出:file.txt
dirname /home/user/file.txt           # 输出:/home/user
相关推荐
吴声子夜歌2 小时前
ES6——Iterator和for...of循环详解
前端·javascript·es6
小李子呢02112 小时前
前端八股3---ref和reactive
开发语言·前端·javascript
落魄江湖行2 小时前
基础篇三 Nuxt4 组件进阶:插槽与事件传递
前端·nuxt4
kerli2 小时前
Compose 组件:LazyColumn 核心参数与 key/contentType 详解
android·前端
好运的阿财2 小时前
“锟斤拷”问题——程序中用powershell执行命令出现中文乱码的解决办法
linux·前端·人工智能·机器学习·架构·编辑器·vim
踩着两条虫2 小时前
VTJ.PRO AI + 低代码实战:接入高德地图
前端·vue.js·ai编程
绝世唐门三哥2 小时前
React性能优化:memo、useMemo和useCallback全解析
前端·react.js·memo
兔子零10242 小时前
Claude Code 都把宠物养进终端了,我做了一个真正能长期玩的中文宠物游戏
前端·游戏·游戏开发
xiaotao1312 小时前
Vite 与 Webpack 开发/打包时环境变量对比
前端·vue.js·webpack