Linux 文件创建、删除、移动、复制基础知识整理

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.log

vim 编辑器:创建并编辑文件。通过文本编辑器创建文件,适合编写复杂内容(需先安装编辑器)。

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'
相关推荐
lx74160269816 分钟前
百度网盘bypy使用
服务器
Jason_zhao_MR34 分钟前
米尔RK3506核心板SDK重磅升级,解锁三核A7实时控制新架构
linux·嵌入式硬件·物联网·架构·嵌入式·嵌入式实时数据库
为什么不问问神奇的海螺呢丶35 分钟前
服务器巡检报告-基于categraf 采集数据-存入Prometheus-写入mysql后生成报告
服务器·mysql·prometheus
网硕互联的小客服41 分钟前
遇到网站500内部服务器错误如何处理?如何预防这样的问题发生?
运维·服务器·安全
叮咚侠44 分钟前
Ubuntu 24.04.3 LTS 中 vdb 的 UUID 永久挂载没有显示的磁盘的操作步骤
linux·运维·ubuntu·挂载磁盘
.小墨迹1 小时前
C++学习之std::move 的用法与优缺点分析
linux·开发语言·c++·学习·算法·ubuntu
风华同学1 小时前
【Linux驱动篇】LED驱动开发实验
linux·驱动开发·ubuntu
李斯维1 小时前
安装 WSL 最好的方式
linux·windows
张小九992 小时前
fpocket安装和使用教程
linux·机器学习·github
元气满满-樱2 小时前
Rewrite重写
linux·nginx