Terminal
Terminals
也称 为命令行或控制台,使我们能够在计算机上完成和自动化任务,而无需图形用户界面。终端起源于 1950 年代到 1960 年代左右,从那时起就一直是所有操作系统的重要组成部分——从台式机到隐藏在云中的服务器,再到像 Raspberry PI Zero 这样的微型计算机,甚至手机。在大多数情况下,终端、命令行意味着同一件事。
面试中命令行通常特指类Unix系统,如Linux、macOS、Ubuntu等,这些系统与生产环境保持一致。
WSL
如果你是 Windows 10 版本 2004 及更高版本(内部版本 19041 及更高版本)或 Windows 11 ,推荐使用 WSL(Windows Subsystem for Linux)?
WSL的安装可以是通过命令在线安装,安装完成后,您需要为 Linux 环境创建一个用户名和密码。(Linux环境中密码不显示长度)
如果网络不畅,也可以让其他安装好的人,导出为文件,再导入即可。(记得索要root密码哦)
# 查看可用的Linux发行版列表
wsl --list --online
# 安装指定的Linux发行版
wsl --install -d <distro-name>
# 示例:wsl --install -d Ubuntu-24.04
# 安装默认的 Ubuntu Linux 发行版。
wsl --install
# 导出发行版
wsl --export <你的Ubuntu发行版名称> <导出的文件路径>.tar
# 示例:wsl --export Ubuntu-24.04 ubuntu-24.04-wsl-ros2.tar
# 从文件导入
wsl --import <新实例的名称> C:\<新实例的文件夹> <压缩包的完整路径>
# 示例:wsl --import Ubuntu-ROS2 C:\WSL_ROS2 D:\windows_app\systools\ubuntu-24.04-wsl-ros2.tar
# 列出已安装的发行版的名称、运行状态、wsl版本
wsl -l -v
# 启动指定wsl
wsl -d <新实例的名称>
# 示例:wsl -d Ubuntu-ROS2
# 设置默认发行版(配置后输入wsl命令即可进入)
wsl --set-default <distro-name>
Linux 内核衍生版本众多,譬如 ubuntu、debian、centos、fedora、archlinux 等。
不同版本之间存在差异,譬如 ubuntu 大版本号之外,小版本号也很重要,此外有时候版本号和代号会混用
网道 bash 教程是开源的 bash 文档,教科书式的篇章划分能帮助学习者系统的了解终端命令。
tldr是社区维护的命令行工具帮助页面合集,支持在线查询终端命令,有不同平台选择,支持不同语言显示
有趣的命令行 体验
终端娱乐命令
命令名称 | 安装命令 | 使用方法 | 功能说明 |
---|---|---|---|
hollywood | sudo apt-get install hollywood | hollywood | 让终端像好莱坞大片一样显示各种电脑参数 |
cowsay | sudo apt-get install cowsay | cowsay "消息内容" | 让一头牛说话,显示指定消息 |
fortune | sudo apt-get install fortunes | fortune | 显示随机名言、谚语或幽默语句,注意命令内加s |
lolcat | sudo apt-get install lolcat | 命令 | lolcat | 将文本输出为彩虹颜色 |
命令组合示例:fortune | cowsay | lolcat
sudo
:以超级用户身份执行命令( su 表示 super user(超级用户) do 表示 执行)
如果不希望每次都输入sudo
,可以切换到有权限的用户。
-
su 用户名
表示切换到该用户,如果不填用户名sudo su
则默认切换到root
-
管道符
|
将前一个命令的输出作为后一个命令的输入 ,示例command1 | command2
|
基本语法
命令格式
组成部分 | 格式 | 示例 | 说明 |
---|---|---|---|
基本格式 | command [ arg1 ... [ argN ]] | ls -l | command是命令,后面跟参数 |
短参数 | -参数 | ls -l | 便于手动输入 |
长参数 | --参数名 | ls --list | 用在脚本中,可读性更好 |
多行命令 | 命令 \ 续行内容 | echo foo \ bar | 使用反斜杠连接多行 |
命令分隔与组合
符号 | 功能 | 示例 | 说明 |
---|---|---|---|
; | 命令分隔符 | clear; ls | 顺序执行多个命令,不管前一个是否成功 |
&& | 逻辑与 | Command1 && Command2 | 第一个命令成功后才执行第二个 |
|| | 逻辑或 | Command1 || Command2 | 第一个命令失败后才执行第二个 |
空格处理规则
情况 | 处理方式 | 示例 | 说明 |
---|---|---|---|
参数分隔 | 用空格或Tab分隔 | echo foo bar | foo和bar被认为是两个参数 |
多余空格 | 自动忽略 | echo foo bar | 多个空格会被忽略为一个 |
路径含空格 | 使用引号保护 | "C:\Program Files" | 防止路径被错误分割 |
type命令
用法 | 命令 | 示例输出 | 说明 |
---|---|---|---|
基本用法 | type 命令名 | echo is a shell builtin | 判断命令类型 |
查看所有定义 | type -a 命令名 | 显示所有可能的定义 | 一个命令可能有多种实现 |
返回类型 | type -t 命令名 | file 、builtin 、alias 等 | 返回命令的具体类型 |
命令类型说明
类型 | 英文 | 说明 | 示例 |
---|---|---|---|
别名 | alias | 用户自定义的命令别名 | ll 通常是 ls -l 的别名 |
关键词 | keyword | Shell的保留关键字 | if 、for 、while |
函数 | function | 用户定义的Shell函数 | 自定义函数 |
内置命令 | builtin | Shell内置的命令 | echo 、cd 、pwd |
外部文件 | file | 独立的可执行文件 | /bin/ls 、/usr/bin/grep |
快捷键
常用快捷键
快捷键 | 功能 | 使用场景 |
---|---|---|
Ctrl + L | 清除屏幕并将当前行移到页面顶部 | 清理屏幕内容 |
Ctrl + C | 中止当前正在执行的命令 | 停止运行中的程序 |
Shift + PageUp | 向上滚动 | 查看历史输出 |
Shift + PageDown | 向下滚动 | 查看历史输出 |
Ctrl + U | 从光标位置删除到行首 | 快速删除命令开头部分 |
Ctrl + K | 从光标位置删除到行尾 | 快速删除命令结尾部分 |
Ctrl + W | 删除光标位置前一个单词 | 删除单个单词 |
Ctrl + D | 关闭 Shell 会话 | 退出终端 |
↑ 、↓ | 浏览已执行命令的历史记录 | 重复使用历史命令 |
自动补全功能
操作 | 按键 | 功能 | 示例 |
---|---|---|---|