# 文件管理 本节介绍对文件进行管理的命令 - [ls 命令](#ls-命令):列出文件 - [mkdir 命令](#mkdir-命令):创建目录 - [cp 命令](#cp-命令):复制文件 - [rm 命令](#rm-命令):删除文件 - [touch 命令](#touch-命令):创建空文件 - [chmod 命令](#chmod-命令):改变文件权限 - [chown 命令](#chmod-命令):改变文件所有者 - [nano 命令](#nano-命令):编辑文本类文件 ## ls 命令 `ls` 命令可以查看一个文件夹下的所有文件,或查找一个或单个文件,支持使用正则表达式。 用法: ```txt ls [option] <路径> ``` 常见选项如下: - -a:同时列出隐藏文件 - -l:显示详细信息 - -h:改用 MB 或 GB 的文件大小计数方式,配合 `-l` 参数使用 查看 `/etc` 目录下的文件: ```bash ls /etc ``` 查看当前目录下的所有文件,含隐藏文件: ```bash ls -a ``` 查看上级目录下文件的详细信息,并以 MB 或 GB 的文件大小计数方式列出所有文件,含隐藏: ```bash ls -alh ../ ``` ## mkdir 命令 `mkdir` 命令用于创建目录,用法如下: ```txt mkdir [option] <路径> ``` 常用选项: - -p:递归创建 例如创建 `video` 目录: ```bash mkdir video ``` 递归创建一系列文件夹: ```bash mkdir one/two/three ``` ## cp 命令 `cp` 命令可以复制一份文件或目录到指定的路径。语法如下: ```txt cp [option] <文件路径> <目标路径> ``` 选项说明: - `-r`:递归复制目录及其内容(用于复制目录)。 - `-i`:交互模式,覆盖前提示用户确认。 - `-f`:强制复制,覆盖目标文件而不提示。 - `-v`:显示详细的复制过程(verbose)。 - `-p`:保留文件的原始属性(如权限、时间戳等)。 - `-a`:归档模式,等同于 `-dpr`,保留所有文件属性和递归复制目录。 - `-u`:仅当源文件比目标文件新时才复制(更新模式)。 - `-l`:创建硬链接而不是复制文件。 - `-s`:创建符号链接(软链接)而不是复制文件。 例如将 `/home/fovlin/file` 文件复制一份到到 `/home/fovlin/directory` 目录下: ```bash cp /home/fovlin/file /root ``` 复制当前工作目录下的 `directory` 目录到 `/home/fovlin/Documents` 目录下: ```bash cp -r ./directory /home/fovlin/Documents ``` ## rm 命令 `rm` 命令可以删除一个或多个文件或目录。 用法: ```txt rm [option] <路径> ``` 常见选项如下: - -r:递归删除,删除目录时必需 - -f:强制删除,忽略不存在的文件且不提示 - -i:交互式删除,删除前逐一询问确认 删除单个文件: ```bash rm file.txt ``` 递归删除目录及其内容: ```bash rm -rf dir/ ``` 交互式删除文件: ```bash rm -i file.txt ``` ## touch 命令 `touch` 命令用于创建空文件,或更新已有文件的时间戳。 用法: ```txt touch [option] <路径> ``` 常见选项如下: - -c:不创建文件,仅更新时间戳 - -t:使用指定时间而非当前时间 创建一个空文件: ```bash touch newfile.txt ``` 同时创建多个文件: ```bash touch file1.txt file2.txt file3.txt ``` 仅更新文件时间戳,不创建: ```bash touch -c existing.txt ``` ## chmod 命令 使用 `ls -l` 命令时,会输出文件的基本信息,其中包含文件的权限信息: ```log drwxr-xr-x 2 fovlin fovlin 4096 4月17日 00:37 docs ``` 从左到右依次为: --- `文件权限` `我也不知道是啥` `所有者` `所有组` `文件大小(不会显示目录大小)` `最后访问日期` `最后访问时间` `文件名称` --- ### 更改文件权限 文件权限 `drwxr-xr-x` 前一个字符表示文件类型,常见字符对应的文件类型如下: - `-`: 普通文件 - `d`: 目录 - `l`: 链接 - `c`: 字符设备文件 - `b`: 块设备文件 - `s`: 套接字文件 - `p`: 管道文件 文件权限 `drwxr-xr-x` 第 2-4 、 5-7 、 8-10 个字符分别表示所有者权限、所有组权限、其他用户权限,三个字符分别代表: - `r`: 读权限 - `w`: 写权限 - `x`: 执行权限 使用 `chmod` 可以改变文件权限,用法如下: ```txt chmod [选项] <权限信息> <文件名> ``` > 当权限不足时可以使用超级管理员进行操作。 一般常用数字模式来表示权限: - `x`: 1 - `w`: 2 - `r`: 4 将需要的权限对应的数字加和即可表示单个权限。 一个文件的权限信息由三位数字,也就是三个权限组成,分别表示所有者权限、所有组权限、其他用户权限。 例如将文件 script.sh 改为所有者可读可执行可写,同用户组可读可执行,其他用户仅执行,执行以下命令: ```bash chmod 751 script.sh ``` 将整个目录 docs 递归改为所有者可读可执行可写,同用户组可读可执行,其他用户仅执行,执行以下命令: ```bash chmod -R 751 docs ``` > 可执行在目录中表示能否进入目录。 ## chown 命令 `chown` 命令用于更改目文件的所有者,格式如下: ```txt chown [option] <所有者|所有者:所属组> <文件路径> ``` - `-R`:--recursive,递归更改目录及其子目录中所有文件的所有者 - `-v`:--verbose,显示详细操作信息 - `-c`:--changes,只显示实际发生更改的文件 - `-f`:--silent, --quiet,抑制错误信息 - `--reference=文件`:使用参考文件的所有者和组设置 - `-h`:--no-dereference,影响符号链接本身,而不是链接指向的文件 - `--from=当前所有者`:只有当前所有者匹配时才更改 使用 `ls -l` 命令时,会输出文件的基本信息,其中包含文件的权限信息: ```log drwxr-xr-x 2 root root 4096 4月17日 00:37 docs ``` `root root` 表示文件的所有者为 root,所属组为 root,更改此处的信息需要用到 `chown` 命令。 更改不属于自己的文件的操作需要管理员权限,例如更改当前目录下 root 用户的 `docs` 目录的所有者,以及所属组为 fovlin: ```bash sudo chown -R fovlin:fovlin docs ``` ## nano 命令 `nano` 是编辑含文本文件内容的一个工具,直接使用 `nano <文件路径>` 即可开始编辑文件。 开始编辑后,会进入交互式命令行模式,常用快捷键如下: - `Ctrl + G`:帮助 - `Ctrl + O`:写入文件 - `Ctrl + F`:搜索字符串 - `Ctrl + K`:剪切 - `Ctrl + T`:执行命令 - `Ctrl + X`:离开 - `Ctrl + R`:读档 - `Ctrl + \`:替换 - `Ctrl + U`:粘贴 - `Ctrl + J`:对齐 编辑操作不是实时的,在退出前需要先 `Ctrl + O` 写入文件,再退出,才能够完成对文件的编辑。 诸如此类的工具还有 `vim` `neovim` 等。