Linux 文件基础知识文件基本概念在 Linux 系统中,一切皆文件。无论是文本、图像、设备还是进程间的通信通道,都以文件的形式存在和管理。Linux 文件采用树形目录结构,以根目录 “/” 为起点,所有文件和目录都挂载在这个树形结构中,形成一个完整的文件系统。
文件类型Linux 文件主要分为以下几种类型,可通过 ls -l 命令查看文件类型,命令输出的第一个字符代表文件类型:
普通文件(-) :最常见的文件类型,包括文本文件、二进制文件、脚本文件等。例如,test.txt 是文本文件,a.out 是编译后的二进制文件。目录文件(d) :用于存放其他文件和目录,类似 Windows 中的文件夹。如 /home 目录通常存放用户的个人文件。链接文件(l) :分为硬链接和软链接(符号链接)。软链接类似于 Windows 的快捷方式,指向另一个文件;硬链接则是文件的另一个入口,与原文件共享相同的 inode。设备文件(b/c) :与硬件设备相关,b 表示块设备(如硬盘、U 盘),c 表示字符设备(如键盘、鼠标),通常存放在 /dev 目录下。管道文件(p) :用于进程间通信,是一种临时的文件类型。套接字文件(s) :用于网络通信,支持不同进程之间的数据交互,常见于 /var/run 目录。代码语言:bash复制ll | grep '^s' #查找当前目录下的套接字文件Linux 系统目录结构/(根目录) :整个文件系统的起点,所有目录和文件都包含在根目录下。/bin:存放系统必备的二进制可执行文件,如 ls、cp、mv 等基本命令,普通用户也可执行。/sbin:存放系统管理的二进制可执行文件,如 reboot、shutdown 等,通常需要 root 权限才能执行。/home:普通用户的主目录存放位置,每个用户在该目录下有一个以用户名命名的子目录,用于存放用户的个人文件和设置。/root:root 用户的主目录,与普通用户的主目录不同,它直接位于根目录下。/etc:存放系统配置文件,如网络配置文件 network/interfaces、用户配置文件 passwd 等。/usr:存放系统应用程序和文件,类似于 Windows 的 Program Files 目录,其中 /usr/bin 存放用户常用命令,/usr/lib 存放程序运行所需的库文件。/var:存放经常变化的文件,如日志文件(/var/log)、邮件(/var/mail)、缓存文件等。/tmp:存放临时文件,系统重启后该目录下的文件会被清空。/dev:存放设备文件,如硬盘 sda、光驱 sr0 等。/proc:虚拟文件系统,存放系统进程和内核状态的信息,这些文件并不实际存储在硬盘上,而是由内核动态生成,如 /proc/cpuinfo 包含 CPU 信息。浏览、切换、目录大小目录创建mkdir 命令创建目录 :
代码语言:bash复制mkdir test #创建目录
mkdir -r test/level1/level2 #递归创建目录浏览ls (list) 列出目录内容:
代码语言:bash复制ls -l # 长格式显示文件和目录详细信息
ls -a # 显示所有文件(包括隐藏文件)
ls -lh # 以人类可读的方式显示文件大小
ls -lt # 按修改时间排序显示
ls -R # 递归显示子目录内容tree:以树状结构显示目录
代码语言:bash复制tree # 显示当前目录的树状结构
tree -L 2 # 只显示两级目录结构
tree -a | tail -1 #只显示统计信息切换cd:切换目录
代码语言:bash复制cd /path/to/directory # 切换到指定目录
cd .. # 返回上级目录
cd - # 返回上次所在目录
cd # 回到用户主目录pwd:显示当前工作目录
代码语言:bash复制pwd # 打印当前所在目录的完整路径查看目录大小du:估算文件空间使用情况
代码语言:bash复制du -sh /path/to/directory # 显示目录总大小(-s:汇总,-h:人类可读)
du -h --max-depth=1 # 显示当前目录下一级子目录的大小df:显示文件系统磁盘空间使用情况
代码语言:bash复制df -h # 以人类可读的方式显示所有文件系统的使用情况
df -h / # 显示根目录所在文件系统的使用情况文件创建、删除、详细信息文件创建touch:创建空白文件,还能更新已有文件的时间戳。
代码语言:bash复制touch newfile.txt # 创建一个名为newfile.txt的空白文件
touch file1 file2 # 同时创建多个文件cat > : 创建文件并输入内容,按 Ctrl + D 结束输入。
特点:若文件已存在,会覆盖原有内容;适合快速写入少量文本。
代码语言:bash复制# 创建file.txt并输入两行内容
cat > file.txt
Hello, Linux!
This is a test file.
^D # 按Ctrl+D保存退出echo > 或 echo >>: 创建文件并写入单行内容。
echo "内容" > 文件名:覆盖写入(文件不存在则创建)。 echo "内容" >> 文件名:追加写入(文件不存在则创建)。
代码语言:bash复制# 覆盖写入(创建新文件)
echo "Server started at 9:00" > status.log
# 追加写入(文件存在则添加内容)
echo "Error: connection failed" >> status.logvim 编辑器:创建并编辑文件。通过文本编辑器创建文件,适合编写复杂内容(需先安装编辑器)。
代码语言:bash复制# 用vim创建并编辑file.txt(按i进入编辑模式,Esc+`:wq`保存退出)
vim file.txt
# 用nano创建并编辑note.txt(更简单的编辑器,Ctrl+O保存,Ctrl+X退出)
nano note.txt文件删除rm(remove)命令用于删除文件或目录,删除后无法恢复,使用时需格外谨慎。
代码语言:bash复制# 复制文件到目标目录
cp memo.txt ~/backup/ # 把memo.txt复制到backup目录
# 复制文件并重命名(目标是新文件名)
cp data.csv data_backup.csv # 复制data.csv为data_backup.csv
# 复制目录(必须加-r)
cp -r src/ dest/ # 递归复制src目录到dest目录(dest不存在则创建)
# 复制目录时保留属性(如权限、时间)
cp -a project/ project_backup/ # 适合备份目录,保留所有原始属性
# 批量复制文件(通配符)
cp *.jpg ~/images/ # 复制所有.jpg文件到images目录
# 复制前提示覆盖
cp -i old.txt new.txt # 若new.txt已存在,提示"是否覆盖?"
# 显示复制过程
cp -v document.pdf ~/docs/ # 输出:'document.pdf' -> '/home/user/docs/document.pdf'详细信息代码语言:bash复制stat filename.log文件移动、复制文件移动 ( 剪切 / 重命名 )mv(move)命令用于移动文件 / 目录,也可实现重命名,是 Linux 中最常用的命令之一。
-i:若目标文件已存在,移动前提示确认(避免误覆盖)。-f:强制移动,覆盖目标文件时不提示(慎用)。-v:显示移动过程的详细信息(verbose)。代码语言:bash复制# 移动文件到目标目录(目标目录必须存在)
mv document.txt ~/Documents/ # 把document.txt移动到用户的Documents目录
# 重命名文件(源和目标在同一目录)
mv old_name.jpg new_name.jpg
# 移动目录(无需递归参数,mv默认支持目录移动)
mv project/ ~/workspace/ # 把project目录移动到workspace目录
# 批量移动同类型文件(用通配符*)
mv *.txt ~/text_files/ # 把当前目录所有.txt文件移动到text_files目录
# 移动时提示覆盖(安全操作)
mv -i report.pdf ~/backup/ # 若backup目录已有report.pdf,会提示是否覆盖
# 显示移动过程
mv -v image.png photos/ # 输出:'image.png' -> 'photos/image.png'文件复制cp(copy)命令用于复制文件或目录,需注意复制目录时的递归参数。
-r 或 -R:递归复制目录(必须加,否则无法复制目录)。-i:覆盖目标文件前提示确认。-f:强制复制,覆盖时不提示。-v:显示复制过程的详细信息。-p:保留源文件的权限、时间戳等属性。-a:归档复制(相当于 -dR --preserve=all,保留所有属性,适合备份)。代码语言:bash复制# 复制文件到目标目录
cp memo.txt ~/backup/ # 把memo.txt复制到backup目录
# 复制文件并重命名(目标是新文件名)
cp data.csv data_backup.csv # 复制data.csv为data_backup.csv
# 复制目录(必须加-r)
cp -r src/ dest/ # 递归复制src目录到dest目录(dest不存在则创建)
# 复制目录时保留属性(如权限、时间)
cp -a project/ project_backup/ # 适合备份目录,保留所有原始属性
# 批量复制文件(通配符)
cp *.jpg ~/images/ # 复制所有.jpg文件到images目录
# 复制前提示覆盖
cp -i old.txt new.txt # 若new.txt已存在,提示"是否覆盖?"
# 显示复制过程
cp -v document.pdf ~/docs/ # 输出:'document.pdf' -> '/home/user/docs/document.pdf'