终端与命令基础
一、命令的组成
命令 [选项] [参数]
ls -lh /var/log
│ │ └── 参数:操作对象
│ └─────────── 选项:调整行为
└────────────────── 命令:程序名
- 短选项:
-l,可合并,-lh等于-l -h - 长选项:
--help、--color=auto - 选项和参数顺序一般无所谓,但
-R这类开关建议写在前面
ls -l /var/log ## 列出 /var/log 的详细信息
tail -n 50 -f app.log ## 显示最后 50 行并持续跟踪
cp -r demo /tmp/ ## 递归复制
二、查看帮助
ls --help ## 快速看用法(绝大多数命令都支持)
man ls ## 完整手册,q 退出,/关键字 搜索
man -k passwd ## 按关键字搜手册,找“这是哪个命令”
apropos ssh ## 同上
help cd ## 查看 shell 内置命令(cd、echo、alias 等)
info ls ## 另一种手册格式
记不住选项时优先
--help,它比man短,够用。
三、Tab 补全
输入到一半按 Tab,系统补全命令名或路径;连按两次 Tab 列出所有候选。
cd /var/lo<Tab> ## 补全为 /var/log/
systemctl restart ngi<Tab> ## 补全为 systemctl restart nginx
- 命令名补全基于
PATH - 路径补全基于当前目录
- 补不出来通常是拼错、路径不对或没权限
四、历史命令
history ## 列出历史命令(带序号)
history 20 ## 最近 20 条
!100 ## 重新执行第 100 条
!! ## 重新执行上一条
sudo !! ## 给上一条命令加上 sudo 再执行
!ssh ## 执行最近一条以 ssh 开头的命令
!$ ## 上一条命令的最后一个参数
Ctrl + R ## 反向搜索历史,输入关键字即可
示例:先建目录再进去,不用重复输路径
mkdir -p /data/app/logs
cd !$
五、常用快捷键
| 快捷键 | 作用 |
|---|---|
Ctrl + C | 中断当前命令 |
Ctrl + D | 结束输入 / 退出当前 shell |
Ctrl + Z | 挂起到后台(fg 恢复,bg 转后台运行) |
Ctrl + L | 清屏,等于 clear |
Ctrl + A | 光标移到行首 |
Ctrl + E | 光标移到行尾 |
Ctrl + U | 删除光标前全部内容 |
Ctrl + K | 删除光标后全部内容 |
Ctrl + W | 删除光标前一个单词 |
Ctrl + R | 搜索历史命令 |
Ctrl + Shift + C/V | 终端里复制 / 粘贴 |
六、别名 alias
alias ## 查看已定义的别名
alias ll='ls -alh' ## 定义别名,仅当前会话有效
alias grep='grep --color=auto'
unalias ll ## 取消别名
永久生效写进 ~/.bashrc,然后 source ~/.bashrc:
echo "alias ll='ls -alh'" >> ~/.bashrc
source ~/.bashrc
七、通配符与引号
通配符
| 写法 | 匹配 |
|---|---|
* | 任意多个字符(含 0 个) |
? | 任意一个字符 |
[abc] | a、b、c 中任一个 |
[0-9] | 一个数字 |
{a,b} | 展开为 a 和 b(花括号展开,不是通配) |
ls *.log ## 所有 .log 文件
ls file?.txt ## file1.txt、filea.txt
rm -f app-{1,2,3}.log ## 展开为 app-1.log app-2.log app-3.log
cp /data/{a,b}.txt /tmp/ ## 一次复制两个文件
引号
| 写法 | 含义 |
|---|---|
'单引号' | 原样输出,变量和通配符都不解析 |
"双引号" | 解析变量、命令替换,但保留空格 |
`命令` | 命令替换,执行结果替换到当前位置 |
$(命令) | 同上,推荐写法,可嵌套 |
\ | 转义下一个字符 |
echo '$HOME' ## 输出 $HOME
echo "$HOME" ## 输出 /root
echo "今天是 $(date +%F)"
touch "my file.txt" ## 文件名带空格要加引号
八、命令来自哪里
type ls ## 是别名、内置命令还是外部程序
which python3 ## 可执行文件路径
whereis nginx ## 程序、源码、手册位置
command not found时先which看有没有;没有就装,装了还找不到就查PATH。
九、一次执行多条命令
cd /tmp; ls ## 用 ; 顺序执行,前一条失败也继续
make && make install ## 前一条成功才执行后一条
test -f a.txt || touch a.txt ## 前一条失败才执行后一条
十、清屏与退出
clear ## 清屏,等价于 Ctrl+L
exit ## 退出当前 shell / SSH 连接
logout ## 退出登录 shell
Ctrl + D ## 同样可以退出
十一、保持会话:tmux(可选)
SSH 断线后命令被中断很常见,用 tmux 把会话放在服务器上:
tmux new -s work ## 新建名为 work 的会话
Ctrl + B 然后按 D ## 分离会话,命令继续在后台跑
tmux ls ## 列出会话
tmux attach -t work ## 重新接入
tmux kill-session -t work ## 结束会话
只需要最常用的三个动作:新建、分离、重新接入,其余用到再查。