如何在云服务器上使用Z Shell(zsh)

简介

本文介绍如何在云服务器上使用zsh。 您可以通过简单地尝试启动它来验证您的VPS上安装了zsh:

zsh

如果你安装了zsh,你会直接进入shell。

否则,建议您安装的zsh继续之前。

使用zsh

在这一点上可能很难理解比bash这样的shell更强大的zsh。 让我们开始看看shell的自动完成功能。

自动完成

让我们想象一下,我们要安装“vim-addon-manager”来帮助我们组织我们的文本编辑器配置文件。 我们不记得包裹是什么叫。 而不是使用apt-cache来搜索包名称,我们可以使用zsh来给出以“vim”开头的包列表。

sudo apt-get install vim<tab>
vim                vim-doc            vim-lesstif        vim-scripts
vim-addon-manager  vim-gnome          vim-migemo         vim-syntax-go
vim-athena         vim-gtk            vim-nox            vim-syntax-gtk
vim-common         vim-gui-common     vim-puppet         vim-tiny
vim-conque         vimhelp-de         vim-rails          vim-vimoutliner
vim-dbg            vim-latexsuite     vim-runtime        

当我们使用<tab> completion with apt时,我们看到它给我们一个可用的包列表。 然后,我们可以输入需要的其他字母以获得唯一匹配。 在这种情况下,键入“-ad <tab>”将根据需要完成该命令。

sudo apt-get install vim-ad<tab>

让我们使我们的自动完成功能更强大。 让我们在.zshrc中添加以下部分:

nano ~/.zshrc
zstyle ':completion:*' menu select
setopt completealiases

这将做两件事。 它将让我们自动完成我们可能在我们的.zshrc中写的任何别名,当有多个选项可用时,它也允许我们选择一个菜单。 让我们再次使用.zshrc文件来加载我们的更改,然后再次尝试apt-get示例。

source ~/.zshrc
sudo apt-get install vim<tab>

它看起来是一样的。 区别在于,现在我们可以再次按<tab>键,然后使用<tab>和箭头键选择选项。 这在某些情况下可以导致选择更快。

全球化

我们最初设置的一个选项是使用扩展的globbing表达式。 Globbing是一种语法,它在搜索或传递参数到任何程序或函数时使用特殊符号来匹配和过滤结果。

让我们试试几个例子。 首先,我们将尝试一些更传统的globbing,以防你不熟悉这个想法。 让我们创建一个测试目录并用一些文件填充它。

mkdir test
cd test
touch file1 file2 file3 file100 file120 file122 file200 file222
touch file250 file800 file808 file80 somefile anotherfile
touch thisotherfile file.txt file.c file.o file.html file.css
touch completelydifferent different separate
mkdir directa directb directc directd

我们的测试目录现在有很多文件和目录,我们可以选择和操作。

让我们选择一切与文件中的文件。 星号(*)字符代表0个或更多字符。

ls *file*
anotherfile		file120		file200		file3
file808			file.html	somefile	file1
file122			file80		file.c		file.o
thisotherfile		file100		file2		file250
file800			file.css	file.txt

结果是每个文件的标题中都有“file”这个词。 让我们说,我们只想找到以“file”开头的文件。

ls file*
file1		file122		file222		file80
file.c		file.o		file100		file2
file250		file800		file.css	file.txt
file120		file200		file3		file808
file.html

这减少了我们的结果,但让我们进一步缩小。 插入符号(^)用于否定以下模式。 所以,我们想要所有以“file”开头的文件,但我们不想要任何“1”紧跟在“file”之后。

ls file^1*
file2		file222		file3		file800
file.c		file.html	file.txt	file200
file250		file80		file808		file.css
file.o

假设我们想要找到以“file”开头的所有文件,其后有一个从100到300的数字。我们可以使用小于(<)和大于(>)的符号来包围一个数字范围。

ls file
file100		file120		file122		file200
file222		file250

如果我们想要所有这些结果,但我们特别不想要file200,我们可以告诉zsh不要用波浪号(〜)字符选择它。

ls file~file200
file100		file120		file122		file222
file250

让我们做一些更复杂的选择。 我们可以通过在一组括号内提供选择器来进一步限定我们的结果。 如果我们想选择一个常规文件(不是目录,链接等),我们可以使用这样的东西。

ls *(.)
anotherfile		file100		file200			file80
file.css		separate	completelydifferent	file120
file222			file800		file.html		somefile
different		file122		file250			file808
file.o			thisotherfile	file1			file2
file3			file.c		file.txt

注意我们创建的目录没有被列出。 如果相反,我们只想要目录,我们可以使用:

ls *(/)
directa:

directb:

directc:

directd:

接下来,让我们在测试目录中选择5个最新的文件。 我们可以通过使用括号中的“o”限定符来实现。 这将选择我们的排序方法。 我们将使用“m”跟随“o”,这意味着我们按修改时间排序。 最后,我们将在括号中提供一个范围,告诉zsh我们需要多少个结果。

ls *(.om[1,5])
completelydifferent	different	file.css	file.html	separate

这里有一些额外的想法试试。

我们可以将zsh配置为自动使用特定程序根据文件扩展名打开文件。 我们将使用“Postfix别名”来实现。 这些可以添加到我们的.zshrc中,这样,如果我们简单地键入一个文件的名称并按回车,它将打开正确的程序。

让我们使用“less”打开任何扩展名为.view的文件,并使用“nano”打开以.edit结尾的任何文件。 将此行添加到.zshrc的底部。

nano ~/.zshrc
alias -s view=less
alias -s edit=nano
source ~/.zshrc

现在,让我们创建两个文件来测试这个。

touch test.view test.edit

如果我们键入:

test.view

当我们按Enter键时,文件将在“less”中打开。 但是,如果我们键入:

test.edit

该文件将按照预期在nano中打开。

zsh为我们提供的另一个好处是完成提示。 zsh为我们提供了很多视觉指标,当涉及到输入多线输入。 让我们试试。 如果我们输入这样的内容并点击“enter”:

print “this is a line

我们将看到一个这样的提示:

dquote>

我们可以通过使用第二组双引号结束输入来完成这一行。

 dquote> that goes onto the next line”

如你所见,它告诉我们需要关闭什么样的输入来完成语句。 我们可以看到类似的事情发生,如果我们尝试在提示符中键入一个简单的shell脚本。

if [[ -o interactive ]]; then
then> print yes
then> else
else> print no
else> fi

正如你所看到的,它给了我们同样的暗示。 如果您有跨多行的长输入语句,这可能非常有用。

将zsh设置为默认shell

如果您决定云服务器上的zsh适合您的每日shell需求,您可以将其设置为用户的默认shell。 这样,每次登录时,将加载您的首选项,并生成一个zsh会话。 您将不再需要键入“zsh”到您的VPS中的zsh。

chsh -s $(which zsh)

下次登录时,您将看到一个zsh提示。

作者:Justin Ellingwood
赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