iis服务器助手广告广告
返回顶部
首页 > 资讯 > 操作系统 >Linux使用zsh提高效率的5条建议
  • 735
分享到

Linux使用zsh提高效率的5条建议

linuxshelllinuxzshelllinuxzsh 2022-06-04 22:06:06 735人浏览 八月长安
摘要

平时比较喜欢命令行,不喜欢从图形化界面一个个的点过去;感觉还是命令搜索,查找方便些,快速些。但是,Bash本身提供的功能又不够方便,自己也懒得折腾。幸得GitHub上有前辈大神们开源的 zsh工具集,甚至方便。此工具可以

平时比较喜欢命令行,不喜欢从图形化界面一个个的点过去;感觉还是命令搜索,查找方便些,快速些。但是,Bash本身提供的功能又不够方便,自己也懒得折腾。幸得GitHub上有前辈大神们开源的 zsh工具集,甚至方便。此工具可以很方便的统一我们的平时的命令,无论在Maclinux,unix上,基本都可以使用同样的命令,配置。oh-my-zsh的提示功能非常强悍,插件功能更是牛x,支持各种语法着色等等,大神们又分享出自己平时常用的命令简写,值得平实用linux/mac的程序员们一试。我用zsh的时间也不短了,平实很少有命令需要我自己添加alias的,由此可见oh-my-zsh的alias功能很实用。

github下载并安装oh-my-zsh: https://github.com/robbyrussell/oh-my-zsh

Z shell(zsh)是 Linux 和类 Unix 系统中的一个命令解析器。 它跟 sh (Bourne shell) 家族的其它解析器(如 bash 和 ksh)有着相似的特点,但它还提供了大量的高级特性以及强大的命令行编辑功能,如增强版 Tab 补全。

在这里不可能涉及到 zsh 的所有功能,描述它的特性需要好几百页。在本文中,我会列出 5 个技巧,让你通过在命令行使用 zsh 来提高你的生产力。

1、主题和插件

多年来,开源社区已经为 zsh 开发了数不清的主题和插件。主题是一个预定义提示符的配置,而插件则是一组常用的别名命令和函数,可以让你更方便的使用一种特定的命令或者编程语言

如果你现在想开始用 zsh 的主题和插件,那么使用一种 zsh 的配置框架是你最快的入门方式。在众多的配置框架中,最受欢迎的则是 Oh My Zsh。在默认配置中,它就已经为 zsh 启用了一些合理的配置,同时它也自带上百个主题和插件。

主题会在你的命令行提示符之前添加一些有用的信息,比如你 Git 仓库的状态,或者是当前使用的 python 虚拟环境,所以它会让你的工作更高效。只需要看到这些信息,你就不用再敲命令去重新获取它们,而且这些提示也相当酷炫。下图就是我选用的主题 Powerlevel9k:

除了主题,Oh my Zsh 还自带了大量常用的 zsh 插件。比如,通过启用 Git 插件,你可以用一组简便的命令别名操作 Git, 比如


$ alias | grep -i git | sort -R | head -10
g=git
ga='git add'
gapa='git add --patch'
gap='git apply'
gdt='git diff-tree --no-commit-id --name-only -r'
gau='git add --update'
gstp='git stash pop'
gbda='git branch --no-color --merged | command grep -vE "^(\*|\s*(master|develop|dev)\s*$)" | command xargs -n 1 git branch -d'
GCs='git commit -S'
glg='git log --stat'

 zsh 还有许多插件可以用于许多编程语言、打包系统和一些平时在命令行中常用的工具。以下是我 Ferdora 工作站中用到的插件表:

git golang fedora Docker oc sudo vi-mode virtualenvwrapper

2、智能的命令别名

命令别名在 zsh 中十分有用。为你常用的命令定义别名可以节省你的打字时间。Oh My Zsh 默认配置了一些常用的命令别名,包括目录导航命令别名,为常用的命令添加额外的选项,比如:


