本篇文章扣丁学堂Linux培训小编给大家分享一下Linux使用zsh提高效率的5条建议,对Linux开发技术感兴趣或者还是想要加入到Linux开发领域的小伙伴可以随小编一起来了解一下哦。

Linux培训

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

在这里不可能涉及到zsh的所有功能,本文列出5 个技巧,让你通过在命令行使用zsh 来提高你的生产力。

1、主题和插件

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

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

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

除了主题,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..." to update what will be committed)

(use "git checkout --..." 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 given 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 的命令。

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

$ less /var/log/dnf.log

/var/log/dnf.log: Permission denied

$ sudo !!

$ sudo less /var/log/dnf.log

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

想要了解更多关于Linux开发方面内容的小伙伴,请关注扣丁学堂Linux培训官网、微信等平台,扣丁学堂IT职业在线学习教育有专业的Linux讲师为您指导,此外扣丁学堂老师精心推出的Linux视频教程定能让你快速掌握Linux从入门到精通开发实战技能。

linux zsh ping命令,扣丁学堂Linux培训简述Linux使用zsh提高效率的5条建议相关推荐

  1. php 读取文件的所有图片格式,扣丁学堂PHP培训简述PHP如何读取文件夹下所有图片、文件-php文件...

    本篇文章扣丁学堂PHP培训小编给读者们分享一下PHP读取文件夹下所有图片.文件的实例,文中有代码列出供小伙伴们参考,希望对小伙伴们有帮助. 如下所示:$hostdir=dirname(__FILE__ ...

  2. java for 字母金字塔_扣丁学堂Java培训简述如何用C#随机数生成字母金字塔

    本篇文章扣丁学堂Java培训小编给读者们简单分享一下如何用C#随机数生成字母金字塔,具有一定的参考价值,感文中有详细的代码列出供感兴趣的小伙伴参考,想要了解的小伙伴就随小编来看一下具体内容吧. 1.代 ...

  3. linux zsh命令行vim命令补齐,Linux使用zsh提高效率的5条建议

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

  4. ping 延迟 linux,使用ping命令查看网络延迟--用Enki学Linux系列(7)

    使用ping命令查看网络延迟 Using ping To Measure Network Latency ping命令持续发送少量互联网流量到远程地址并报告收到回应的总时间.如果流量因为网络故障或者错 ...

  5. python3 urlopen_扣丁学堂解析Python3中urlopen()使用详解

    扣丁学堂解析Python3中urlopen()使用详解 2018-07-23 13:31:14 1318浏览 在现如今,2018年Python一直属于IT行业中比较热门技术,那么今天扣丁学堂Pytho ...

  6. python的excell库_扣丁学堂Python基础教程之Excel处理库openpyxl详解

    扣丁学堂Python基础教程之Excel处理库openpyxl详解 2018-05-04 09:49:49 3197浏览 openpyxl是一个第三方库,可以处理xlsx格式的Excel文件.pipi ...

  7. python socket编程之双方相互通信简单实例_扣丁学堂Python开发socket实现简单通信功能实例...

    扣丁学堂Python开发socket实现简单通信功能实例 2018-08-21 14:12:38 747浏览 今天扣丁学堂Python培训老师给大家结合实例介绍一下关于socket实现的简单通信功能, ...

  8. python 匿名函数示例_扣丁学堂Python3开发之匿名函数用法示例详解

    扣丁学堂Python3开发之匿名函数用法示例详解 2018-07-26 14:01:11 1324浏览 今天扣丁学堂Python培训给大家分享关于Python3匿名函数用法,结合实例形式分析了Pyth ...

  9. h5的fetch方法_扣丁学堂HTML5分享h5中的fetch方法解读

    扣丁学堂HTML5分享h5中的fetch方法解读 2018-07-06 14:43:10 725浏览 本篇文章扣丁学堂 Fetch概念: fetch身为H5中的一个新对象,他的诞生,是为了取代ajax ...

最新文章

  1. 成都网络推广带大家了解一个好的标题需遵循的原则有哪些?
  2. 数据类型的转换(范围最大的)
  3. wxWidgets:wxScrollWinEvent类用法
  4. Jquery操作Cookie取值错误的解决方法
  5. confer安装与连接度的计算
  6. [雪峰磁针石博客]接口测试面试题
  7. 生信常用分析图形绘制02 -- 解锁火山图真谛!
  8. halcon 缺陷检测 药片检测(有无)
  9. unity Debug.DrawLine画线
  10. 企业微信定时发送图片/文字信息
  11. 计算机黑屏但是有鼠标,电脑黑屏但是鼠标能动解决方法
  12. 获得手机上的软件名称 软件图标 软件包名
  13. 笔记本无线热点共享批处理bat_马立杰_新浪博客
  14. openshift Tekton pipeline 实践
  15. 符号在excel中的引用_如何在Excel中添加项目符号
  16. expect ‘:‘ at 0, actual =] with root
  17. Android设置手机壁纸(WallPaper)
  18. MySQL存emoji表情
  19. 你需要知道的 N 种抓取 dump 的工具
  20. sql 语句left join关联超过2张表时,随着left join一路向左,永远只能是最左边的关联表与新表关联吗?还是母表可以一直on下去?

热门文章

  1. 使用VISIO画状态图的几点注意事项
  2. 姚劲波回应“简历泄露门”:将堵住技术漏洞
  3. ios自带原生邮箱绑定163邮箱教程
  4. 【谦川解读】银保监会2号文
  5. AdFly一个可以赚钱的短链接网站
  6. Windows 下常见的反调试方法
  7. 威客模式终极公式的第二次修正
  8. ElasticSearch Java API:Mget操作
  9. 第27章 LTDC/DMA2D—液晶显示—零死角玩转STM32-F429系列
  10. BeautifulSoup爬取豆瓣电影排名