目的
使用Oh My ZSH安装ZSH并学习基本功能。
发行版
在几乎每个发行版的存储库中都可以找到ZSH。
要求
具有root特权的有效Linux安装。
困难
简单
约定
介绍
重击还不错。它可以很好地完成工作,但是您是否考虑过Bash拥有一些额外的功能使其工作起来更方便的情况?那就是ZBC是more-or-less。
它包含了Bash所期望的所有功能,但是还添加了一些非常不错的功能,使您的生活更加轻松。实际上,您会惊讶于它们在命令行中使工作变得如此容易。
安装ZSH
首先,您将需要安装ZSH。它非常受欢迎,因此您可以在发行版本的存储库中找到它。
Ubuntu /Debian的
$ sudo apt install zsh
软呢帽
# dnf -y install zsh
CentOS的
# yum -y install zsh
OpenSUSE
# zypper in zsh
Arch Linux
# pacman -S zsh
Gentoo
# emerge --ask zsh
您可能会明白。只需在Bash中将ZSH作为命令输入即可使用ZSH。该特定终端将暂时切换到ZSH。不过,最好是永久切换。它不会花费您任何费用,并且您可以执行通常以相同的方式进行的所有操作。另外,如果您确实需要,您可以以完全相同的方式切换回去。
$ chsh -s /bin/zsh
您可能想要re-login或关闭所有终端才能使更改生效。
安装Oh-My-ZSH
现在,您已经安装了ZSH并将其用作默认 shell ,这是一个非常非常好的主意,为ZSH选择add-on,称为Oh-My-ZSH。它是一组主题和插件,可增强ZSH的现有功能。不会降低它的速度或妨碍它,所以抓住它并安装它。
$ sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"
如果您想在安装之前阅读更多有关它的信息,请查看项目的https://github.com/robbyrussell/oh-my-zsh
。
配置文件
就像Bash拥有的一样.bashrc
,ZSH有.zshrc
。它是包含 shell 程序配置选项的单个文件,您可以使用它来设置别名和自定义运行时行为。到目前为止,由于Oh-My-ZSH,您实际上已经有了一套不错的默认设置,该默认设置在文件安装期间进行了设置。
主题
ZSH支持主题提示。它带有一些内置主题,但与Oh-My-ZSH附带的主题相去甚远。您可以看一看它们的外观https://github.com/robbyrussell/oh-my-zsh/wiki/themes
Oh-My-ZSH Wiki。要更改主题,请打开.zshrc
并找到下面的行。将主题名称更改为您要尝试的主题名称。
ZSH_THEME="robbyrussell"
外挂程式
Oh-My-ZSH还带来了许多插件。在这里将它们全部覆盖会花费很长时间,因此请查看https://github.com/robbyrussell/oh-my-zsh/wiki/Plugins
整个列表的Oh-My-ZSH Wiki。无论您选择哪个其他选项,都可以启用extract
和z
是个好主意。再一次,您的插件在行中设置.zshrc
。
plugins=(git extract z)
制表符完成
Bash确实具有制表符补全功能,但充其量是弱的。 ZSH将制表符完成度提高到一个新水平。尝试输入ls
然后是目录名。名称后,快速连续按两次Tab键。 ZSH将自动显示您命名目录中的文件和文件夹。您可以使用箭头键浏览这些目录。在要查看的那一个上按Enter,然后运行命令。
同样的事情也适用于其他命令。试试看cd
。
ZSH可以使用tab不仅仅是目录。它也适用于命令。尝试输入mk
然后按两次Tab键。您将获得相同类型的菜单,并以以下不同的命令开头mk
。
目录速记
您讨厌输入长目录路径吗? ZSH也有解决方案。它支持自己的速记版本,使您仅可以键入路径中每个目录的前几个字母。它将使它们尽可能地与完整路径匹配。如果找到多个结果,它将显示它们供您选择。
尝试输入$ ls /u/sh/ico
进入终端并按Tab。 ZSH会将其扩展到共享图标目录的完整路径。
别名
这是Oh-My-ZSH的功能,而不是 shell 本身,但仍然非常方便。 Oh-My-ZSH带有许多优秀的别名,可用于将目录导航到Git和Systemd之类的通用程序。同样,这里还有很多时间,但是这里有一些亮点。
cd ../.. = ...
cd ../../.. = ....
mkdir -p = md
rmdir = rd
git add = ga
git add --all = gaa
git branch = gb
git commit -m = gcmsg
git checkout = gco
git pull origin currentbranch = ggpull
git push origin currentbranch = ggpush
systemctl start = sc-start
systemctl stop = sc-stop
systemctl status = sc-status
systemctl enable = sc-enable
如果您想查看整个列表,请再次https://github.com/robbyrussell/oh-my-zsh/wiki/Cheatsheet
Wiki是您最好的选择。
ž
Z
实际上不是ZSH或Oh-My-ZSH的一部分,后者只是作为插件启用。即便如此,它也很容易与ZSH允许的使用样式配合使用。Z
是一个脚本,用于跟踪经常使用的目录和最新目录,因此您可以使用单个作品或字符组合来访问它们。
例如,如果您有一个文件夹位于/home/user/Pictures/photography/Canon/2017/pics
,并且您一直在使用它,您可以使用Z
大大缩短时间。用Z
您将使用以下内容linux命令进入该目录。
$ z pics
是的,这很简单。
杀死进程搜索
杀死无响应的过程可能很痛苦。首先,您需要使用ps
查找有问题的过程。然后,您需要使用kill
以及所选的进程号。 ZSH简化了该过程。输入kill
后跟要杀死的进程或程序的名称或名称的一部分。然后,使用选项卡告诉ZSH发现进程ID。
但是,请谨慎使用此功能。假设您想杀死反应迟钝的Firefox,但是Firejail与其他程序一起运行。打字kill fire
可能无法找到您想要的东西,输入kill firefox
可能会。根深蒂固地使用它也不是一个好主意。你真的不想输入类似kill sys
并调低PID 1。
命令特定的历史
有时回顾您的命令历史是一个巨大的痛苦。您需要一个在20行之前编写的命令,因为您不能完全确定所使用的开关,并且尽管有所有原因,也似乎找不到它。好吧,ZSH支持command-specific历史记录。因此,如果您知道您使用的命令是du
, 输入du
然后开始按向上箭头。您只会看到您最近对du命令。
切换搜寻
尽管手册页很棒,但是当您只是想快速真正地编写one-off命令时,它们并没有那么方便。另外,那里总是有很多可用开关的基本参考。 ZSH具有出色的功能,可让您在编写命令时搜索开关。开始命令,写与开关关联的破折号,然后按Tab。 ZSH将为您显示可用选项。大多数时候,它会询问您是否要显示所有项目,然后按y
确认。
全球通
您是否曾经使用通配符从终端中搜索内容?
$ ls -l *.png
那是一种通行形式。 globbing本质上是 shell 的正则表达式。虽然Bash确实支持它,但是ZSH的globbing功能远远超出了Bash。
尝试在您的计算机中键入此命令/home
ZSH目录。
$ ls **/*
是的,您的终端中有很多垃圾。该命令实际上列出了当前目录中的所有内容以及所有子目录。您也可以使用它来查找特定的文件类型。
$ ls **/*.txt
这就是全部.txt
您的文件/home
目录。
您也可以指定完整的文件名。尝试使用它找到所有README
您的文件/home
目录。
$ ls **/README.*
您也可以在文件名中搜索单词或短语。
## Starts with READ
$ ls **/(READ)*.*
## Ends With READ
$ ls **/*(READ).*
## Contains READ Anywhere
$ ls **/*(READ)*.*
这是列出文件的一种非常尴尬的方式。有两种非常简单的方法来指定文件和文件夹。
# Files Only
$ ls **/*(.)
# Folders Only
$ ls **/*(/)
您还可以指定多个字符之一。
# All files that start with A
$ ls **/[A]*(.)
# All files that start with A or a
$ ls **/[Aa]*(.)
# All Files that contain the number
$ ls **/*[1]*(.)
# Any files that end in a vowel
$ ls **/*[aeiouy](.)
如果要排除一个或多个字符,也可以这样做。
# Files that don't start with A or a
$ ls **/[^Aa](.)
您也可以搜索字母范围。
# Files that end in a number
$ ls **/*(.)
全球资格赛
您还可以使用其他选项来排序和过滤搜索结果。这些称为全局限定符,它们使搜索文件变得非常简单。
首先,您可以使用L
。
$ ls -lahS **/*(.Lm+250)
上面的示例仅按大小顺序显示大于250MB的文件。所以,L
受大小限制。与之配对k
,m
和g
指定尺寸单位。然后,可以使用正数或负数设置截止点,并确定结果是高于还是低于该点。
查看更多。
# List all files under 1GB by size
$ ls -lahS **/*(.Lg-1)
# List all files over 10MB by size
$ ls -lahS **/*(.Lm+10)
# List all files that start with a under 100MB by size
$ ls -lahS **/[a]*(.Lm-100)
还有限定符,可以通过修改和访问进行过滤。他们是m
和a
分别。他们可以配对s
,m
,h
,d
,w
和M
。这些代表几秒钟,几分钟,几小时,几天,几周和几个月。要列出他上周内修改的所有文件,请尝试此操作。
$ ls -lah **/*(.mw-1)
语句中的数字表示要回顾的单位数。这将查找最近3天修改过的所有文件。
$ ls -lah **/*(.md-3)
还有其他不太常见的限定词可以探索,您可以将它们完全串在一起以进一步缩小搜索范围。
自动更正
最后一个功能非常好。每个人都输错了某些内容,不得不从头开始重新输入所有内容。真是烦人。 ZSH尝试提供帮助。如果ZSH检测到一个单词看起来像是实际命令的错误键入版本,它将询问您是否要更正并运行该命令,从而省去了重新键入所有内容的麻烦。
通过错误的方式创建目录来尝试一下。
$ mdkir some-folder
ZSH来抢救!
总结思想
ZSH的所有荣耀就在那里。这不是您可以在这里阅读并立即知道的东西。您可以立即使用该工具,其使用方式与Bash完全相同。然后,您可以开始尝试不同的功能,然后慢慢将它们融入您的惯用习惯。
一旦您开始习惯ZSH,您就会意识到自己喜欢并依赖它。它并没有真正的革命性,但是它提供了您可能希望几年前想到的各种便利。