ls='ls --color=tty'
grep='grep --color=auto --exclude-dir={.bzr,CVS,.git,.hg,.svn}'

除了命令别名以外,zsh 还自带两种额外常用的别名类型:后缀别名和全局别名。

后缀别名可以让你基于文件后缀,在命令行中利用指定程序打开这个文件。比如,要用 vim 打开 YAML 文件,可以定义以下命令行别名:

alias -s {yml,yaml}=vim

现在,如果你在命令行中输入任何后缀名为 yml 或 yaml 文件,zsh 都会用 vim 打开这个文件。


$ playbook.yml
# Opens file playbook.yml using vim

全局别名可以让你创建一个可在命令行的任何地方展开的别名,而不仅仅是在命令开始的时候。这个在你想替换常用文件名或者管道命令的时候就显得非常有用了。比如:

alias -g G='| grep -i'

要使用这个别名,只要你在想用管道命令的时候输入 G 就好了:


$ ls -l G do
drwxr-xr-x. 5 rgerardi rgerardi 4096 Aug 7 14:08 Documents
drwxr-xr-x. 6 rgerardi rgerardi 4096 Aug 24 14:51 Downloads

接着,我们就来看看zsh 是如何导航文件系统的

3、便捷的目录导航

当你使用命令行的时候,在不同的目录之间切换访问是最常见的工作了。 zsh 提供了一些十分有用的目录导航功能来简化这个操作。这些功能已经集成到 Oh My Zsh 中了, 而你可以用以下命令来启用它

setopt  autocd autopushd \ pushdignoredups

使用了上面的配置后,你就不用输入 cd 来切换目录了,只需要输入目录名称,zsh 就会自动切换到这个目录中:


$ pwd
/home/rgerardi
$ /tmp
$ pwd
/tmp

如果想要回退,只要输入 -:

zsh 会记录你访问过的目录,这样下次你就可以快速切换到这些目录中。如果想要看这个目录列表,只要输入 dirs -v:


$ dirs -v
0    ~
1    /var/log
2    /var/opt
3    /usr/bin
4    /usr/local
5    /usr/lib
6    /tmp
7    ~/Projects/Opensource.com/zsh-5tips
8    ~/Projects
9    ~/Projects/ansible
10   ~/Documents

如果想要切换到这个列表中的其中一个目录,只需输入 ~# (# 代表目录在列表中的序号)就可以了。比如


$ pwd
/home/rgerardi
$ ~4
$ pwd
/usr/local

你甚至可以用别名组合这些命令,这样切换起来就变得更简单:


d='dirs -v | head -10'
1='cd -'
2='cd -2'
3='cd -3'
4='cd -4'
5='cd -5'
6='cd -6'
7='cd -7'
8='cd -8'
9='cd -9'

现在你可以通过输入 d 来查看这个目录列表的前10个,然后用目录的序号来进行切换:


$ d
0    /usr/local
1    ~
2    /var/log
3    /var/opt
4    /usr/bin
5    /usr/lib
6    /tmp
7    ~/Projects/Opensource.com/zsh-5tips
8    ~/Projects
9    ~/Projects/ansible
$ pwd
/usr/local
$ 6
/tmp
$ pwd
/tmp

最后,你可以在 zsh 中利用 Tab 来自动补全目录名称。你可以先输入目录的首字母,然后按 TAB 键来补全它们:


$ pwd
/home/rgerardi
$ p/o/z (TAB)
$ Projects/Opensource.com/zsh-5tips/

以上仅仅是 zsh 强大的 Tab 补全系统中的一个功能。接来下我们来探索它更多的功能。

4、先进的 Tab 补全

zsh 强大的补全系统是它的卖点之一。为了简便起见,我称它为 Tab 补全,然而在系统底层,它起到了几个作用。这里通常包括展开以及命令补全,我会在这里用讨论它们。如果想了解更多,详见 用户手册。

在 Oh My Zsh 中,命令补全是默认启用的。要启用它,你只要在 .zshrc 文件中添加以下命令:


