- Shell
1.1 常见的几种 Shell
除了系统默认的、最基本的 bash (Bourne Again Shell) 之外,还有以下几种常见的 Shell:
dash (Debian Almquist shell): 一种运行在内存受限环境中的轻量级 Shell(常用于 Ubuntu 等系统的底层脚本执行)。
ksh (Korn shell): 支持关联数组和浮点计算的高级编程特性。
tcsh: 一种将 C 语言中的一些元素引入到脚本中的 Shell,适合有 C 语言背景的用户。
zsh (Z shell): 极其强大,几乎拥有上面三种的所有特性,同时提供极其高级的编程语言特性和丰富的插件生态。
1.2 Linux 桌面环境
Linux 桌面环境其实就是提供了一个类似于 Windows 的图形化操作界面的工具。虽然它极大地方便了日常使用,但相对的,它作为一个独立运行的软件层,会额外消耗一部分系统物理资源(CPU、内存等)。因此在服务器环境下,通常只安装精简版的命令行界面 (CLI)。
- 初识 Shell 与终端交互
Shell 其实就是我们在拥有图形化操作界面之前一直使用的命令行(CLI),它只接受文本输入并输出文本结果。它是精简版 Linux 系统仅有的交互工具。
当然,除了纯命令行之外,我们还可以使用 Linux 图形化桌面环境中的终端仿真包 (Terminal Emulator),也可以叫做 GUI 终端。理解各种终端及其特性,能显著提高命令行的使用体验。
2.1 登录与显示
在精简版 Linux 系统启动后,只能看到纯文本的输入界面。
在 login: 提示符后输入用户 ID;在 Password: 后输入密码。
注意:输入密码时,出于安全考虑,界面上不会有任何字符显示(连星号都没有),输入完毕直接按回车即可。
2.2 终端界面设置 (setterm 命令)
我们可以通过命令来改变终端界面背景和文本的颜色。例如使用 inversescreen (反转屏幕) 特性:
开启反转:setterm -inversescreen on
关闭反转:setterm -inversescreen off
setterm 常用选项与参数表:
选项
可用参数
描述说明
-background
black, red, green, yellow, blue, magenta, cyan, white
更改终端的背景颜色
-foreground
同上(8 种基本颜色)
更改终端的前景(文字)颜色
-inversescreen
on 或 off
交换背景色和前景色
-reset
无
恢复终端的默认设置并清屏
-store
无
将当前的颜色等设置保存为默认值
- Gnome Terminal 终端管理 (快捷键与菜单)
Gnome Terminal 就是我们桌面环境下常说的终端窗口(类似于 Windows 里的 CMD/PowerShell)。熟练使用其菜单和快捷键可以大幅提升效率。
3.1 核心操作快捷键
新建与关闭
Shift+Ctrl+N: 在新的 Terminal 窗口中启动新 shell
Shift+Ctrl+T: 在现有窗口中新建一个标签页 (Tab) 启动 shell
Shift+Ctrl+W: 关闭当前所在标签页的会话
Shift+Ctrl+Q: 关闭整个 Terminal 窗口
复制与粘贴
Shift+Ctrl+C: 复制所选的文本 (注意:Linux 终端下普通的 Ctrl+C 是中断程序执行,复制必须加 Shift)
Shift+Ctrl+V: 将剪贴板文本粘贴到会话中
视图与搜索
F11: 切换全屏显示
Ctrl++ / Ctrl± / Ctrl+0: 放大字号 / 缩小字号 / 恢复默认字号
Shift+Ctrl+F: 打开 Find (查找) 窗口,搜索历史输出文本
3.2 标签页 (Tabs) 切换快捷键
Ctrl+PageDown: 切换到下一个标签页
Ctrl+PageUp: 切换到上一个标签页
Shift+Ctrl+PageUp: 将当前标签页向左移动
Shift+Ctrl+PageDown: 将当前标签页向右移动
- 基本的 Bash Shell 命令与帮助系统
启动 Linux 终端时,系统会自动启动 Bash shell 等待交互。
4.1 命令提示符解析
$ 是普通用户的 Shell 提示符,表示系统正在等待用户输入命令。如果提示符是 #,则代表当前是超级管理员 (root) 权限。
标准的提示符格式通常如下:
用户名@服务器名称:当前目录$
例如: user@ubuntu:~$
4.2 获取帮助手册 (man 与 --help)
大多数 Linux 发行版都自带详尽的在线手册。
man 命令 (Manual):
使用 man <命令名称> 可以查看详尽的手册页。手册页非常详细,适合在卡住时进行"快速参考"和查阅参数说明。阅读完毕后,按 q 键退出阅读模式。
--help 选项:
俗话说"遇事不决 --help"。大部分命令都支持在后面加上 --help 参数(如 ls --help),它会在终端直接输出精简版的使用说明和常用参数列表,比 man 更加直捷。
Linux man 手册的常用节名结构:
Name: 命令名称及简短功能介绍
Synopsis: 命令的标准语法格式结构
Description: 命令的详细一般性描述
Options: 可用参数及选项描述
Exit Status: 命令执行后的退出状态码提示
Return Value / Errors: 返回值与错误信息解释
Environment / Files: 相关的环境变量与涉及的文件
Examples: 具体的使用案例(最实用的一部分)
See Also: 相关的其他拓展命令推荐
- Linux 文件系统结构
当我们登录到 Linux 系统后,默认会处于当前用户的主目录 (Home Directory) 下。
5.1 虚拟目录与挂载点
Linux 的文件系统与 Windows 截然不同:
Windows: 基于物理驱动器划分盘符(C:, D:\ 等),每个盘符有独立的树状结构。路径使用反斜杠 \。
Linux: 所有文件和目录都被组织在单一的、倒置的树状结构中,最顶层叫做根目录 (/)。路径使用正斜杠 /。
挂载点 (Mount Point): Linux 会在虚拟目录中创建一些特殊的目录作为挂载点。当我们增加新的硬盘或 U 盘时,将新设备"挂载"到这些目录下,就可以像访问普通文件夹一样访问新硬盘的空间了。
5.2 常见的 Linux 系统目录 (FHS 标准)
/ : 根目录,一切目录的起点。
/bin : 存放最基础的用户级别二进制可执行文件(GNU 工具,如 ls, cp)。
/boot : 存放系统启动所需的核心文件和内核引导镜像。
/dev : 设备节点目录,Linux 下"一切皆文件",硬件设备也映射在这里。
/etc : 存放系统和绝大部分软件的配置文件。
/home : 普通用户的主目录集中地(如 /home/user1)。
/lib : 存放系统和应用程序依赖的共享库文件。
/media & /mnt : 用于挂载可移动存储设备(U盘、光驱等)的挂载点。
/opt : 可选目录,常用于安装第三方大型软件包。
/proc : 虚拟的进程目录,存放当前运行在内存中的系统和进程信息。
/root : 超级管理员 (root) 的专属主目录。
/sbin : 存放通常只有系统管理员才能运行的系统级二进制工具。
/tmp : 存放系统或程序的临时文件,重启后通常会被清空。
/usr : 存放大量用户级的应用程序、库、文档源码等(Unix System Resources)。
/var : 存放经常发生变化的文件,比如系统日志、数据库文件、邮件队列等。
- 目录导航与文件列表
6.1 切换目录 (cd)
cd (Change Directory) 是用来切换当前工作路径的命令。指定路径有两种方式:
绝对路径: 始终从根目录 / 出发,描述到达目标的最完整路径。
例如: cd /home/user/Project/
相对路径: 从"当前所在位置"出发,描述到达目标的相对位置。
假设当前在 /home/user/ 下,前往同一路径只需: cd Project/
特殊目录符号(极其常用):
. : 代表当前目录 (如 ./main.sh 表示执行当前目录下的脚本)
:
: 代表当前登录用户的家目录 (Home) (如 cd ~ 快速回家)
6.2 查看目录内容 (ls)
ls (List) 用于列出当前目录下的文件和子目录。默认按字母顺序输出。
常用参数组合:
ls: 基础列出。
ls -F: 在不同类型文件后追加标识符(目录后加 /,可执行文件加 *,软链接加 @)。
ls -a: 显示隐藏文件。Linux 中以 . 开头的文件是隐藏文件(常用于配置文件)。
ls -R: 递归显示。连同子目录中的所有内容一并列出。
ls -l: 显示长格式(详细信息),这是最常用的参数。输出信息包含 7 列:
文件类型与权限 (如 -rw-r--r--)
文件的硬链接总数
文件属主的用户名 (Owner)
文件属组的组名 (Group)
文件大小 (默认以字节为单位,可配合 -h 显示易读的 KB/MB)
文件的最后修改时间
文件名或目录名
小技巧: 参数可以合并使用,例如想要看所有文件(含隐藏)的详细信息,可以直接输入 ls -la 或者 ls -al。
- 过滤输出与处理文件
7.1 文件模糊搜索与过滤 (通配符)
当目录下文件过多,或者记不清文件全名时,可以使用通配符(Wildcards)进行文本匹配:
? : 严格匹配任意单个字符。
例: ls zeroPoin?.md 可匹配 zeroPoint.md
- : 匹配零个或多个任意字符。
例: ls zero* 可匹配所有以 zero 开头的文件
\] : 匹配指定范围内的单个字符。 例: ls zeroPoint\[a-z\].md 可匹配 zeroPointa.md 到 zeroPointz.md 7.2 基本文件操作命令 创建空白文件 / 更新时间戳 (touch) touch zeroPoint.md 如果文件不存在,会创建一个空白文件,并将其属主设为当前用户;如果文件已存在,则只更新该文件的修改时间。 复制文件 (cp) 语法为 cp \<源对象\> \<目标对象\>。 cp source.txt /home/user/target.txt 如果目标位置已有同名文件,系统可能会询问是否覆盖;可添加 -f (force) 参数强制覆盖,或 -i (interactive) 参数提示确认。 命令自动补全 (Tab 键) 在输入命令或路径时,如果想不起全拼,只需输入前几个字母然后连按两次 Tab 键,系统会自动补全剩余部分,或列出所有可能的匹配项。这是 Linux 命令行最提升幸福感的功能之一。 8. 链接文件 (软链接与硬链接) 链接文件是 Linux 文件系统的一大优势,允许我们在不同位置为同一份数据创建"副本"(访问入口),而无需实际占用双倍的磁盘空间。 8.1 符号链接 / 软链接 (Symbolic Link) 原理: 类似于 Windows 的"快捷方式"。系统会创建一个真实存在的新文件,但这个文件的内容仅仅是指向原始文件的路径引用。两者拥有不同的 inode (文件节点号)。 特点: 可以跨越不同的文件系统、不同的硬盘分区创建。如果原始文件被删除,软链接就会失效(变成死链接)。 创建命令 (必须使用 -s 参数,代表 symbolic): ln -s zeroPoint.md zeroPoint-sl.md 8.2 硬链接 (Hard Link) 原理: 在目录中创建一个新的虚拟文件名,直接指向原始文件所在的物理数据块 (inode)。从根本上说,硬链接和原文件是完全平等的、同一个文件的两个名字。 特点: 必须处于同一存储媒体 (同一个物理分区) 上,不能跨文件系统创建硬链接。 即使删除了原始文件名,只要还有一个硬链接存在,数据就不会丢失。 创建命令 (不加额外参数): ln zeroPoint.md zeroPoint-hl.md