文件管理
ls - 列出目录内容
命令参数解释表格:
| 参数 | 说明 | 示例 |
|---|---|---|
-a | 显示所有文件,包括隐藏文件 | ls -a |
-l | 使用长列表格式显示 | ls -l |
-h | 以人类可读的格式显示文件大小 | ls -lh |
-t | 按修改时间排序 | ls -lt |
-r | 反向排序 | ls -lr |
-R | 递归显示子目录 | ls -R |
输出参数解释表格:
| 输出字段 | 说明 | 示例 |
|---|---|---|
| 权限字段 | 文件类型和权限 | drwxr-xr-x |
| 链接数 | 硬链接数量 | 2 |
| 所有者 | 文件所有者 | user |
| 用户组 | 文件所属组 | group |
| 文件大小 | 文件大小(字节) | 4096 |
| 修改时间 | 最后修改时间 | Dec 15 10:30 |
| 文件名 | 文件或目录名 | example.txt |
指令输出示例:
$ ls -la
total 32
drwxr-xr-x 5 user group 4096 Dec 15 10:30 .
drwxr-xr-x 3 user group 4096 Dec 15 10:25 ..
-rw-r--r-- 1 user group 220 Dec 15 10:30 .bash_logout
-rw-r--r-- 1 user group 3771 Dec 15 10:30 .bashrc
-rw-r--r-- 1 user group 807 Dec 15 10:30 .profile
drwxr-xr-x 2 user group 4096 Dec 15 10:30 documents
-rw-r--r-- 1 user group 25 Dec 15 10:30 test.txt
cp - 复制文件或目录
命令参数解释表格:
| 参数 | 说明 | 示例 |
|---|---|---|
-r | 递归复制目录 | cp -r dir1 dir2 |
-p | 保留文件属性 | cp -p file1 file2 |
-v | 显示详细过程 | cp -v file1 file2 |
-f | 强制覆盖 | cp -f file1 file2 |
-i | 交互式复制 | cp -i file1 file2 |
指令输出示例:
$ cp -v test.txt backup/
'test.txt' -> 'backup/test.txt'
$ cp -r documents/ backup/
documents/file1.txt -> backup/documents/file1.txt
documents/file2.txt -> backup/documents/file2.txt
mv - 移动或重命名文件
命令参数解释表格:
| 参数 | 说明 | 示例 |
|---|---|---|
-i | 交互式移动 | mv -i file1 file2 |
-v | 显示详细过程 | mv -v file1 file2 |
-f | 强制移动 | mv -f file1 file2 |
-n | 不覆盖已存在文件 | mv -n file1 file2 |
指令输出示例:
$ mv -v oldname.txt newname.txt
'oldname.txt' -> 'newname.txt'
$ mv -i file1.txt documents/
mv: overwrite 'documents/file1.txt'? y
rm - 删除文件或目录
命令参数解释表格:
| 参数 | 说明 | 示例 |
|---|---|---|
-r | 递归删除目录 | rm -r directory |
-f | 强制删除,不提示 | rm -f file |
-i | 交互式删除 | rm -i file |
-v | 显示详细过程 | rm -v file |
指令输出示例:
$ rm -i test.txt
rm: remove regular file 'test.txt'? y
$ rm -rf temp/
# 静默删除temp目录及其内容
cat - 查看文件内容
命令参数解释表格:
| 参数 | 说明 | 示例 |
|---|---|---|
-n | 显示行号 | cat -n file.txt |
-A | 显示所有字符 | cat -A file.txt |
-s | 压缩空行 | cat -s file.txt |
-T | 显示制表符 | cat -T file.txt |
-E | 显示行结束符 | cat -E file.txt |
指令输出示例:
$ cat -n example.txt
1 这是第一行
2 这是第二行
3 这是第三行
$ cat -A example.txt
这是第一行$
这是第二行$
这是第三行$
head - 查看文件开头
命令参数解释表格:
| 参数 | 说明 | 示例 |
|---|---|---|
-n | 指定行数 | head -n 10 file |
-c | 指定字节数 | head -c 100 file |
-q | 不显示文件名 | head -q file1 file2 |
-v | 显示文件名 | head -v file |
指令输出示例:
$ head -n 5 large_file.txt
第1行内容
第2行内容
第3行内容
第4行内容
第5行内容
$ head -c 50 file.txt
这是文件的前50个字符内容
tail - 查看文件结尾
命令参数解释表格:
| 参数 | 说明 | 示例 |
|---|---|---|
-n | 指定行数 | tail -n 10 file |
-c | 指定字节数 | tail -c 100 file |
-f | 持续监控文件 | tail -f log.txt |
-q | 不显示文件名 | tail -q file1 file2 |
-v | 显示文件名 | tail -v file |
指令输出示例:
$ tail -n 5 log.txt
2023-12-15 14:30:15 INFO: Service started
2023-12-15 14:30:16 INFO: Database connected
2023-12-15 14:30:17 INFO: Cache initialized
2023-12-15 14:30:18 INFO: API ready
2023-12-15 14:30:19 INFO: Server listening
$ tail -f /var/log/nginx/access.log
# 实时监控nginx访问日志
find - 查找文件
命令参数解释表格:
| 参数 | 说明 | 示例 |
|---|---|---|
-name | 按文件名查找 | find /path -name "*.txt" |
-iname | 忽略大小写按文件名查找 | find /path -iname "*.txt" |
-type | 按文件类型查找 | find /path -type f (文件) |
-size | 按文件大小查找 | find /path -size +100M |
-mtime | 按修改时间查找 | find /path -mtime -7 (7 天内) |
-atime | 按访问时间查找 | find /path -atime +30 (30 天前) |
-user | 按所有者查找 | find /path -user username |
-group | 按组查找 | find /path -group groupname |
-perm | 按权限查找 | find /path -perm 644 |
-exec | 执行命令 | find /path -name "*.txt" -exec rm {} \; |
-delete | 删除找到的文件 | find /path -name "*.tmp" -delete |
-print | 打印找到的文件 | find /path -name "*.txt" -print |
-maxdepth | 最大搜索深度 | find /path -maxdepth 2 -name "*.txt" |
-mindepth | 最小搜索深度 | find /path -mindepth 2 -name "*.txt" |
文件类型说明:
| 类型 | 说明 |
|---|---|
f | 普通文件 |
d | 目录 |
l | 符号链接 |
c | 字符设备 |
b | 块设备 |
p | 命名管道 |
s | 套接字 |
时间参数说明:
| 参数 | 说明 |
|---|---|
-mtime -n | n 天内修改的文件 |
-mtime +n | n 天前修改的文件 |
-mtime n | 正好 n 天前修改的文件 |
-atime -n | n 天内访问的文件 |
-atime +n | n 天前访问的文件 |
-ctime -n | n 天内状态改变的文件 |
大小参数说明:
| 参数 | 说明 |
|---|---|
-size +100M | 大于 100MB 的文件 |
-size -100M | 小于 100MB 的文件 |
-size 100M | 正好 100MB 的文件 |
-size +100c | 大于 100 字节的文件 |
-size +100k | 大于 100KB 的文件 |
指令输出示例:
$ find /home -name "*.txt"
/home/user/documents/file1.txt
/home/user/documents/file2.txt
/home/user/backup/old.txt
$ find /var/log -type f -mtime -7
/var/log/syslog
/var/log/auth.log
/var/log/nginx/access.log
$ find /tmp -name "*.tmp" -size +1M
/tmp/large_file.tmp
/tmp/backup.tmp
$ find /home -user user -type f -exec ls -lh {} \;
-rw-r--r-- 1 user user 25 Dec 15 10:30 /home/user/file1.txt
-rw-r--r-- 1 user user 30 Dec 15 10:31 /home/user/file2.txt
$ find /var/www -name "*.php" -exec grep -l "mysql_connect" {} \;
/var/www/app/config.php
/var/www/app/database.php
$ find /home -type f -name "*.log" -mtime +30 -delete
# 删除30天前的日志文件
$ find /usr -name "*.conf" -maxdepth 3
/usr/share/doc/nginx/examples/nginx.conf
/usr/share/apache2/conf-available/security.conf
$ find /home -type f -perm 644 -user user
/home/user/.bashrc
/home/user/.profile
/home/user/documents/readme.txt
nano - 文本编辑器
命令参数解释表格:
| 参数 | 说明 | 示例 |
|---|---|---|
-w | 禁用自动换行 | nano -w file.txt |
-c | 显示光标位置 | nano -c file.txt |
-i | 自动缩进 | nano -i file.txt |
-t | 使用制表符缩进 | nano -t file.txt |
-m | 启用鼠标支持 | nano -m file.txt |
-B | 备份文件 | nano -B file.txt |
-C | 指定备份目录 | nano -C /backup file |
-T | 设置制表符宽度 | nano -T 4 file.txt |
-v | 只读模式 | nano -v file.txt |
-x | 禁用帮助行 | nano -x file.txt |
-z | 启用暂停功能 | nano -z file.txt |
-k | 启用剪切功能 | nano -k file.txt |
-u | 保存时创建备份 | nano -u file.txt |
常用快捷键表格:
| 快捷键 | 功能 | 说明 |
|---|---|---|
Ctrl+G | 显示帮助 | 显示 nano 帮助信息 |
Ctrl+X | 退出 | 退出 nano 编辑器 |
Ctrl+O | 保存文件 | 保存当前文件 |
Ctrl+R | 插入文件 | 在光标位置插入其他文件 |
Ctrl+W | 搜索 | 在文件中搜索文本 |
Ctrl+\ | 替换 | 搜索并替换文本 |
Ctrl+K | 剪切行 | 剪切当前行 |
Ctrl+U | 粘贴 | 粘贴剪切的文本 |
Ctrl+6 | 标记 | 设置标记点 |
Alt+6 | 复制行 | 复制当前行 |
Ctrl+A | 到行首 | 移动光标到行首 |
Ctrl+E | 到行尾 | 移动光标到行尾 |
Ctrl+P | 上一行 | 移动到上一行 |
Ctrl+N | 下一行 | 移动到下一行 |
Ctrl+V | 下一页 | 向下翻页 |
Ctrl+Y | 上一页 | 向上翻页 |
Ctrl+_ | 跳转到行 | 跳转到指定行号 |
Ctrl+C | 显示位置 | 显示当前光标位置 |
Alt+U | 撤销 | 撤销上一步操作 |
Alt+E | 重做 | 重做上一步操作 |
Ctrl+T | 执行命令 | 执行外部命令 |
Alt+T | 拼写检查 | 检查拼写错误 |
Alt+R | 替换 | 替换文本 |
Alt+A | 标记文本 | 标记文本块 |
Alt+6 | 复制标记的文本 | 复制选中的文本 |
Alt+D | 删除标记的文本 | 删除选中的文本 |
状态栏说明:
| 状态栏显示 | 含义 |
|---|---|
File Name | 当前文件名 |
Modified | 文件已被修改 |
New Buffer | 新缓冲区 |
Read Only | 只读模式 |
DOS Format | DOS 格式文件 |
Mac Format | Mac 格式文件 |
指令输出示例:
$ nano newfile.txt
# 创建并编辑新文件
$ nano -w config.conf
# 编辑配置文件,禁用自动换行
$ nano -B important.txt
# 编辑重要文件,自动创建备份
$ nano -v readme.txt
# 以只读模式查看文件
$ nano -m script.sh
# 启用鼠标支持编辑脚本文件
nano 界面说明:
GNU nano 6.2 example.txt Modified
这是文件内容
可以在这里编辑文本
使用快捷键进行操作
^G 帮助 ^O 写入 ^R 插入文件 ^Y 上一页 ^K 剪切文本 ^C 位置
^X 退出 ^J 对齐 ^W 搜索 ^V 下一页 ^U 粘贴文本 ^T 执行
tar - 打包压缩
命令参数解释表格:
| 参数 | 说明 | 示例 |
|---|---|---|
-c | 创建归档 | tar -cf archive.tar dir |
-x | 解压归档 | tar -xf archive.tar |
-t | 列出归档内容 | tar -tf archive.tar |
-v | 显示详细过程 | tar -cvf archive.tar dir |
-f | 指定文件名 | tar -cf archive.tar dir |
-z | 使用 gzip 压缩 | tar -czf archive.tar.gz dir |
-j | 使用 bzip2 压缩 | tar -cjf archive.tar.bz2 dir |
-J | 使用 xz 压缩 | tar -cJf archive.tar.xz dir |
-C | 指定解压目录 | tar -xf archive.tar -C /tmp |
指令输出示例:
$ tar -czf backup.tar.gz documents/
documents/file1.txt
documents/file2.txt
documents/subdir/file3.txt
$ tar -tf backup.tar.gz
documents/
documents/file1.txt
documents/file2.txt
documents/subdir/
documents/subdir/file3.txt
$ tar -xzf backup.tar.gz -C /tmp/
# 解压到/tmp目录
gzip - 压缩文件
命令参数解释表格:
| 参数 | 说明 | 示例 |
|---|---|---|
-d | 解压缩 | gzip -d file.gz |
-v | 显示详细信息 | gzip -v file |
-k | 保留原文件 | gzip -k file |
-l | 显示压缩信息 | gzip -l file.gz |
-r | 递归处理目录 | gzip -r dir |
指令输出示例:
$ gzip -v large_file.txt
large_file.txt: 85.2% -- replaced with large_file.txt.gz
$ gzip -l file.gz
compressed uncompressed ratio uncompressed_name
1234 5678 78.3% file
$ gzip -d file.gz
# 解压文件
unzip - 解压 ZIP 文件
命令参数解释表格:
| 参数 | 说明 | 示例 |
|---|---|---|
-l | 列出压缩包内容 | unzip -l archive.zip |
-d | 指定解压目录 | unzip archive.zip -d /tmp |
-o | 覆盖已存在文件 | unzip -o archive.zip |
-q | 静默模式 | unzip -q archive.zip |
-v | 显示详细信息 | unzip -v archive.zip |
指令输出示例:
$ unzip -l archive.zip
Archive: archive.zip
Length Date Time Name
--------- ---------- ----- ----
123 2023-12-15 10:30 file1.txt
456 2023-12-15 10:31 file2.txt
--------- -------
579 2 files
$ unzip archive.zip -d /tmp/
Archive: archive.zip
inflating: /tmp/file1.txt
inflating: /tmp/file2.txt
chmod - 修改文件权限
命令参数解释表格:
| 参数 | 说明 | 示例 |
|---|---|---|
-R | 递归修改目录权限 | chmod -R 755 dir |
-v | 显示详细过程 | chmod -v 644 file |
-c | 只在有变化时显示 | chmod -c 755 file |
权限数字说明:
| 数字 | 权限 | 说明 |
|---|---|---|
0 | --- | 无权限 |
1 | --x | 执行权限 |
2 | -w- | 写权限 |
3 | -wx | 写和执行权限 |
4 | r-- | 读权限 |
5 | r-x | 读和执行权限 |
6 | rw- | 读和写权限 |
7 | rwx | 读、写和执行权限 |
指令输出示例:
$ chmod 755 script.sh
$ ls -l script.sh
-rwxr-xr-x 1 user group 1234 Dec 15 10:30 script.sh
$ chmod -R 644 documents/
$ ls -la documents/
total 8
drwxr-xr-x 2 user group 4096 Dec 15 10:30 .
drwxr-xr-x 3 user group 4096 Dec 15 10:30 ..
-rw-r--r-- 1 user group 25 Dec 15 10:30 file1.txt
-rw-r--r-- 1 user group 30 Dec 15 10:30 file2.txt
chown - 修改文件所有者
命令参数解释表格:
| 参数 | 说明 | 示例 |
|---|---|---|
-R | 递归修改目录 | chown -R user:group dir |
-v | 显示详细过程 | chown -v user file |
-c | 只在有变化时显示 | chown -c user file |
指令输出示例:
$ chown newuser:newgroup file.txt
$ ls -l file.txt
-rw-r--r-- 1 newuser newgroup 25 Dec 15 10:30 file.txt
$ chown -R user:group documents/
$ ls -la documents/
total 8
drwxr-xr-x 2 user group 4096 Dec 15 10:30 .
drwxr-xr-x 3 user group 4096 Dec 15 10:30 ..
-rw-r--r-- 1 user group 25 Dec 15 10:30 file1.txt
-rw-r--r-- 1 user group 30 Dec 15 10:30 file2.txt