autoload -U compinit
compinit

zsh 的补全系统非常智能。它会尝试唯一提示可用在当前上下文环境中的项目 —— 比如,你输入了 cd 和 TAB,zsh 只会为你提示目录名,因为它知道其它的项目放在 cd 后面没用。

反之,如果你使用与用户相关的命令便会提示用户名,而 ssh 或者 ping 这类则会提示主机名。

zsh 拥有一个巨大而又完整的库,因此它能识别许多不同的命令。比如,如果你使用 tar 命令, 你可以按 TAB 键,它会为你展示一个可以用于解压的文件列表:


$ tar -xzvf test1.tar.gz test1/file1 (TAB)
file1 file2

如果使用 git 的话,这里有个更高级的示例。在这个示例中,当你按 TAB 键, zsh 会自动补全当前库可以操作的文件:


$ ls
original plan.txt zsh-5tips.md zsh_theme_small.png
$ git status
On branch master
Your branch is up to date with 'origin/master'.
Changes not staged for commit:
 (use "git add <file>..." to update what will be committed)
 (use "git checkout -- <file>..." to discard changes in working directory)
    modified:  zsh-5tips.md
no changes added to commit (use "git add" and/or "git commit -a")
$ git add (TAB)
$ git add zsh-5tips.md

zsh 还能识别命令行选项,同时它只会提示与选中子命令相关的命令列表:


$ git commit - (TAB)
--all         -a    -- stage all modified and deleted paths
--allow-empty          -- allow recording an empty commit
--allow-empty-message      -- allow recording a commit with an empty message
--amend             -- amend the tip of the current branch
--author            -- override the author name used in the commit
--branch            -- show branch infORMation
--cleanup            -- specify how the commit message should be cleaned up
--date             -- override the author date used in the commit
--dry-run            -- only show the list of paths that are to be committed or not, and any untracked
--edit         -e    -- edit the commit message before committing
--file         -F    -- read commit message from given file
--gpg-sign       -S    -- GPG-sign the commit
--include       -i    -- update the giwnwCFQxven files and commit the whole index
--interactive          -- interactively update paths in the index file
--message       -m    -- use the given message as the commit message
... TRUNCATED ...

在按 TAB 键之后,你可以使用方向键来选择你想用的命令。现在你就不用记住所有的 git 命令项了。

zsh 还有很多有用的功能。当你用它的时候,你就知道哪些对你才是最有用的。

5、命令行编辑与历史记录

zsh 的命令行编辑功能也十分有用。默认条件下,它是模拟 emacs 编辑器的。如果你是跟我一样更喜欢用 vi/vim,你可以用以下命令启用 vi 的键绑定。

$ bindkey -v

如果你使用 Oh My Zsh,vi-mode 插件可以启用额外的绑定,同时会在你的命令提示符上增加 vi 的模式提示 —— 这个非常有用。

当启用 vi 的绑定后,你可以在命令行中使用 vi 命令进行编辑。比如,输入 ESC+/ 来查找命令行记录。在查找的时候,输入 n 来找下一个匹配行,输入 N 来找上一个。输入 ESC 后,常用的 vi 命令都可以使用,如输入 0 跳转到行首,输入 $ 跳转到行尾,输入 i 来插入文本,输入 a 来追加文本等等,即使是跟随的命令也同样有效,比如输入 cw 来修改单词。

除了命令行编辑,如果你想修改或重新执行之前使用过的命令,zsh 还提供几个常用的命令行历史功能。比如,你打错了一个命令,输入 fc,你可以在你偏好的编辑器中修复最后一条命令。使用哪个编辑是参照 $EDITOR 变量的,而默认是使用 vi。

另外一个有用的命令是 r, 它会重新执行上一条命令;而 r <Word> 则会执行上一条包含 WORD 的命令。

最后,输入两个感叹号(!!),可以在命令行中回溯最后一条命令。这个十分有用,比如,当你忘记使用 sudo 去执行需要权限的命令时:


