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'
相关推荐
沉默的八哥1 小时前
Linux中LVM逻辑卷扩容
linux·运维·服务器
退役小学生呀1 小时前
十一、K8s细粒度权限管理RBAC
linux·docker·云原生·容器·kubernetes·k8s
YZJenny1 小时前
没有管理员权限,在服务器安装使用 Jupyter + R 内核
服务器·jupyter
wanhengidc2 小时前
服务器机柜与网络机柜各自的优势
服务器·网络·智能路由器
网易独家音乐人Mike Zhou3 小时前
【Linux应用】开发板USB共享网络,网线或USB以太网共享网络(局域网连接PC和开发板,实现PC给开发板共享网络,USB通过NDIS驱动共享)
linux·网络·单片机·mcu·物联网·嵌入式·iot
basketball6163 小时前
Linux C 管道文件操作
linux·运维·c语言
颖川初尘4 小时前
端口到底是个什么鬼?回答我!
服务器·网络·tcp/ip·node.js
浩浩测试一下4 小时前
Windows 与 Linux 内核安全及 Metasploit/LinEnum 在渗透测试中的综合应用
linux·运维·windows·web安全·网络安全·系统安全·安全架构
将心ONE4 小时前
使用 lstrip() 和 rstrip() 方法
运维·服务器