文件管理与vim编辑器
文件管理与vim编辑器
写在前面:在Windows里,你习惯用鼠标双击文件夹、拖拽文件。而在Linux的世界里,键盘才是主角。文件管理命令就像你的"意念操控"——想在哪儿创建文件、移动文件、删除文件,只需敲几个字母。本章将带你掌握Linux文件操作的全部核心命令,并学会使用被誉为"编辑器之神"的vim。
2.1 目录操作命令:在Linux中"走路"
生活类比
把Linux目录系统想象成一栋大型商场:
pwd= "我在哪?"——查看当前所在楼层(目录)cd= "去那里"——走到另一个楼层或商铺ls= "看看周围有什么"——浏览当前楼层的店铺列表mkdir= "开一间新店"——创建新目录rm= "拆除"——删除文件或目录
2.1.1 pwd —— 我在哪?
# 显示当前工作目录的完整路径
pwd
# 输出示例:/home/teacher
# 显示物理路径(解析软链接后的真实路径)
pwd -P
2.1.2 cd —— 切换目录
# 进入指定目录
cd /etc # 进入/etc(绝对路径)
cd Documents # 进入当前目录下的Documents(相对路径)
# 特殊路径符号
cd ~ # 回到自己的家目录(~ 代表 /home/你的用户名)
cd - # 回到刚才所在的目录(像"撤销"按钮)
cd .. # 回到上一级目录(.. 代表父目录)
cd ../.. # 回到上两级目录
cd / # 进入根目录
cd # 不带参数,等于 cd ~
路径类比:
| 路径写法 | 类比 | 说明 |
|---|---|---|
/home/teacher/file.txt | "北京市海淀区XX路XX号" | 绝对路径,从根目录开始 |
Documents/file.txt | "隔壁房间里的文件" | 相对路径,从当前位置开始 |
../boss/report.xlsx | "楼上同事的报告" | 相对路径,先上一级再进入 |
2.1.3 ls —— 看看周围有什么
# 基本用法
ls # 列出当前目录内容
ls /etc # 列出指定目录内容
# 常用参数组合
ls -l # 长格式显示(详细信息)—— 最常用!
ls -la # 包含隐藏文件(以.开头的文件)
ls -lh # 文件大小以人类可读格式显示(KB/MB/GB)
ls -lt # 按修改时间排序(最新的在前)
ls -ltr # 按修改时间排序(最旧的在前,r=reverse)
ls -lS # 按文件大小排序(最大的在前)
ls -lR # 递归显示子目录
# 组合使用(实战常用)
ls -lah /var/log/ # 查看日志目录详情
ls -lt /home/ | head -10 # 看最近修改的10个文件
ls -l 输出解读:
-rw-r--r-- 1 teacher staff 4096 2024-03-15 10:30 homework.txt
│││ │││ │││ │ │ │ │ │ │ │
│││ │││ │││ │ │ │ │ │ │ └── 文件名
│││ │││ │││ │ │ │ │ │ └── 修改时间
│││ │││ │││ │ │ │ │ └── 文件大小(字节,加-h参数后显示KB/MB)
│││ │││ │││ │ │ │ └── 所属组
│││ │││ │││ │ │ └── 所属用户
│││ │││ │││ │ └── 硬链接数
│││ │││ │││ └── 权限:组内用户权限
│││ │││ │└── 权限:文件所有者权限
│││ │││ └── 权限:其他用户权限
│││ └── 文件类型:- 普通文件 / d 目录 / l 软链接 / c 字符设备 / b 块设备
文件类型速查:
| 首字符 | 类型 | 说明 |
|---|---|---|
- | 普通文件 | 文本文件、二进制文件等 |
d | 目录 | 文件夹 |
l | 软链接 | 类似Windows的快捷方式 |
c | 字符设备 | 终端、键盘等 |
b | 块设备 | 硬盘、U盘等 |
s | 套接字 | 进程间通信 |
p | 管道 | 进程间通信 |
2.1.4 mkdir —— 创建目录
# 创建单个目录
mkdir homework
# 创建多级嵌套目录(最常用)
mkdir -p /data/school/math/2024
# -p 参数:父目录不存在时自动创建,已存在时不报错
# 一次创建多个目录
mkdir dir1 dir2 dir3
# 创建目录并显示过程
mkdir -pv /project/src/main
# 输出:
# mkdir: 已创建目录 '/project'
# mkdir: 已创建目录 '/project/src'
# mkdir: 已创建目录 '/project/src/main'
2.1.5 rm —— 删除(危险命令!)
警告:Linux的
rm命令删除后不进入回收站,直接永久删除!请务必谨慎。
# 删除单个文件(会提示确认)
rm homework.txt
# 删除文件不提示(-f = force)
rm -f homework.txt
# 删除目录及其所有内容(-r = recursive)
rm -r old_project/
# 【危险】强制删除目录不提示
rm -rf old_project/
# 【极度危险】千万不要执行以下命令!
# rm -rf / ← 这会删除整个系统!!!
# rm -rf /* ← 效果同上!!!
安全使用建议:
# 技巧1:给rm加上交互确认(默认alias)
alias rm='rm -i'
# 技巧2:删除前先看看要删什么
ls old_project/ # 先确认内容
rm -r old_project/ # 再删除
# 技巧3:用trash-cli代替rm(移入回收站而非永久删除)
# Debian系安装:sudo apt install trash-cli
# RHEL系安装:sudo dnf install trash-cli
trash homework.txt # 移入回收站
trash-list # 查看回收站
trash-empty # 清空回收站
2.1.6 cp —— 复制
# 复制文件
cp source.txt destination.txt # 复制并重命名
cp source.txt /backup/ # 复制到指定目录
# 复制目录(必须加-r参数)
cp -r project/ /backup/project/ # 递归复制整个目录
# 保留文件属性复制(-a = archive,最推荐)
cp -a project/ /backup/project/ # 保留权限、时间戳、软链接等
# 覆盖前提示确认
cp -i source.txt destination.txt
# 显示复制过程
cp -rv project/ /backup/ # -v = verbose 详细输出
# 只复制比目标新的文件(增量备份)
cp -u source.txt destination.txt
2.1.7 mv —— 移动与重命名
# 重命名文件(源和目标在同一目录)
mv old_name.txt new_name.txt
# 移动文件到另一个目录
mv homework.txt /home/teacher/homework/
# 移动目录
mv project/ /data/projects/
# 覆盖前确认
mv -i source.txt /destination/
# 不覆盖已存在的文件
mv -n source.txt /destination/ # -n = no-clobber
想一想:
cp file.txt /backup/和mv file.txt /backup/执行完后,原位置的 file.txt 分别还存在吗?
2.1.8 find —— 文件搜索利器
类比:如果目录是一栋大楼,find就是保安——你可以让他按名字、大小、时间等各种条件搜索。
# 按文件名搜索(最常用)
find /home -name "homework*" # 搜索以homework开头的文件
find / -name "*.conf" -type f # 全盘搜索.conf配置文件
# 按文件类型搜索
find /var/log -type f -name "*.log" # 搜索日志文件
find /home -type d -name "backup*" # 搜索目录
# 按大小搜索
find / -size +100M # 搜索大于100MB的文件
find /home -size +10M -size -100M # 搜索10MB到100MB之间的文件
# 按修改时间搜索
find /var/log -mtime -1 # 最近1天内修改过的文件
find /home -mtime +30 # 30天前修改的文件
# 按权限搜索
find / -perm 777 -type f # 搜索777权限的文件(安全隐患!)
# 搜索后执行操作
find /tmp -type f -mtime +7 -delete # 删除/tmp下7天前的文件
find /var/log -name "*.gz" -exec ls -lh {} \; # 查看压缩日志详情
find 文件大小参数速查:
| 参数 | 含义 | 示例 |
|---|---|---|
c | 字节 | -size 100c (100字节) |
k | KB | -size 100k (100KB) |
M | MB | -size +50M (大于50MB) |
G | GB | -size +1G (大于1GB) |
2.1.9 locate —— 快速定位
# locate 基于预建数据库,速度极快但可能不够实时
locate nginx.conf # 搜索包含nginx.conf的路径
locate -i readme # 不区分大小写搜索
# 更新locate数据库(搜索不到新文件时使用)
sudo updatedb
find vs locate 对比:
| 特性 | find | locate |
|---|---|---|
| 搜索方式 | 实时扫描磁盘 | 查询预建数据库 |
| 搜索速度 | 较慢 | 极快 |
| 搜索准确性 | 完全准确 | 可能遗漏新文件 |
| 搜索条件 | 丰富(名称/大小/时间/权限) | 仅按文件名 |
| 安装 | 系统自带 | 可能需安装mlocate |
想一想:如果你需要找到系统中所有大于500MB的日志文件并删除30天前的,你会怎么写find命令?
2.2 文件查看命令
2.2.1 cat —— 显示文件全部内容
# 显示文件内容
cat /etc/hostname
cat /etc/os-release
# 显示行号
cat -n /etc/hosts
# 合并多个文件
cat file1.txt file2.txt > merged.txt
# 追加内容
cat >> notes.txt << EOF
这是追加的一行内容
第二行内容
EOF
2.2.2 head / tail —— 查看文件头尾
# 查看文件前10行(默认)
head /var/log/syslog
# 查看前20行
head -n 20 /var/log/syslog
# 查看文件最后10行(默认)
tail /var/log/syslog
# 查看最后50行
tail -n 50 /var/log/syslog
# 【超实用】实时跟踪日志输出(运维必备!)
tail -f /var/log/syslog
# 日志有更新时会自动显示,按Ctrl+C退出
# 同时跟踪多个日志
tail -f /var/log/syslog /var/log/auth.log
运维经验:排查问题时,先用
tail -f实时跟踪日志,然后重现问题,就能立刻看到报错信息。
2.2.3 less / more —— 分页浏览
# less:支持上下翻页,推荐!(按q退出)
less /var/log/syslog
# 空格=下一页, b=上一页, /=搜索, n=下一个, g=开头, G=末尾, q=退出
# more:只能向下翻页(较简单)
more /var/log/syslog # 空格=下一页,q=退出
2.2.4 wc —— 统计文件信息
# 统计行数、单词数、字节数
wc /etc/hosts
# 输出示例: 12 45 512 /etc/hosts
# 行 词 字节
# 只统计行数(最常用)
wc -l /etc/hosts
# 只统计单词数
wc -w essay.txt
# 只统计字节数
wc -c file.txt
# 实战:统计系统中有多少个用户
wc -l /etc/passwd
想一想:如果你有一个10GB的日志文件,想找到其中包含"ERROR"的行,你会用
cat还是grep?为什么?用less打开这个文件会不会很慢?
2.3 文件搜索进阶
2.3.1 grep —— 文本内容搜索(最强大工具之一)
类比:如果find是"按名字找人",那grep就是"按长相找人"——它搜索文件里面的内容。
# 基本搜索
grep "error" /var/log/syslog
grep -i "error" /var/log/syslog # 忽略大小写
grep -n "error" /var/log/syslog # 显示行号
# 递归搜索目录下所有文件(最常用!)
grep -rn "password" /etc/ # 搜索并显示行号
# 反向搜索(不包含关键词的行)
grep -v "debug" /var/log/syslog
# 使用正则表达式
grep "^root" /etc/passwd # 以root开头的行
# 显示匹配行的上下文
grep -B 3 "error" app.log # 前3行
grep -A 5 "error" app.log # 后5行
grep -C 2 "error" app.log # 前后各2行
# 管道组合(实战高频!)
ps aux | grep nginx # 查找nginx进程
ss -tlnp | grep :80 # 查看80端口
cat /etc/passwd | grep "/bin/bash" # 查找使用bash的用户
# 多关键词搜索
grep -E "error|warning|critical" /var/log/syslog
2.3.2 which / whereis / type —— 查找命令位置
# which:查找命令的可执行文件路径
which python3
# 输出:/usr/bin/python3
which vim
# 输出:/usr/bin/vim
# whereis:查找命令的二进制文件、源码和手册页
whereis nginx
# 输出:nginx: /usr/sbin/nginx /usr/share/man/man8/nginx.8.gz
whereis python3
# 输出:python3: /usr/bin/python3 /usr/lib/python3 /usr/share/man/man1/python3.1.gz
# type:最全面,显示命令的类型(内置/别名/外部程序)
type ls
# 输出:ls 是 `ls --color=auto' 的别名
type cd
# 输出:cd 是 shell 内嵌
type grep
# 输出:grep 是 /usr/bin/grep
三者对比:
| 命令 | 搜索范围 | 返回信息 | 适用场景 |
|---|---|---|---|
which | PATH环境变量 | 可执行文件路径 | 快速找到命令在哪 |
whereis | 系统标准位置 | 二进制+源码+手册 | 全面了解命令位置 |
type | shell层面 | 类型判断 | 判断是内建/别名/外部 |
2.4 文件权限查看
快速预览
# 查看文件权限
ls -l /etc/passwd
# 输出:-rw-r--r-- 1 root root 2048 Mar 15 10:30 /etc/passwd
# │││ │││ │││
# │││ │││ └── 其他用户:r--(只读)
# │││ └──── 所属组:r--(只读)
# └────── 文件所有者:rw-(读写)
# 查看目录权限
ls -ld /home/teacher/
# 输出:drwxr-x--- 5 teacher teacher 4096 Mar 15 10:30 /home/teacher/
# d│││ │││ │││
# ││││ │││ └── 其他用户:---(无任何权限)
# ││││ └──── 所属组:r-x(读+执行=可进入)
# │└────── 文件所有者:rwx(读写执行=完全控制)
# └── d表示目录
权限对照表:
| 权限 | 字母 | 数字 | 对文件的含义 | 对目录的含义 |
|---|---|---|---|---|
| 读 | r | 4 | 查看内容 | 列出目录内容(ls) |
| 写 | w | 2 | 修改内容 | 在目录中创建/删除文件 |
| 执行 | x | 1 | 运行程序 | 进入目录(cd) |
| 无 | - | 0 | 无权限 | 无权限 |
权限修改(chmod)和高级权限内容将在第三章"用户与权限管理"中详细讲解。
2.5 软硬链接
生活类比
- 硬链接:像给同一份文件"取了两个名字"——两个文件名指向磁盘上的同一块数据,删掉一个名字,另一个还能正常访问。
- 软链接(符号链接):像Windows的"快捷方式"——它只是一个"指路牌",指向真正的文件。如果把真正的文件删了,软链接就变成了"死链"。
创建链接
# 创建软链接(symbolic link)—— 最常用
ln -s /etc/nginx/nginx.conf /home/teacher/nginx_config_link
# -s 表示创建软链接
# 目标文件 链接文件(快捷方式的名字)
# 创建硬链接(hard link)
ln /data/report.txt /home/teacher/report_hardlink
# 查看链接关系
ls -l /home/teacher/nginx_config_link
# 输出:lrwxrwxrwx 1 teacher teacher 21 Mar 15 /home/teacher/nginx_config_link -> /etc/nginx/nginx.conf
# l 箭头指向目标文件
# 查看文件的所有硬链接
find / -samefile /data/report.txt 2>/dev/null
软硬链接对比表:
| 特性 | 硬链接 | 软链接 |
|---|---|---|
| 创建命令 | ln 源文件 链接名 | ln -s 源文件 链接名 |
| 本质 | 同一数据多个名字 | 指向目标的路径快捷方式 |
| 跨文件系统 | 不可以 | 可以 |
| 链接到目录 | 不允许 | 允许 |
| 源文件删除后 | 链接仍然有效 | 链接失效(变成死链) |
| inode编号 | 与源文件相同 | 独立的inode |
| 常用场景 | 数据备份防误删 | 配置文件快捷访问 |
# 实战:验证软硬链接区别
echo "Hello Linux" > original.txt # 创建原文件
ln original.txt hardlink.txt # 创建硬链接
ln -s original.txt softlink.txt # 创建软链接
# 查看inode编号
ls -li original.txt hardlink.txt softlink.txt
# hardlink.txt 和 original.txt 的inode编号相同
# softlink.txt 的inode编号不同
# 删除原文件
rm original.txt
# 结果
cat hardlink.txt # 正常显示 "Hello Linux"
cat softlink.txt # 报错:No such file or directory
想一想:如果你是一个系统管理员,需要让多个目录共享同一份配置文件,修改一份其他都同步更新,你会用硬链接还是软链接?为什么?
2.6 Vim编辑器:编辑器之神
为什么学Vim?
在服务器上没有图形界面,当你需要修改配置文件时,vi/vim是你最可靠的伙伴。它就像"瑞士军刀中的瑞士军刀"——看起来朴素,但功能极其强大。
2.6.1 Vim的三种模式
类比:把vim想象成一个有三档变速的自行车。
- 命令模式(默认档):浏览、删除、复制、粘贴——就像"阅读模式"
- 输入模式(编辑档):打字输入内容——就像"写作模式"
- 末行模式(指令档):执行保存、退出、搜索替换等高级命令——就像"管理模式"
┌──────────┐
i │ │ Esc
┌──────→│ 输入模式 │──→┐
│ │ (编辑档) │ │
│ └──────────┘ │
│ ↓
┌─┴────────┐ ┌──────────┐
│ 命令模式 │←──Esc──│ 末行模式 │
│ (默认档) │── : ──→│ (指令档) │
└──────────┘ └──────────┘
2.6.2 基本操作
# 启动vim
vim filename # 打开或创建文件
vim +100 filename # 打开文件并跳到第100行
vim -R filename # 只读模式打开
命令模式 —— 光标移动:
| 按键 | 功能 |
|---|---|
h j k l | 左/下/上/右移动 |
0 / $ | 跳到行首 / 行尾 |
w / b | 下一个单词 / 上一个单词 |
gg / G | 跳到文件开头 / 末尾 |
:n 或 nG | 跳到第n行(如:50) |
Ctrl+f / Ctrl+b | 向下翻页 / 向上翻页 |
命令模式 —— 进入输入模式:
| 按键 | 功能 |
|---|---|
i / a | 在光标前 / 后开始输入 |
I / A | 在行首 / 行尾开始输入 |
o / O | 在下方 / 上方新建一行并输入 |
2.6.3 常用编辑操作(命令模式)
| 按键 | 功能 | 按键 | 功能 |
|---|---|---|---|
x | 删除光标字符 | yy | 复制当前行 |
dd | 删除(剪切)当前行 | 3yy | 复制3行 |
3dd | 删除3行 | yw | 复制一个单词 |
dG | 从当前行删到文件末尾 | p | 粘贴到光标下方/后方 |
dw | 删除一个单词 | P | 粘贴到光标上方/前方 |
d$ | 从光标删到行尾 | u | 撤销(undo) |
Ctrl+r | 重做(redo) | ||
. | 重复上一个操作 |
实战技巧:在行首输入
5.可以重复上一个操作5次。比如你删除了一行,然后按5.就会再删除5行。
2.6.4 末行模式操作
输入 : 进入末行模式:
保存与退出:
| 命令 | 功能 | 命令 | 功能 |
|---|---|---|---|
:w | 保存 | :q | 退出 |
:wq / :x | 保存并退出 | :q! | 强制退出不保存 |
:w filename | 另存为 | :wq! | 强制保存退出 |
搜索:
| 命令 | 功能 |
|---|---|
/关键词 | 向下搜索 |
?关键词 | 向上搜索 |
n / N | 下一个 / 上一个匹配 |
搜索替换(超实用!):
" 替换当前行所有old为new
:s/old/new/g
" 替换全文所有old为new(最常用!)
:%s/old/new/g
" 替换第10到20行
:10,20s/old/new/g
" 替换时确认每一个(安全模式)
:%s/old/new/gc
" 实战:把nginx配置中所有80端口改为8080
:%s/listen 80/listen 8080/g
其他末行命令:
set nu " 显示行号
split " 上下分屏
vsplit " 左右分屏
:!ls " 执行shell命令
syntax on " 语法高亮
:100 " 跳到第100行
2.6.5 多文件编辑速查
# 同时打开多个文件
vim file1.txt file2.txt # :n下一个, :N上一个
# 分屏编辑
:split file2.txt # 上下分屏
:vsplit file2.txt # 左右分屏
Ctrl+w w # 在分屏间切换
# 对比两个文件差异
vim -d file1.conf file2.conf # diff模式,高亮差异
2.6.6 .vimrc 配置文件
类比:.vimrc就像vim的"装修方案"——设置好后,每次打开vim都会自动应用。
# .vimrc文件位置:~/.vimrc(每个用户自己的配置)
# 或 /etc/vimrc(全局配置)
vim ~/.vimrc
推荐的.vimrc配置:
" === 基础设置 ===
set nocompatible " 关闭vi兼容模式
set encoding=utf-8 " UTF-8编码
" === 显示设置 ===
set number " 显示行号
set cursorline " 高亮当前行
set showmatch " 高亮匹配括号
syntax on " 开启语法高亮
" === 缩进设置 ===
set tabstop=4 " Tab键宽度为4个空格
set shiftwidth=4 " 自动缩进宽度
set expandtab " Tab转为空格
set autoindent " 自动缩进
" === 搜索设置 ===
set hlsearch " 搜索高亮
set incsearch " 输入时实时搜索
set ignorecase " 搜索忽略大小写
" === 实用设置 ===
set wildmenu " 命令行补全
set ruler " 显示光标位置
set mouse=a " 启用鼠标
" === 快捷键 ===
inoremap jj <Esc> " jj退出输入模式(比Esc方便)
nnoremap <F5> :!python3 %<CR> " F5运行Python脚本
小贴士:修改
.vimrc后,在vim中执行:source ~/.vimrc即可生效,无需重启。
想一想:为什么vim默认使用命令模式而不是输入模式?对于一个需要大量编辑文本的运维工程师来说,这种设计有什么好处?(提示:想想你编辑配置文件时,是浏览/搜索的时间多还是打字的时间多?)
本章小结
| 知识点 | 核心命令 |
|---|---|
| 查看当前目录 | pwd |
| 切换目录 | cd, cd ~, cd .., cd - |
| 列出文件 | ls -lah, ls -lt |
| 创建目录 | mkdir -p |
| 删除 | rm -rf(谨慎使用!) |
| 复制 | cp -a, cp -r |
| 移动/重命名 | mv |
| 搜索文件 | find(按条件), locate(按名称) |
| 查看文件 | cat, head, tail -f, less |
| 内容搜索 | grep -rn |
| 统计 | wc -l |
| 查找命令 | which, whereis, type |
| 链接 | ln -s(软链接), ln(硬链接) |
| vim模式 | 命令模式 / 输入模式 / 末行模式 |
| vim编辑 | i输入, yy复制, dd删除, p粘贴, u撤销 |
| vim替换 | :%s/old/new/g |
运维常用命令精选
以下命令是运维工程师日常文件操作的"高频词",建议反复练习直到形成肌肉记忆。
日志分析三剑客
# 1. 查看最近50行错误日志
tail -n 50 /var/log/syslog | grep -i "error"
# 2. 统计Nginx访问日志中各IP的访问次数(Top 10)
awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | head -10
# 3. 实时跟踪多个日志文件
tail -f /var/log/syslog /var/log/auth.log /var/log/nginx/error.log
文件批量操作
# 批量重命名:给所有.txt文件加上日期后缀
for f in *.txt; do mv "$f" "${f%.txt}_$(date +%Y%m%d).txt"; done
# 批量查找并替换文件内容
sed -i 's/old_domain.com/new_domain.com/g' /etc/nginx/sites-available/*
# 快速创建一个100MB的测试文件
dd if=/dev/zero of=testfile bs=1M count=100
目录空间分析
# 查看各目录占用空间
du -sh /var/log/*
# 找出最大的10个目录
du -sh /* 2>/dev/null | sort -rh | head -10
# 查看当前目录树结构
tree -L 2 /etc/nginx/
# 安装tree:sudo apt install tree (Debian系) / sudo dnf install tree (RHEL系)
Vim效率提升技巧
" 1. 录制宏(批量操作利器)
" qa → 开始录制 → 执行操作 → q停止 → @a执行 → 10@a执行10次
" 2. 全局命令(对匹配行执行操作)
:g/error/d " 删除所有包含error的行
:g/^$/d " 删除所有空行
:v/pattern/d " 删除不包含pattern的行
" 3. 可视模式批量编辑
" Ctrl+v → 列选择 → 按I → 输入内容 → Esc(每行同一位置插入)
趣味命令专栏
# 1. 用tree命令看目录树——一目了然
# 安装:sudo apt install tree (Debian系) / sudo dnf install tree (RHEL系)
tree /etc/nginx -L 2
# 2. 用sl开火车(当有人打错ls时...)
sl # 一辆蒸汽火车从屏幕上开过!
# 3. 用figlet生成ASCII艺术字
figlet "Hello Linux"
# 4. 用cal看日历(数学老师排课用)
cal # 当月日历
cal 2024 # 2024年全年日历
# 5. 终端里的矩阵雨(致敬黑客帝国)
cmatrix # 按q退出
# 6. 统计你的Linux"工龄"
history | wc -l # 看看你已经敲了多少条命令!
本章思考题:
- 写出查找
/var/log目录下所有大于10MB、且最近7天内修改过的日志文件的命令。- 用vim打开一个文件,如何快速把所有"192.168.1.100"替换为"192.168.1.200"?
- 解释软链接和硬链接的区别,并各举一个实际使用场景。
- 如果不小心执行了
rm -rf删除了重要文件,在Linux中有没有办法恢复?为什么?