$ less /var/log/dnf.log
/var/log/dnf.log: Permission denied
$ sudo !!
$ sudo less /var/log/dnf.log

这个功能让查找并且重新执行之前命令的操作更加方便。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对我们的支持。如果你想了解更多相关内容请查看下面相关链接

--结束END--

本文标题: Linux使用zsh提高效率的5条建议

本文链接: https://www.lsjlt.com/news/19899.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Linux使用zsh提高效率的5条建议
    平时比较喜欢命令行,不喜欢从图形化界面一个个的点过去;感觉还是命令搜索,查找方便些,快速些。但是,Bash本身提供的功能又不够方便,自己也懒得折腾。幸得github上有前辈大神们开源的 zsh工具集,甚至方便。此工具可以...
    99+
    2022-06-04
    linux shell linux z shell linux zsh
  • 怎么在Linux系统中使用zsh提高效率
    怎么在Linux系统中使用zsh提高效率?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。1、主题和插件多年来,开源社区已经为 zsh 开发了数不清的主题和插件。主题是一个预定义提...
    99+
    2023-06-09
  • 十条建议帮你提高Python编程效率
    程序员的时间很宝贵,Python这门语言虽然足够简单、优雅,但并不是说你使用Python编程,效率就一定会高。要想节省时间、提高效率,还是需要注意很多地方的。 今天就与大家分享资深Python程序员总结的1...
    99+
    2022-06-04
    帮你 十条 效率
  • 怎么使用GNU Parallel提高Linux命令行执行效率
    这篇文章主要为大家展示了“怎么使用GNU Parallel提高Linux命令行执行效率”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“怎么使用GNU Parallel提高Linux命令行执行效率”...
    99+
    2023-06-16
  • 提高效率的Vue指令怎么使用
    这篇文章主要介绍“提高效率的Vue指令怎么使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“提高效率的Vue指令怎么使用”文章能帮助大家解决问题。v-model相信大家对v-model并不陌生,简单...
    99+
    2023-07-05
  • 如何在PHP开发中使用Linux重定向提高效率?
    PHP是一种非常流行的编程语言,它可以用于开发各种不同类型的Web应用程序,包括动态网页、电子商务网站和博客等。而Linux重定向则是Linux系统中非常重要的一种功能,它可以帮助我们提高开发效率。本文将为大家介绍如何在PHP开发中使用Li...
    99+
    2023-07-27
    linux 重定向 开发技术
  • 提高你的工作效率linux技巧具体用哪些
    提高你的工作效率linux技巧具体用哪些,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。linux中的一些小技巧可以大大提高你的工作效率,本文就细数那些提高效率或者简单却有效的l...
    99+
    2023-06-05
  • 为什么在Linux上使用Python和Numpy可以提高IDE的效率?
    在计算机编程领域中,IDE(集成开发环境)是开发者日常工作中最常用的工具之一。对于Python开发者来说,PyCharm是最受欢迎的IDE之一。但是,你知道吗?在Linux上使用Python和Numpy可以进一步提高IDE的效率。 首先,让...
    99+
    2023-09-06
    numpy ide linux
  • 如何使用容器提高编程的效率?
    近年来,容器技术在软件开发中越来越受到关注。容器可以让开发者在不同的环境中快速部署和运行应用程序,从而提高编程的效率。本文将介绍如何使用容器提高编程的效率。 一、什么是容器技术? 容器技术是一种虚拟化技术,它可以将应用程序及其依赖项打包到一...
    99+
    2023-06-01
    leetcode 编程算法 容器
  • Linux 数组与 Python 函数的结合使用,如何提高代码效率?
    随着人工智能、大数据等技术的快速发展,程序员们对于代码效率的要求越来越高。如何快速有效地完成编程任务,成为了程序员们必须要面对的一个问题。在这个过程中,Linux 数组与 Python 函数的结合使用,成为了一种比较常见的提高代码效率的方...
    99+
    2023-07-20
    函数 linux 数组
  • Linux下如何使用PHP中的对象和数组提高开发效率?
    PHP是一种非常流行的脚本语言,被广泛应用于Web开发领域。PHP中的对象和数组是其重要的数据类型,也是提高开发效率的重要工具。本文将介绍如何在Linux下使用PHP中的对象和数组来提高开发效率。 一、对象 对象是PHP中的一种数据类型,...
    99+
    2023-08-24
    linux 数组 对象
  • 使用Golang Facade提高项目开发效率的技巧
    使用Golang Facade可以提高项目开发效率的一些技巧包括:1. 封装复杂的子系统:将复杂的子系统封装在一个简单易用的接口之后...
    99+
    2023-10-08
    Golang
  • 怎么使用Tmux提高终端环境下的效率
    这篇文章主要介绍“怎么使用Tmux提高终端环境下的效率”,在日常操作中,相信很多人在怎么使用Tmux提高终端环境下的效率问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么使用Tmux提高终端环境下的效率”的疑...
    99+
    2023-06-16
  • 使用Git、NPM、NumPy提高Java开发效率的方法
    随着Java开发的不断发展,开发者们也在不断寻找提高开发效率的方法。在这篇文章中,我们将介绍三种工具——Git、NPM、NumPy,它们可以让Java开发更加高效。 Git:版本控制工具 Git是一款分布式版本控制工具,它可以帮助团队协作...
    99+
    2023-10-28
    git npm numy
  • 如何使用小工具提高Python的开发效率
    本篇文章为大家展示了如何使用小工具提高Python的开发效率,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。这里将介绍一些有用的小工具,它们能够帮助我们提高工作效率。在Sublime Text中支持P...
    99+
    2023-06-15
  • 如何使用 Python 关键字来提高 IDE 的效率?
    Python 作为一门广泛使用的编程语言,拥有许多强大的关键字,这些关键字可以帮助开发者编写更加高效、可读性更强的代码。在本文中,我们将探讨如何使用 Python 关键字来提高 IDE 的效率。 Python 关键字是指在编程语言中被保留的...
    99+
    2023-08-01
    关键字 存储 ide
  • 如何使用 Go 语言提高 Shell 脚本的效率?
    Shell 脚本是一种非常方便的自动化工具,但是当脚本变得越来越复杂时,它的效率和可读性就会变得越来越差。这时候,我们可以考虑使用 Go 语言来提高 Shell 脚本的效率。Go 语言具有高效的并发模型和优秀的性能,能够在处理大量数据时提...
    99+
    2023-07-21
    load shell leetcode
  • 如何在Linux系统中使用索引来提高数据访问效率?
    在Linux系统中,索引是一种用于快速定位数据的数据结构。它可以帮助我们快速地找到我们需要的数据,从而提高数据访问的效率。在本文中,我们将介绍如何在Linux系统中使用索引来提高数据访问效率,并演示一些相关的代码。 一、什么是索引? 在计...
    99+
    2023-07-23
    linux numy 索引
  • 如何在ASP和Linux中使用响应数组来提高应用程序的效率?
    ASP和Linux是两个非常流行的应用程序开发环境。在开发应用程序时,我们通常会遇到需要存储和处理大量数据的情况。为了提高应用程序的效率,我们可以使用响应数组来处理数据。本文将介绍如何在ASP和Linux中使用响应数组来提高应用程序的效率。...
    99+
    2023-10-27
    linux 响应 数组
  • 如何利用Linux下的ASP IDE开发技术提高开发效率?
    Linux下的ASP IDE是一款非常实用的开发工具,它能够提高开发人员的开发效率,从而让开发工作变得更加轻松。在本文中,我们将介绍如何利用Linux下的ASP IDE开发技术,从而提高开发效率。 一、安装ASP IDE 首先,我们需要在L...
    99+
    2023-06-15
    ide 开发技术 linux
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作