第1步:终端里的快捷键(手不离键盘,效率翻倍)
1.1Ctrl + R—— 搜索你敲过的历史命令
作用:不用往上翻半天,输入几个关键词就能找回之前敲过的长命令。
为什么用:你三天前敲过一条很长的命令,比如ssh root@192.168.1.100 -p 2222,想再用一次但记不全了,Ctrl + R帮你自动补全
怎么用:
按
Ctrl + R,终端出现(reverse-i-search)'':输入关键词,比如
ssh终端会自动显示出你最近敲过的包含
ssh的命令如果不对,再按一次
Ctrl + R继续往前搜找到后,按回车直接执行
1.2Ctrl + A和Ctrl + E—— 光标跳到行首/行尾
作用:不用按左/右方向键慢慢挪,一键跳头跳尾。
为什么用:你敲了一长串命令,发现开头写错了,比如sdu apt update应该是sudo apt update,用Ctrl + A立刻跳到行首去改
怎么用:
Ctrl + A:光标跳到行首Ctrl + E:光标跳到行尾
1.3Ctrl + W和Ctrl + U—— 批量删除
作用:不用按着Backspace半天,一次删一个单词或整行。
为什么用:你敲了一串参数,发现前面某个参数错了,想快速删掉重新打。
怎么用:
Ctrl + W:删除光标前面的一个单词(单词之间用空格分隔)Ctrl + U:删除光标前面的整行
1.4!!和!$—— 偷懒神器
作用:少打字,复用上一条命令的内容。
为什么用:你敲了apt install nginx,提示权限不够,需要加sudo。敲sudo !!就自动把上一条命令补在后面
!!:上一条完整命令!$:上一条命令的最后一个参数
第2步:管道|和重定向>>>—— 命令的组合技
2.1 管道|:把左边命令的结果交给右边命令处理
作用:把多个小命令串起来,完成复杂任务。
为什么用:你想在10000行日志里找出包含“error”的行,然后分页查看。用|把grep和less连起来。
基础理解:
大多数命令只做一件事
管道就像工厂的传送带,把上一个工序的产品传给下一个工序
2.2 重定向>和>>:把屏幕输出的内容存到文件里
作用:把本该显示在屏幕上的文字,保存到磁盘文件,方便以后查看或发给别人。
为什么用:你运行一个程序输出大量日志,想在关掉终端后还能看,或者想用邮件发给别人。
怎么用:
>:覆盖写入(文件不存在就新建,存在就清空原内容再写)>>:追加写入(保留原内容,在末尾添加新内容)
第3步:grep—— 文本搜索神器
3.1 基础搜索
作用:在文件(或命令输出)中快速找到包含指定关键词的行
为什么用:你有一个1000行的配置文件,想知道哪一行写了Port 22
基本用法:grep "关键词" 文件名
3.2 常用参数
| 参数 | 作用 | 示例 |
|---|---|---|
-i | 忽略大小写 | grep -i error log.txt |
-n | 显示行号 | grep -n Port sshd_config |
-v | 反向匹配(不包含) | grep -v debug log.txt |
-r | 递归搜索目录 | grep -r "TODO" ./src/ |
-c | 只统计匹配行数 | grep -c error log.txt |
-l | 只显示包含匹配项的文件名 | grep -l "error" *.log |
第4步:awk和sed—— 文本处理两兄弟(新手只记最常用的1-2种用法)
4.1awk:擅长分列
作用:把一行文字按分隔符切成多列,然后只取你想要的列。
为什么用:/etc/passwd文件每一行是一个用户信息,用冒号分成7段。你想只看第1段(用户名)。
基本用法:awk -F'分隔符' '{print $第几列}'
-F指定分隔符(默认是空格)$1第一列,$2第二列,……$0整行
4.2sed:擅长全局替换
作用:把文件里的某段文字全部替换成另一段。
为什么用:你有一个配置文件,想把所有的192.168.1.1改成10.0.0.1
基本用法:sed 's/旧内容/新内容/g' 文件名
s表示替换(substitute)g表示一行内所有匹配都换(global)
第5步:后台运行&和nohup—— 关掉终端也不怕
5.1&:让命令在后台跑
作用:你敲了一条命令,不希望它占着终端(防止终端卡住),让它去后台执行,终端还能继续敲其他命令。
为什么用:你运行一个长时间的任务(比如压缩大文件、训练模型),不想干等着。
怎么用:命令末尾加&
你会看到类似[1] 12345,12345就是进程ID(PID)
5.2jobs/fg/bg:管理后台任务
jobs # 查看当前终端里有哪些后台任务
fg %1 # 把任务1调回前台(让它占着终端)
bg %1 # 把一个暂停的任务放到后台继续
5.3nohup:退出终端后进程也不挂
问题:用&后台运行的程序,当你关闭终端窗口时,它也会被杀死。
解决办法:在命令前加nohup,再加&
nohup的输出会自动保存到nohup.out文件
之后你可以关掉终端,进程依然在跑。第二天回来cat output.log看结果。
6.1top:实时任务管理器
作用:显示当前正在运行的进程,以及CPU、内存占用率。
为什么用:你的电脑突然变卡了,想知道是哪个程序吃了CPU。
怎么用:top
进入top界面后:
按
P:按CPU使用率排序(大写P)按
M:按内存使用率排序按
q:退出
更好用的替代版:htop(需要安装,支持鼠标)
6.2free -h:看内存还剩多少
free -h
-h= human-readable,显示 GB/MB 而不是字节。
6.3df -h:看磁盘还剩多少
df -h
6.4du -sh *:找大文件
作用:查看当前目录下,每个子目录或文件占了多少空间。
为什么用:磁盘满了,想知道哪个文件夹最大。
# 当前目录下每个子目录的大小
du -sh *
# 根目录下各文件夹大小(2>/dev/null 忽略权限警告)
sudo du -sh /* 2>/dev/null | sort -h
# sort -h 按人类易读的大小排序
6.5 查看端口占用
作用:你想启动一个服务(比如 nginx 默认 80 端口),发现端口被占用了,想知道是哪个程序占的。
# 查看谁用了 80 端口(需要 sudo 才能看到进程名)
sudo netstat -tunlp | grep :80
# 或者用 lsof(更直观)
sudo lsof -i :80
第7步:软件安装与换源 —— 让下载速度起飞
7.1 为什么换源?
Linux 的软件仓库(源)默认在国外,国内下载特别慢。换成阿里云、清华的源,速度能到 10MB/s。
7.2 Ubuntu / Kali 换阿里源
# 1. 备份原来的源文件(好习惯)
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
# 2. 用 sed 命令替换成阿里云源(这里以 Ubuntu 22.04 为例,其他版本改 jammy 为对应版本名)
sudo sed -i 's/archive.ubuntu.com/mirrors.aliyun.com/g' /etc/apt/sources.list
# 3. 更新软件列表
sudo apt update
# 4. 升级所有软件(可选)
sudo apt upgrade -y
7.3 CentOS 7 换阿里源
# 1. 备份
sudo cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak
# 2. 下载阿里云提供的 repo 文件
sudo curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
# 3. 清除缓存并生成新缓存
sudo yum clean all
sudo yum makecache
第8步:别名alias—— 懒人必备
作用:给长命令起一个短名字。
为什么用:你经常敲ls -l --color=auto,太长了,想敲ll就搞定。
怎么用:
# 临时别名(关掉终端就失效)
alias ll='ls -alF'
alias gs='git status'
alias myip='curl -s ip.sb'
# 试试
ll
myip
永久生效:把 alias 写入~/.bashrc文件。
echo "alias ll='ls -alF'" >> ~/.bashrc
echo "alias update='sudo apt update && sudo apt upgrade -y'" >> ~/.bashrc
source ~/.bashrc # 让配置立刻生效
第9步:计划任务cron—— 让电脑自动干活
作用:设定时间自动执行命令,比如每天凌晨备份数据库。
为什么用:你不想每天早上爬起来手动备份。
9.1 编辑自己的定时任务
crontab -e
第一次会让你选编辑器,选nano(最简单)。
9.2 格式说明
分 时 日 月 周 命令
- 分:0-59
- 时:0-23
- 日:1-31
- 月:1-12
- 周:0-7(0和7都代表周日)
9.3 常见示例
# 每天凌晨2点执行备份脚本
0 2 * * * /home/user/backup.sh
# 每5分钟检查一下服务是否运行
*/5 * * * * /home/user/check.sh
# 每周一上午9点发周报
0 9 * * 1 /home/user/weekly_report.sh
# 每月1号凌晨3点清理临时文件
0 3 1 * * rm -rf /tmp/*
9.4 查看和删除
crontab -l # 列出当前所有定时任务
crontab -r # 删除所有定时任务(小心!)
第10步:远程传文件scp—— 告别 U 盘
作用:在 Linux 服务器和本地电脑之间安全地复制文件(基于 SSH)。
为什么用:你有一个虚拟机/云服务器,想把本地的文件传上去,或者下载下来。
基本语法:
# 本地上传 -> 远程
scp 本地文件 用户名@远程IP:远程路径
# 远程下载 -> 本地
scp 用户名@远程IP:远程文件 本地路径
最后:学习路线建议
学到这里,你已经不是小白了。接下来可以按顺序尝试:
把常用命令挂成 alias,写进
~/.bashrc自己写一个简单的备份脚本(比如备份家目录),用
cron每天自动跑学会用
grep+awk分析日志,比如统计访问量最高的 IP搭建一个 Web 服务器(nginx 或 apache),理解端口和服务
尝试 SSH 免密登录(生成密钥对
ssh-keygen,然后ssh-copy-id)