Linux 文件与目录管理
我们知道 Linux 的目录结构为树状结构,最顶级的目录为根目录/
。
其他目录可以通过挂载将它们添加到树中,通过解除挂载可以移除它们。
✅ 在开始本教程前我们需要先知道什么是绝对路径与相对路径:
- 绝对路径:路径的写法,由根目录
/
写起,例如:/usr/share/doc
这个目录。 - 相对路径:路径的写法,不是由
/
写起,例如从/usr/share/doc
目录到/usr/share/man
目录时,可以写成:cd ../man
这就是相对路径的写法。
处理目录的常用命令
这些命令能帮助我们高效地浏览、创建和管理目录,是 Linux 系统中不可或缺的基础工具。
ls
:列出目录内容(List files)cd
:切换工作目录(Change directory)pwd
:显示当前目录路径(Print working directory)mkdir
:创建新目录(Make directory)rmdir
:删除空目录(Remove empty directory)cp
:复制目录(Copy directory recursively)rm
:删除目录(Remove directory recursively)mv
:移动/重命名目录(Move/rename directory)
若需查看各命令的详细用法说明,可以使用系统内置的帮助手册。例如,要查看cp
命令可以使用man cp
查看。
ls (列出目录)
在 Linux 系统中,ls
作为日常操作中最常被调用的命令,它能够快速展示当前工作目录下的内容结构。
ls # 列出当前目录内容
ls -l # 以长格式显示详细信息
ls -a # 显示所有文件(包括隐藏文件)
ls -lh # 以易读格式显示文件大小
ls /etc # 查看 /etc 目录下的文件
cd (切换目录)
在 Linux 系统中,cd
是 Change Directory 的缩写,是用来变换工作目录的命令。
cd ~/Documents # 进入家目录下的 Documents
cd ../.. # 向上移动两级目录
cd /var/www/kaicz # 使用绝对路径切换到 kaicz 目录
cd - # 返回之前的目录(如:/home/user
)
cd .. # 表示移动到当前目录的上一级目录
pwd (显示目前所在的目录)
在 Linux 系统中,pwd
是 Print Working Directory 的缩写,用于显示当前所在目录的绝对路径。
1. 在切换目录后,可用 pwd 验证是否成功:
cd /var/log
pwd # 输出 /var/log
2. 尤其在执行删除、移动文件等操作前,避免误操作:
pwd # 确保不在敏感目录(如 /、/etc)
3. 在 Shell 脚本中,可以用pwd
获取当前路径并赋值给变量:
CURRENT_DIR=$(pwd)
echo "当前目录是:$CURRENT_DIR"
mkdir (创建新目录)
在 Linux 系统中,mkdir
是 Make Directory 的缩写,用于创建新的目录。
1. 创建多级目录(父目录不存在时自动创建):
mkdir -p parent/child/grandchild # 一次性创建多级目录
2. Windows 命令提示符 (CMD) 中创建多级目录:
mkdir parent\child\grandchild
3. 显示操作详情(Linux/macOS):
mkdir -v dir1 dir2 # 创建多个目录并显示过程
4. 设置目录权限(Linux/macOS):
mkdir -m 755 protected_folder # 创建权限为 755 的目录
rmdir (删除空的目录)
在 Linux 系统中,rmdir
是 Linux/Unix 和 Windows 系统中用于删除空目录的命令,只能删除空目录,如果目录非空,则会报错。
1. Linux/macOS/PowerShell:-p
删除目录及其空的父目录(如果父目录也变为空):
rmdir -p parent/child/grandchild # 删除 grandchild,如果 parent 和 child 也变空,则一起删除
2. Windows CMD:直接使用路径,默认行为类似递归删除空目录:
rmdir parent\child\grandchild
3. 显示操作详情(Linux/macOS)-v
(verbose,显示详细信息):
rmdir -v empty_dir # 删除并显示操作信息
4. 忽略非空目录错误(Linux/macOS)--ignore-fail-on-non-empty
即使目录非空,也不报错(静默跳过):
rmdir --ignore-fail-on-non-empty non_empty_dir # 不报错,但不会删除
cp (复制文件或目录)
在 Linux 系统中,cp
是 Linux/Unix 和 macOS 系统中用于拷贝文件和目录的命令。
1. 复制文件:
cp file1.txt file2.txt # 复制 file1.txt 为 file2.txt
cp file1.txt /path/to/dir/ # 复制 file1.txt 到指定目录
2. 复制目录(递归复制):
cp -r dir1/ dir2/ # 复制 dir1 及其内容到 dir2
cp -a dir1/ dir2/ # 保留所有属性复制
3. 复制多个文件到目录:
cp file1.txt file2.txt /backup/ # 复制多个文件到 /backup/
4. 避免覆盖已有文件:
cp -n file1.txt file2.txt # 如果 file2.txt 已存在,则不覆盖
cp -i file1.txt file2.txt # 覆盖前询问(默认在某些系统启用)
5. 仅复制更新的文件(增量备份):
cp -u *.txt /backup/ # 仅复制比目标目录更新的 .txt 文件
6. 保留文件权限和时间戳:
cp -p important.txt /backup/ # 复制并保留原属性
cp -a project/ /backup/ # 归档模式(适合备份)
7. 创建链接而非复制:
cp -l file1.txt hardlink.txt # 创建硬链接(节省空间)
cp -s file1.txt symlink.txt # 创建软链接(快捷方式)
rm (移除文件或目录)
在 Linux 系统中,rm
是 Linux/Unix 和 macOS 系统中用于删除文件或目录的命令,需谨慎使用,因为删除后通常无法恢复。
1. 删除文件:
rm file.txt # 删除单个文件
rm file1.txt file2.txt # 删除多个文件
rm *.log # 通配符删除所有 .log 文件
2. 删除目录(递归删除):
rm -r dir/ # 删除目录及其内容(会提示确认)
rm -rf dir/ # 强制删除目录(无确认,慎用!)
3. 交互式删除(确认每个文件):
rm -i *.txt # 删除前逐个确认
4. 显示删除过程:
rm -v old_*.jpg # 删除并显示详细信息
5. 删除空目录:
rm -d empty_dir/ # 等同于 `rmdir empty_dir/`
mv (移动文件与目录,或修改名称)
在 Linux 系统中,mv
是 Linux/Unix 系统中用于移动文件或目录,以及重命名文件或目录的命令。
1. 移动文件:
mv file.txt /path/to/destination/ # 将 file.txt 移动到 /path/to/destination/ 目录下
2. 移动目录:
mv dir1 /path/to/destination/ # 将 dir1 目录移动到 /path/to/destination/ 目录下
3. 重命名文件:
mv oldname.txt newname.txt # 将 oldname.txt 重命名为 newname.txt
4. 重命名目录:
mv olddir newdir # 将 olddir 目录重命名为 newdir
5. 移动多个文件到目录:
mv file1.txt file2.txt file3.txt /path/to/destination/ # 将多个文件移动到目标目录
反馈提交成功
感谢您的反馈,我们将尽快处理您的反馈