当前位置: 首页 > 科技观察

Linux101:让你的Shell更强大

时间:2023-03-14 16:29:55 科技观察

通过我们的Shell基础知识指南,获得更灵活、更强大、更丰富多彩的命令行界面。我为什么要这样做?让shell提示符下的生活更轻松、更高效在失去连接后恢复之前的会话bash1这是我的命令行提示设置。对于这么小的终端窗口,这可能有点长。但你可以根据自己的喜好调整它。作为Linux用户,您可能熟悉shell(也称为命令行)。也许你需要时不时地打开终端来完成在GUI下无法处理的必要任务,或者也许是因为你处在一个windows遍布桌面的环境中,而shell是你与linux交互的主要方式机器。在上述情况下,您可能正在使用发行版附带的Bash配置。虽然它对大多数任务来说已经足够好了,但它还可以更强大。在本教程中,我们将向您展示如何使您的shell信息量更大、更有用且更易操作。我们将自定义提示以提供比默认更好的反馈,并向您展示如何使用酷炫的tmux工具来管理会话并同时运行多个程序。而且,为了让事情看起来更轻松,我们还将关注配色方案。那么,攻击吧,少女!让提示变得漂亮大多数发行版都带有一个非常简单的提示,其中大部分会向您显示一些基本信息,但提示可以为您提供更多信息。比如在Debian7下,默认的提示是这样的:mike@somebox:~$上面的提示显示了用户、主机名、当前目录、账户类型符号(如果切换到root账户,$会变成for#)。这些信息存储在哪里?答案是:在PS1环境变量中。如果你键入echo$PS1,你将在这个命令的输出字符串的末尾有以下字符:\u@\h:\w$这看起来有点难看,乍一看,你可能会开始尖叫和思考这是可怕的正则表达式,但我们不会用这些复杂的字符来烧脑。这不是正则表达式,这里的斜线是转义序列,告诉提示做一些特殊的事情。例如,上面的u部分告诉提示符显示用户名,而w显示工作路径。以下是您可以在提示中使用的一些字符的列表:d当前日期h主机名n换行符A当前时间(HH:MM)u当前用户w(小写)整个工作路径的全名W(大写)缩写工作路径名称$提示符,#root标志!当前命令在shell历史中的序列号下方列出路径的完整地址(例如/usr/local/bin),而对于后者,它只显示bin部分。现在,我们如何更改提示?您需要更改PS1环境变量的内容,试试这个:exportPS1="Iam\uanditis\A$"现在,您的提示将如下所示:Iammikeanditis11:26$Starting从这个例子中,你可以根据你的想法尝试上面列出的其他转义序列。但是等等-当您注销时,您所有的辛勤工作都将消失,因为每次您打开终端时,PS1环境变量的值都会被重置。解决此问题最简单的方法是打开.bashrc配置文件(在您的主目录中)并在此文件底部添加完整的导出命令。每次启动新的shell会话时,Bash都会读取此.bashrc,因此您的增强提示符始终会出现。您还可以使用其他颜色装饰提示。起初,这会有点棘手,因为您必须使用一些相当奇怪的转义序列,但结果非常漂亮。在您的PS1字符串中的某处添加以下字符,最终这会将文本变为红色:\[\e[31m\]您可以将此处的31更改为其他数字以获得不同的颜色:30Black32Green33Yellow34Blue35Magenta36青色37白色因此,让我们通过使用我们之前看到的转义序列和颜色创建提示来结束本节。深吸一口气,弯曲手指,输入以下“野兽”:exportPS1="(\!)\[\e[31m\]\[\A\]\[\e[32m\]\u@\h\[\e[34m\]\w\[\e[30m\]$"上面的命令提供了Bash命令历史编号、当前时间、彩色用户或主机名组合以及工作路径。如果您变得“雄心勃勃”,您还可以使用一些惊人的组合来更改提示的背景和前景色。非常有用的Archwiki有一个完整的颜色代码列表:http://tinyurl.com/3gvz4ec。ShellEssentials如果您是第一次阅读这本杂志的Linux新手,您可能会觉得阅读教程有些吃力。所以这里有一些基础知识可以让您熟悉一些shell。通常在您的菜单中,shell指的是Terminal、XTerm或Konsole,当您启动它时,最有用的命令是:ls(列出文件名);cpone.txttwo.txt(复制文件);rmfile.txt(删除文件);mvold.txtnew.txt(移动或重命名文件);cd/some/directory(改变目录);cd..(返回父目录);./program(在当前目录下运行一个程序);ls>list.txt(将输出重定向到文件)。几乎每个命令都有一个解释其选项的手册页(例如manls-按Q退出)。在那里,你可以知道命令的选项,所以你知道ls-la显示了一个详细的列表,其中还列出了隐藏的文件,在键入文件或目录的部分名称后,你可以使用Tab键自动完成。#p#Tmux:shell的窗口管理器在文本模式环境中使用窗口管理器-听起来有点奇怪,不是吗?但是,您应该还记得Web浏览器首次实现标签式浏览的时间,对吧?在当时,这是可用性的重大进步,减少了桌面任务栏和繁琐的窗口列表的混乱。对于您的浏览器,您只需要一个按钮即可切换到您在浏览器中打开的每个单独的网站,而不是每个网站都有一个任务栏或导航图标。此功能非常有意义。如果你有时同时运行几个虚拟终端,也会遇到类似的情况;在这些终端之间跳来跳去,或者每次你在任务栏或窗口列表中找到你需要的终端时,你可能会觉得让你觉得麻烦。拥有一个文本模式窗口管理器不仅可以让您像在同一个终端窗口中一样运行多个shell会话,而且您甚至可以将这些窗口排列在一起。此外,这还有另一个好处:这些窗户可以拆卸和重新安装。了解其工作原理的最佳方式是亲自尝试。在终端窗口中,键入screen(在大多数发行版中,它已经默认安装或可以在包存储库中找到)。将出现一些欢迎文字-只需按下Enter键,文字就会消失。现在运行交互式文本模式程序,例如nano,然后关闭终端窗口。在正常的shell会话中,关闭窗口将终止在该终端中运行的所有进程-因此刚才的Nano编辑会话将被终止,但对于屏幕而言,情况并非如此。打开一个新终端并输入以下命令:screen-r瞧,刚刚打开的Nano会话又回来了!当你刚才运行screen时,它创建了一个新的独立shell会话,它没有绑定到特定的终端窗口,所以它可以在以后分离和重新连接(即-r选项)。当您使用SSH连接到另一台机器并做一些工作,但又不想因弱连接而中断您的进度时,这尤其有用。如果你在屏幕会话中做一些工作,并且你的连接突然断开(或者你的笔记本电脑死了,或者你的电脑死了——没那么难过),你只需要重新连接或者给你的电脑充电或者买一台新的,然后运行??screen-r重新连接到远程计算机并从上次中断的地方继续。现在,我们一直在谈论GNU屏幕,但本节的标题指的是tmux。本质上,tmux(终端多路复用器)就像一个高级版本的屏幕,具有许多有用的额外功能,所以现在我们开始关注tmux。一些发行版默认包含tmux;在其他情况下,它通常只是一个apt-get、yuminstall或pacman-S命令来安装它。安装完成后,输入tmux启动它。然后你会注意到终端窗口底部有一个绿色的信息栏,这与传统窗口管理器中的任务栏非常相似:它显示了正在运行的程序列表、机器的主机名、当前时间和日期。现在运行一个程序,同样以Nano为例,按Ctrl+B再按C,这会在tmux会话中新建一个窗口,可以在终端底部的任务栏中看到如下信息:0:nano-1:bash*每个窗口都有一个编号,当前显示的程序用星号标示。Ctrl+B是与tmux交互的标准方式,所以如果你用窗口号点击这个组合键,它会切换到相应的窗口。您还可以使用Ctrl+B后跟N或P分别切换到下一个或上一个窗口-或者使用Ctrl+B后跟L在两个最近使用的窗口之间切换(有点像桌面经典Alt的效果+Tab组合键)。要了解窗口列表,请使用Ctrl+B后跟W。到目前为止,非常好:现在您可以在一个终端窗口中运行多个程序,避免混乱(特别是如果您定期维护与同一远程主机的多个SSH连接).想同时看两个节目怎么办?对于这种情况,可以使用tmux中的窗格。按Ctrl+B然后按%,当前窗口将分为两部分:一个在左边,一个在右边。您可以使用Ctrl+B后跟O在这两个部分之间切换。如果您想同时查看两件事,这将特别有用-例如,一个窗格中的手册和另一个窗格中的编辑器中的配置文件。有时,您想缩放单个窗格,这需要一些技巧。首先,您需要按Ctrl+B,然后按:(冒号),这会将底部的tmux栏变成深橙色。您现在处于命令模式,您可以在其中输入命令来操作tmux。键入resize-pane-R将当前窗格向右移动一个字符空间,或-L将其向左移动。为了简单的操作,这些命令可能看起来有点长,但是请注意,在tmux的命令模式下(上面提到的以分号开头的模式),您可以使用Tab键来完成命令。还有一点要提的是tmux还有命令历史,所以如果你想重复刚才的zoom操作,可以先按Ctrl+B后跟分号,然后用向上箭头取回刚刚输入的命令.最后,让我们看一下分离和重新附加-我们刚刚介绍的屏幕的特殊功能。在tmux中,按Ctrl+B,然后按D,将当前的tmux会话与当前终端窗口分离。这使得本次会话的所有工作都在后台运行,并使用tmuxa重新连接到之前的会话。但是,如果同时运行多个tmux会话怎么办?我们可以使用以下命令列出它们:tmuxls该命令将为每个会话分配一个序列号;如果你想重新连接到会话1.你可以使用tmuxa-t1.tmux是高度可定制的,你可以自定义按键绑定和更改配色方案,所以一旦你习惯了它的主要功能,请深入研究使用说明书以了解更多信息。在上面的tmux图片中,tmux打开了两个面板:左边是Vim正在编辑配置文件,右边是显示手册页。Zsh:选择另一个shell不错,但标准同样重要。只需知道几乎每个主要的Linux发行版都默认使用Bashshell——尽管还有其他发行版。Bash几乎可以为您提供shell可以为您提供的所有功能,包括命令历史记录、文件名完成和许多脚本编写功能。它成熟、可靠且文档齐全——但它不是您唯一的选择。许多高级用户都热衷于Zsh,即Zshell。这是Bash的替代品,提供Bash的几乎所有功能,以及一些额外的功能。例如,在Zsh中,您键入ls并按下Tab键以获得对ls可用的各种选项的粗略描述。无需再打开手册页!Zsh还支持其他强大的自动完成功能:例如,键入cd/u/lo/bi并按Tab键将显示完整路径名/usr/local/bin(假设没有其他路径包含u、lo和bi字符)。或者只需键入cd后跟Tab,您将看到彩色路径名列表-比Bash的简单结果好得多。大多数主要发行版都提供Zsh;安装它并输入zsh来启动它。要将默认shell从Bash更改为Zsh,请使用chsh命令。如需更多信息,请访问www.zsh.org。“未来”的终端您可能想知道为什么包含您的命令提示符的应用程序被称为终端。这要追溯到Unix的早期,当时人们通常在一台多用户机器上工作,这个巨大的计算机主机会占据建筑物的一个房间,人们通过一些线路连接到这个主机上,使用屏幕和键盘,这些终端通常被称为“哑终端”,因为它们不能自己完成任何重要的执行任务——它们只是显示通过线路从主机传来的信息,并通过击键反馈输入。今天,我们所做的几乎所有事情都在自己的机器上进行,因此我们的计算机不是传统意义上的终端,这就是为什么像XTerm、GnomeTerminal、Konsole等程序被称为“终端仿真器”——它们提供相同的功能作为过去的物理终端。事实上,在很多方面他们并没有太大的改变。诚然,我们现在拥有消除锯齿的字体、更好的颜色和点击URL的能力,但总的来说,几十年来我们一直在以同样的方式工作。所以一些程序员正在试图改变这一点。术语(http://tinyurl.com/osopjv9)来自uber-snazzyEnlightenment窗口管理器背后的团队,旨在将终端带入21世纪,例如与在线媒体展示。您可以在充满图像的目录中键入ls以查看它们的缩略图,甚至可以直接在您的终端中播放视频。这使得终端有点类似于文件管理器,这意味着您可以快速检查媒体文件的内容,而无需使用其他应用程序打开它们。然后是Xiki(www.xiki.org),它本身被描述为“命令革命”。这就像传统shell、GUI和wiki之间的过渡;您可以在任何地方输入命令并将其输出存储为注释以供以后参考,并创建非常强大的自定义命令。它很容易用几句话来描述,因此作者制作了一个视频来展示它的潜力有多大(参见Xiki网站的截屏视频部分)。Xiki绝不是一个会在几个月内死亡的一次性项目,作者在Kickstarter发起了一场成功的活动,到7月底筹集了超过84,000。是的,您没有看错——8.4万用于支持终端仿真器。这可能是迄今为止最不寻常的众筹活动,因为一些疯狂的家伙已经决定开始他们自己的Linux杂志......下一代终端许多命令行和基于文本的程序与其GUI一样功能。程序是相同的,而且通常更快、更高效。我们的建议是:Irssi(IRC客户端);Mutt(邮件客户端);rTorrent(比特流);Ranger(文件管理器);htop(进程监视器)。鉴于在终端范围内浏览网页,Elinks做得很好,非常适合阅读维基百科等文本密集型网站。非常实用。微调配色方案在《Linux Voice》Magazine,我们并不沉迷于花哨的东西,但我们确实认识到当您每天花几个小时盯着屏幕上的东西时审美的重要性。我们中的许多人喜欢将我们的桌面和窗口管理器调整到完美,调整阴影,尝试不同的配色方案直到我们100%满意(然后,出于习惯,摆弄更多的东西)。但是我们往往会忽略终端窗口,它也值得我们喜爱,在http://ciembor.github.io/4bit上你会看到一个很棒的配色方案设计器,适用于所有流行的终端仿真器(XTerm、GnomeTerminal、Konsole和Xfce4Terminal是受支持的应用程序。),可以导出其设置。移动滑块直到看到最佳配色方案,然后单击位于页面右上角的“获取方案”按钮。同样,如果您在Vim或Emacs等文本编辑器上花费大量时间,那么使用精心设计的调色板是非常值得的。Solarizedhttp://ethanschoonover.com/solarized是一个出色的解决方案,不仅美观,而且经过大量研究和测试,旨在最大限度地提高可用性。