我正在考虑从 bash 迁移到 zsh,因为我经常看到赞美 zsh 的帖子。我是一位经验丰富的命令行用户,我假设基础知识几乎相同,所以我正在寻找建议以获得移动的好处,以及任何需要注意的问题。
请为每个答案提供一点建议。我正在寻找一口大小的块,在那里我可以回来并以稳定的速度将额外的信息集成到我的 shell 使用中,而不是试图一口气学习所有内容。
我正在考虑从 bash 迁移到 zsh,因为我经常看到赞美 zsh 的帖子。我是一位经验丰富的命令行用户,我假设基础知识几乎相同,所以我正在寻找建议以获得移动的好处,以及任何需要注意的问题。
请为每个答案提供一点建议。我正在寻找一口大小的块,在那里我可以回来并以稳定的速度将额外的信息集成到我的 shell 使用中,而不是试图一口气学习所有内容。
正如您所说,
zsh
在许多方面与bash
. 它具有一些您在 中找不到的功能bash
,并且可以通过强大的方式进行扩展。不要将移动视为一种革命,而应将其视为有助于您日常工作的一系列进化步骤。以下是我的一些提示.zshrc
。尽管您说您更喜欢单条建议,但这篇文章的列表很长。仍然是一个好主意。只需将有趣的部分添加到您的~/.zshrc
并重新加载source ~/.zshrc
. 最后一个提示:学习zsh
默认(“Emacs”)键盘快捷键的击键:^A ^E ^W Alt-F Alt-B Alt-P ^L ^R
. 您可以用Alt
两个单独的击键替换:Alt-P
相当于ESC
P
.这为您提供了更广泛的选项卡完成。
两端制表符补全。
制表符完成应该不区分大小写。
killall 更好的完成。
更改“单词”的定义,例如使用 ^W。
ls的颜色。
ls 的快捷方式。
所有开壳的历史记录;存储 10,000 个条目。这使它成为有用的记忆辅助工具,可帮助您查找上次使用的命令
./configure
等。随意使用 Alt-P(查找以这样开头的命令)和 ^R(在历史中搜索)。启用各种扩展通配符,例如 ls **/*.txt(查找所有文本文件),
ls -d *(D)
(显示所有文件,包括以“.”开头的文件)。要了解更多信息,请转到man zshexpn
“文件名生成”部分。这对于记住历史中的命令而不执行它们很有用。
键入“..”而不是“cd ..”、“/usr/include”而不是“cd /usr/include”。
很好的提示。
显示耗时超过 10 秒的命令的 CPU 使用情况统计信息
您在 Ubuntu 中广泛使用的一些命令。
列出按大小排序的包 - 在决定哪些包占用您的磁盘空间时很有用。
我会推荐这本书From bash to Z Shell。它提供了切换 shell 所需的所有建议。它解释了两种 shell 的不同之处,并使新的 zsher 变得容易。
这是我的.zshrc,这是最重要的!zsh 有很多选项可供您使用,因此请查看网络上的所有示例或阅读Zsh 主页上的文档。
除了命令行右侧的时间戳之外,我的 .zshrc 不包含任何非常酷的东西。
顺便说一句,请记住在此处的几个示例中尝试制表符补全:
将显示如下内容:
如果您使用无密码 ssh-keys 或 ssh-agent,您可能会发现 tabcomplete 远程文件很有用:
获得列表后,您可以多次按 Tab 键以循环显示不同的可能性。
但是要注意,这个shell会让你变得懒惰,让你觉得标准的shell是愚蠢和烦人的!
几个特别有用的扩展 glob:
rmdir *(/^F)
- 删除当前目录下所有非空目录grep traceback /srv/log/**/*(.m-2)
- 在过去两天修改的文件中查找此正则表达式chmod g+w **/*(U^I)
- 使我拥有且不可组写的任何文件成为组可写是的,当然你可以用它来写,
find
但这更容易冲掉。公平地说,它确实有两个缺点,都与它们都被扩展到命令行有关:如果它匹配数千个文件,命令行将变得太长并且这将失败,其次所有文件都被找到在文件开始运行之前。(
setopt extendedglob
如果尚未启用,则需要)我对 bash 了解不多,所以我无法与之匹敌。我的 zsh 配置文件中的一些片段。
一些配置
提示中的 Git
一些热键,在行首插入一些文本。
函数,然后我存储在 ~/.zsh/functions
git_info_for_prompt
一些 github 选项
我在同一次旅行:)
到目前为止,我发现问题是要有一个好的配置文件(.zshrc)。
以这个为例http://matt.blissett.me.uk/linux/zsh/zshrc,看看评论并破解你的方式。Stackoverflow 和 severphault 以及搜索的好地方。
我还没有深入研究http://dotfiles.org/.zshrc,但我没有那么多时间放松 :)
了解 zsh 中的扩展 glob 和递归 glob。
了解一些关于 zstyle 以及各种事物(尤其是补全)如何让您使用 zstyle 调整它们的配置。
查看关联数组。还有标准数组(注意与 bash 的区别,更好!)
如果您使用正则表达式,请查看
=~
(bash 也有)并考虑:setopt rematch_pcre
避免编写依赖于 zsh 魔法的脚本,因为虽然它使用起来很棒,但 zsh 可能倾向于只写。如果你使用的太多了,考虑一下何时切换到 Python 之类的语言。
Zsh 很诱人。这是黑暗的一面。欢迎。
很大的好处 - 出色的选项卡完成,带有许多命令的预打包完成脚本。这是一个显示输出的示例
apt-get<TAB>
:我已经进行了一些演讲,并将几个人转换为 zsh。我在 github 中保留了我的(有什么优势)笔记的 github 存储库以及我自己的 zsh 配置的启动器和副本。
http://github.com/mitechie/zshrc
另一个很棒的资源是zsh 爱好者页面(来自grml zsh 站点)。