Skip to main content

终端与命令基础

一、命令的组成​

命令  [选项]  [参数]

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 ## 结束会话

只需要最常用的三个动作:新建、分离、重新接入,其余用到再查。