尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

RH124第二章访问命令行:终端、Shell与命令结构全解析

RH124第二章访问命令行:终端、Shell与命令结构全解析 1. 为什么每个RH124学习者都绕不开命令行这一章RH124Red Hat System Administration I是红帽认证体系里最基础也是最重要的一门课专门面向刚接触Linux系统管理的初学者。很多人觉得第二章访问命令行太简单——无非就是打开终端敲几个命令而已但实际带过几次学员之后我发现恰恰是这一章没吃透的人到了后面学文件权限、进程管理、存储配置时会反复卡壳。原因很简单整个Linux系统管理的内核就是命令行图形界面只是外壳你不把壳底下的交互逻辑搞清楚后面所有操作都像在沙地上盖楼。这一章解决的核心问题有三个第一命令行到底是什么、它和图形界面有什么本质区别第二如何在Linux系统里打开一个可用的命令行环境第三怎样高效地执行命令、查看历史、编辑命令行让操作从能敲变成会敲。对于准备考RHCSA红帽认证系统管理员的人来说这一章是后续所有章节的地基对于只是工作中偶尔需要碰Linux的运维、开发、测试人员来说这一章能帮你摆脱只会用鼠标点的困境真正进入Linux的思维方式。我见过不少人跳过这一章直接去学文件操作结果连命令行的基本编辑快捷键都不知道敲错一个字符就整行重输效率低得让人着急。所以这篇文章我不打算照本宣科地复述教材目录而是把命令行访问这件事拆开揉碎结合我自己在真实环境里的使用习惯和踩坑经验讲清楚概念背后的逻辑再给你一套可以立刻上手练习的路径。2. 图形界面与命令行不是同一件事的两种做法2.1 终端、Shell、命令行到底分别指什么初学者最容易混淆的就是这三个词终端、Shell、命令行。教材上可能分开讲但很多人看完了还是搞不清自己打开的那个黑窗口到底叫什么。用大白话说终端是一个程序它的职责是给你提供一个可以输入文字、显示输出的窗口界面Shell是运行在终端里面的解释器它读取你输入的命令负责调用操作系统去执行而命令行这个词通常指的是你在Shell里输入命令这种交互方式。在红帽的图形化桌面环境GNOME里你通过Activities或者右键桌面选择Open Terminal打开的那个窗口就是一个终端模拟器默认跑的是Bash这个Shell。如果你在文本界面按CtrlAltF2切换到tty终端那里面同样是终端加Shell只是没有图形外壳速度更快资源占用更少。RHELRed Hat Enterprise Linux的默认Shell从很早以前就是BashBourne Again Shell它在兼容传统Bourne Shell语法的基础上增加了历史记录、命令补全、作业控制这些现代特性。你在RH124第二章里学的所有命令交互技巧绝大多数都是Bash提供的不是Linux内核自带的。理解这一层区别很重要因为如果你以后切到别的工作环境比如Solaris的默认Shell可能是kshAIX环境里有人用csh你会发现历史命令的回看方式和补全行为都不一样那时候你就知道问题出在Shell而不是系统上。2.2 为什么系统管理要强调命令行而非图形工具这里必须说清楚一个很多新手不愿接受的事实红帽官方支持的服务器默认安装往往根本不安装图形桌面。你考RHCSA时题目要求在什么环境下操作基本就是SSH远程命令行环境。原因很实际服务器追求稳定和资源效率图形桌面会占用大量内存和CPU还要处理显卡驱动这类跟业务毫无关系的复杂性。图形界面里的同一个操作不同菜单层级、不同对话框位置会随版本变化而命令行接口在十年间几乎保持不变。你今天学的命令放到五年前的老系统上照样能用。命令行天然适合脚本化和自动化。你手动执行的每一条命令都可以写进脚本重复执行图形界面做不到这一点。打个比方图形界面像自动挡汽车好上手但你不能精细控制换挡时机命令行像手动挡学习曲线陡一点但一旦熟练你能精确控制每一个操作。服务器管理员的工作本质上是稳定、高效、可重复地管理系统这跟手动挡的掌控感是一路的。2.3 RHEL里的虚拟终端与图形终端的区别在RHEL上你至少有三种途径进入命令行环境它们各自的适用场景不同第一种是图形桌面里的终端模拟器GNOME Terminal适合日常学习、试验命令的场景可以方便地复制粘贴还能开多个标签页。第二种是按CtrlAltF3到F6切入的纯文本虚拟终端系统默认提供多个tty当你图形桌面卡死或者想在一个干净环境里操作时很有用按CtrlAltF2可以回到图形登录界面不同RHEL版本对应的tty编号可能不同实际操作时按CtrlAltF1到F6逐个试一下就行。第三种是远程SSH登录这是生产环境里最常用的方式你管理一台服务器时通常不会坐在它面前而是通过网络用SSH连进去。我个人建议初学者在练习第二章内容时优先在GNOME Terminal里操作因为你可以随时查资料、复制命令、对比输出效率高很多。等基本命令熟练后再去纯虚拟终端和SSH环境里感受一下没有鼠标辅助的操作节奏这才算真正把命令行访问这条路走通了。3. Shell提示符与命令结构的底层逻辑3.1 提示符里藏着哪些信息打开终端后你会看到类似下面这样一行提示符[studentlocalhost ~]$这个提示符不是随便画的每个部分都有含义。方括号里第一段student是当前登录用户名后面跟着的是主机名就是这台机器在网络里的名字。接下来~表示当前所在目录~是当前用户主目录home directory的简写。最后的$表示当前是一个普通用户身份的Shell如果你是root用户通常这里的符号会变成#。我自己刚学的时候总觉得提示符太吵想过把它改简单一点后来发现它在排查问题时非常有用。比如你同时开了好几个终端连到不同服务器每台机器的主机名都显示在提示符里就能避免在错误的机器上执行命令。还有一次我远程帮同事排查问题他在自己终端里敲命令截图发过来我一眼就看到提示符是#不是$立刻判断出他用了root身份操作这在我们公司安全规范里是不允许的很快就定位到问题的根源是权限过大导致的误操作。RH124教材里这一小节还会提到echo $PS1这个命令PS1就是控制提示符格式的环境变量。你如果好奇提示符各部分是怎么拼出来的执行这个命令能看到它的定义里面那些\u代表用户名、\h代表主机名、\w代表当前工作目录这些转义符号你可能一辈子都用不上但理解提示符本身是Shell输出的信息而不是系统固定画在上面的这个思路对后面理解命令行的工作方式很有帮助。3.2 命令、选项、参数的组合规律在Shell里输入的每一条命令可以拆分成三个部分命令本身、选项、参数。例如ls -l /home/studentls是命令名它告诉Shell要执行的操作是列出目录内容-l是选项也叫开关它修改命令的默认行为这里表示用长格式显示详细信息/home/student是参数它告诉命令操作的对象是谁。这个命令-选项-参数的结构是Linux命令行最核心的语法骨架几乎所有命令都遵循这个规律。理解这个结构之后你面对一个陌生命令时就知道该从哪里入手先查命令是干什么的再看有哪些选项能改变行为最后搞清楚要给它什么参数。需要注意的细节是选项有短选项和长选项之分短选项是一个连字符加单个字母比如-l长选项是两个连字符加一个完整的单词比如--all。很多命令支持合写短选项比如ls -a -l可以写成ls -al但长选项不能这么合并。RHEL的很多命令是GNU项目提供的它们普遍接受在选项后面加--help来查看简短的帮助信息这一点在你面对不熟悉的命令时是救命稻草。关于选项和参数的顺序大多数情况是先选项后参数实际上GNU风格命令通常接受选项放在参数后面但为了规范、可读和可移植性我建议你始终遵循先命令、再选项、最后参数的顺序。还有一点有些选项需要附加参数值比如ls --colorauto里的auto就表示这个选项的值注意这种情况下等号两边不要加空格。3.3 空命令与命令查找路径在Shell里输入一个命令并按回车Shell不是直接去执行这个命令而是要经历一个查找过程。它会按照PATH环境变量里定义的目录顺序逐个去这些目录里找有没有跟你输入名字匹配的可执行文件。找到就执行找不到就会报错bash: command not found...这个报错是初学者最常撞见的坑之一。很多时候你明明确定系统装了某个工具却提示command not found原因不外乎三种一是命令没真正安装二是当前用户的PATH里不包含该命令所在目录三是命令名称记错了。举个例子如果你执行ifconfig提示找不到RHEL较新版本默认已经不安装这个传统工具了你需要用ip命令或者手动安装net-tools软件包。学会手动排查PATH的方法是基本功执行echo $PATH可以看到当前的搜索路径列表目录之间用冒号分隔。你可以尝试把某个命令的完整路径写出来执行比如/usr/bin/ls这绕过了PATH查找直接运行能帮你验证命令存在但PATH里找不到这个情况。RH124在这一章不会深入讲PATH的配置但你得先知道有这回事否则后面装软件、写脚本时一个简单的command not found就会让你卡住半天。4. 执行与编辑命令行的实操技巧4.1 基本命令执行流程和输出流在Shell里输入命令后Shell会启动一个子进程来运行这个命令命令产生的输出通常直接打印到终端屏幕上。这个过程看起来简单但有几个关键操作值得多说一句。命令执行期间你的终端会被这个命令独占有些命令比如ping或者top会持续运行不退出直到你按CtrlC强制中断。这里有个容易让新手慌乱的点命令一直在滚动输出不知道如何让它停下来。记住几个基本控制键CtrlC发送中断信号终止前台命令CtrlD发送EOF文件结束标志常用于退出一些交互式程序比如在空行状态下按CtrlD会退出当前Shell会话。分号;可以用来在同一行里顺序执行多条命令不管前一条成功还是失败后一条都会执行。比如echo start; date; echo end如果你希望前一条命令成功之后才执行后一条可以用mkdir /tmp/test cd /tmp/test pwd这个技巧在写自动化任务时特别有用它保证了每一步都建立在前一步成功的基础上不会在一个半失败的状态下继续执行。4.2 历史命令回看与复用Bash会自动把你在Shell里输入过的命令保存到历史列表中默认存到用户主目录下的.bash_history文件里。用上下方向键可以在当前会话中翻看前后命令但是有个细节需要注意方向键只能浏览当前会话的历史如果你想搜索很久以前执行过的一条命令方向键翻起来非常痛苦。这时候用CtrlR进入反向搜索模式是最快的。按CtrlR后输入几个关键字Bash会从历史记录里匹配最近一条包含这些关键字的命令找到后按回车就可以直接执行如果想继续往前匹配更早的记录再按一次CtrlR即可。history命令能列出本会话的全部历史记录每条命令前面有个编号。你可以用!加编号来重复执行某条命令比如!42会重新执行第42条命令。如果想重复执行上一条命令不需要敲编号直接输入!!两个感叹号即可。这里要提醒一下初学者!这种快捷方式确实快但在交互式Shell里手动输入时要格外小心按下回车前确认一下要执行的到底是哪条命令我见过有人用!!在错误目录里重复执行了删除操作后果很严重。还有一个使用习惯值得培养当你发现一条命令的执行结果正是你需要的执行history并记下编号或者直接用!编号复用比你重新完整输入一遍更安全也更高效。毕竟历史命令是已经验证过的重敲一遍还可能打错字符。4.3 Tab补全效率提升的第一大利器命令行操作效率的差距很大程度上来自是否熟练使用Tab补全。你在输入命令名、文件名、目录名时不必敲完整按一次Tab键Bash会尝试自动补全。如果有多个候选再按一次Tab会列出所有可能。只按一次Tab和按两次Tab的行为不同这个需要自己多试几次才能形成肌肉记忆。比如你想查看/etc/systemd/system/timers.target.wants这个路径全名输入不仅慢还容易打错用Tab逐个补全目录名几秒钟就能完成。按两次Tab列表显示候选实际上是在告诉你你给的信息不够唯一你还需要再输入几个字符让候选范围缩小。Tab补全不仅是省时间的工具更是一种变相的路径验证。如果你在补全某个文件时发现Tab无响应大概率是你的路径拼错了或者权限不够看不全目录内容。我平时排错时经常用这个特点想不起来一个命令的准确名字时输入前缀再按两次Tab系统会列出所有可能的命令这比硬背命令列表高效得多。4.4 命令行编辑快捷键速查很多从Windows转过来的用户在终端里习惯性地按CtrlC去复制结果直接把正在运行的命令中断了这是Linux新手最经典的误会之一。在Bash里CtrlC是发送中断信号复制粘贴需要用鼠标右键或者CtrlShiftC/CtrlShiftV。除了复制粘贴掌握一批命令行编辑快捷键能极大提升操作效率。这里列一组最常用的CtrlA把光标移动到行首CtrlE把光标移动到行尾CtrlU删除从光标位置到行首的内容CtrlK删除从光标位置到行尾的内容CtrlW删除光标前面的一个单词CtrlL清屏相当于输入clear命令这套快捷键的用处举例你输入了一条很长的命令执行后想稍微修改其中某个参数再执行不需要从头重打按方向键上翻出上一条然后用CtrlA跳到行首CtrlE跳到行尾CtrlW删除某个单词改完后回车执行整个过程一气呵成。这里还要特别提一下Bash默认使用的编辑模式是Emacs风格的键位所以CtrlA、CtrlE这些组合才能生效。如果你更熟悉vi编辑风格可以执行set -o vi切换到vi键位模式但一般不建议新手这么折腾等Emacs键位用到自然再说。5. 超级用户身份与命令行的安全使用习惯5.1 普通用户与root用户的本质差异Linux系统的权限模型里root用户超级用户拥有系统上的几乎所有权限可以修改任何文件、安装任何软件、管理任何服务、删除任何数据。而普通用户的权限被限制在自己主目录和系统明确授权的位置。RH124这一章初步介绍这个区别主要是为了让你理解为什么有些命令敲下去会提示Permission denied。远程管理服务器时直接使用root账号登录是非常危险的做法。万一敲错命令、在错误的目录里操作或者被他人盗用账号后果是整个系统级别的灾难。红帽官方推荐的实践是日常用普通用户操作碰到需要特权的管理任务时临时用su -切换到root或者使用sudo命令按需提权。5.2 sudo命令的使用逻辑与常见误区sudo的设计思路很巧妙普通用户不需要知道root的密码而是通过自己的密码或者甚至不需要密码取决于配置获得执行某条管理命令的临时权限。这个权限的授予与回收完全由/etc/sudoers文件控制。在RHEL中安装系统时创建的第一个用户默认属于wheel组这个组的用户被授权可以使用sudo。执行方式很简单sudo useradd testuser系统会提示输入当前用户的密码不是root密码验证通过后这条命令以root权限执行。初学者刚开始用sudo时最常见的困惑是为什么同一个命令输了两遍或者为什么刚输入过密码又要输。sudo默认有个时间窗口通常几分钟内再次执行sudo不会重复要求输密码但如果过了窗口期或者打开了一个新终端就会再次提示。这是正常行为不用怀疑系统坏了。另外一个容易犯的错误是把sudo加在不该加的地方。比如查看一个需要权限才能读取的文件正确做法是sudo cat /etc/shadow但有些人会写成cat /etc/shadow | sudo less后者虽然管道后面的less以root运行但cat却以普通用户执行读取仍然会失败。理解sudo的作用对象是整条命令而不是管道里的后半段能帮你避免这类看起来很怪的问题。5.3 用su命令切换身份的场景su命令用来切换用户身份。执行su -表示切换为root用户同时启动一个全新的登录Shell环境变量也一并切换为root的环境执行su root是不带-的切换它只切换用户身份但保留当前环境变量在某些场景下会出现PATH不一致等诡异现象。一般来说建议使用su -而不是su因为前者得到的root环境更干净、更可预期。不过在现代RHEL系统管理实践中su -主要用于个别临时需要root Shell的场景日常管理任务尽量用sudo按需授权更好。从RH124的学习角度来说你只需要掌握两者的区别和基本用法等学到用户和权限管理的章节还会深挖。安全习惯上还有一个细节一般情况下不要用su -切到root后做一堆操作用完记得执行exit退回普通用户身份。我自己见过不少同事把终端留在root Shell里就离开座位这是很大的安全漏洞。5.4 系统提示符中身份标识的现实意义回到前面提到的提示符$和#的区别普通用户是$root是#。这个符号在终端里看着不起眼但它时刻提醒你当前的身份。养成执行敏感命令前扫一眼提示符的习惯是命令行环节非常值得培养的一个安全素养。如果你需要经常在两三台服务器之间切换为了让提示符更醒目可以像我一样在自己的~/.bashrc文件里加一点颜色配置让root的提示符变成显眼的红色。修改Shell配置文件这件事在这一章可能还没到但你可以先记住提示符不是死板的它是可以通过PS1变量自定义的。学习命令行不只是背命令还包括理解你每天面对的每一个输出元素背后是什么。6. 在受限环境中使用命令行的排错思路6.1 图形终端打不开或黑屏怎么办RHEL的图形终端用久了可能会出现会话卡死、黑屏等情况。很多人第一反应是重启机器其实大部分问题都可以通过切换到虚拟终端来解决。按CtrlAltF2有些版本是F3、F4切到纯文本虚拟终端输入用户名密码登录先用ps或top找到卡死的进程杀掉之后按CtrlAltF1或图形会话对应的tty编号切回图形环境往往就恢复了。如果只是图形桌面服务本身出了问题你可以在虚拟终端里执行systemctl restart gdm来重启显示管理器这比整机重启快得多也不影响SSH连接里的其他服务。这套操作在RH124第二章虽说不算重点但它非常实用。命令行不是只在终端窗口里存在当你图形环境崩溃时命令行反而成了拯救系统的唯一入口。6.2 SSH连接时提示认证失败或连接被拒生产环境中你需要在命令行里登录远程主机最常用的就是SSH。如果你在练习时用ssh 用户名主机地址登录另一台虚拟机可能遇到的报错集中在三类第一类是Connection refused说明目标主机的sshd服务没有启动或者防火墙阻止了22号端口。先在目标主机上确认服务状态执行systemctl status sshd来查看并确认firewalld有没有放行ssh服务。第二类是Permission denied (publickey,password)说明认证环节出了问题。最常见原因是密码错误或者目标主机上的/etc/ssh/sshd_config禁用了密码认证只允许密钥登录。排查思路是先在另一台机器上用ssh -v开启调试输出看认证过程卡在了哪一步。第三类是Host key verification failed通常发生在目标主机的系统重装或SSH密钥变了之后本机的known_hosts里还保留着旧记录。解决办法是用ssh-keygen -R 目标主机地址删除旧的主机密钥记录然后重新连接。这个报错让很多新手一头霧水因为字面意思跟密码完全没有关系但理解了SSH的主机密钥验证机制后就很顺理成章了。6.3 粘贴命令时格式错乱引发的坑在图形终端或SSH客户端里粘贴长命令时有时会出现命令被截断、自动执行、格式错乱等情况。尤其是从网页或PDF文档中复制命令时可能带入不可见的特殊字符或行尾空格导致Shell报错。如果粘贴后发现命令行为很奇怪可以先用方向键上翻到这条命令用CtrlA跳到行首再配合CtrlE和左右方向键仔细检查一遍看命令有没有被拆成多行。命令行的所见即所得能力很强但前提是你得会编辑已有命令这也是我为什么在前面反复强调命令行编辑快捷键的原因。更稳妥的做法是多行命令手敲一遍至少把关键部分敲出来用Tab补全既加深记忆又避免带入杂字符。命令是从网上抄的没关系但你得知道它每一段是什么意思如果连这段命令是干什么的都讲不清楚建议别急着执行。7. 中文环境下的显示乱码与输入问题处理7.1 终端乱码常见场景及解决办法不少人在RHEL图形终端里执行某个命令输出的中文变成了乱码。这通常不是系统坏了而是字符编码不匹配。Linux系统的习惯是UTF-8编码大多数现代终端默认也是UTF-8正常情况下显示中文没有问题。如果出现乱码先检查两点当前系统的locale设置是否包含UTF-8与中文支持可以通过locale命令查看终端模拟器的字符编码设置是否改成了别的编码。在纯文本虚拟终端里显示中文有时会乱码是因为那个环境里的中文字体或locale可能没有配置全但它的职责本来就不是显示图形界面文字。服务器日常使用大部分都是用英文界面中文字符乱码有时候并不影响理解命令输出比如日志里的时间戳和错误代码都是ASCII字符。如果你确需在终端里正常显示中文检查安装的中文字体包和locale支持即可。7.2 输入中文与命令行的兼容习惯命令行输入中文的情况相对少见因为命令名、文件名、参数都是英文字符你使用的中文输入法在终端里一般不会起作用或者在输入命令时不小心把输入法切到了中文状态导致输入的引号、括号变成了全角字符。全角字符是命令行排错里一个隐蔽的坑。比如你复制一个URL或路径过来如果里面的斜杠或引号变成了全角版本的符号Shell会在解析时给出奇怪的报错。这种问题肉眼几乎看不出来排查起来又很费时间。我的经验是如果一条命令莫名其妙报错但看起来语法完全正确先用方向键上翻重新检查每一个引号和括号是不是半角字符——也就是英文输入状态下的符号必要时把可疑部分删掉重新手敲。7.3 man帮助信息乱码时的查看技巧命令的手册页man page是命令行学习最重要的资料。在RHEL终端里输入man ls如果发现排版和显示异常或中文翻译版本里出现乱码通常是因为man使用的分页器在当前终端环境里没有正确设置。最简单的解决办法是按q退出man执行export MANOPT--no-hyphenation这类调整不过一般情况下默认设置就够用了。在CJK中日韩环境下偶尔会遇到宽度计算问题导致表格错位可以尝试把终端的字符编码固定为UTF-8或者在纯英文locale下查看帮助信息。这一节我想传达的核心思想是man page是学习命令的最佳资料如果遇到显示问题不要放弃用man先解决显示问题这本身也是一种命令行排错能力的练习。8. 从第二章延伸出的日常练习路径与习惯养成8.1 每天十分钟的刻意练习计划命令行操作是一项肌肉记忆技能光看不练等于没学。读完RH124第二章你可以给自己设计一个每天十分钟的小练习第一天在终端里反复执行ls、cd、pwd的组合刻意使用Tab补全和方向键查找历史而不是每次都完整输入第二天练习用CtrlA跳到行首、CtrlE跳到行尾尝试用CtrlU和CtrlK删改一条长命令第三天用history | grep 关键词搜索历史记录并用!编号复跑命令。这个方法看起来笨但效果很好。两三天后你就不再需要刻意去想快捷键了手会自己找到方向键的位置。等到学习后面章节时你输入命令的流畅度会明显高于那些跳过这一章直接学文件操作的人。8.2 构建自己的命令速查笔记学习命令行最大的障碍不是命令多而是没有任何一条命令能靠一次性记忆掌握。我建议你从这一章开始建立自己的速查笔记不是把教材抄一遍而是记录自己踩过的坑和解决过程。比如今天你发现Tab补全在某个目录下没反应排查后确认是权限问题那就记一条无权限目录下Tab失灵先用ls确认可见内容明天你发现SSH连接另一台机器提示Host key verification failed搞明白原因后记一条对应的解决办法。隔一段时间回头看这本笔记就是你最宝贵的实操经验积累比任何一本通用手册都更适合你。8.3 从命令行连接到更广阔的系统管理世界第二章只是命令行访问的入门它帮你打开的是一扇通向系统管理深层知识的大门。理解了Shell提示符、命令结构、历史命令和快捷键你就具备了用命令行思维来处理问题的基础。接下来文件系统、权限管理、文本处理、进程管理、服务管理所有内容都在这套交互方式上展开。如果这一章学完你仍然觉得不熟练不用着急这是正常的。我记得自己刚开始接触Linux时第一次在无图形界面的服务器上操作光是搞清楚光标怎么移动就折腾了半天。但恰恰是那段笨拙期让我意识到命令行不是靠背出来的而是在一次次敲错、修正、再敲的过程中长在手上的。你在这上面花的时间会在后面的学习和工作中加倍赚回来。9. 再分享一个命令行环境的实用经验多标签页与屏幕复用工具图形终端里很多人习惯开多个标签页一个窗口敲命令另一个窗口看日志再一个窗口写配置文件。这个做法入门够用但等你需要管理多台服务器时标签页会变得越来越乱。我个人的推荐是learn一下tmux或screen这类终端复用工具。它们允许你在一个SSH会话里开多个窗口和面板断开连接后任务还在后台继续跑重新连接时能恢复到之前的状态。这对需要长时间执行任务、但又可能断网断连的场景非常实用。RH124第二章不会讲tmux什么时候适合自学呢我的判断是当你在SSH里执行一个长时间任务却发现关掉终端连接就会把任务也带走时就该去了解tmux了。它本质上是命令行里的窗口管理器解决的是命令行会话的持久化和管理问题。等你学完RH124整本书、进入生产环境工作后会发现tmux加Vim加Shell是很多系统管理员每天的实际工作台。好用的工具不在多能帮你解决问题最关键。从第二章这里出发保持每敲一条命令都想知道为什么的习惯你会慢慢发现命令行世界其实并不神秘它只是把系统管理的操控权交到了你手里而已。
返回列表