Zsh:75个命令、插件、别名和工具,助你提升终端效率
我每天大部分时间都在终端工作,而我选择的 shell 是 Zsh——一个高度可定制的 Unix shell,拥有许多强大的功能。作为一个懒惰的开发者™,我一直在寻找减少输入量并自动化所有任务的方法。幸运的是,Zsh 正是为此而生的。
在这篇文章中,我将分享 75 个命令、插件、别名和工具,希望能帮助你节省一些按键次数,提高日常工作的效率。
如果你还没有在你的机器上安装 Zsh,请查看这篇文章,我将向你展示如何快速上手。
关键要点
- Zsh 是一个高度可定制的 Unix shell,非常适合寻求自动化任务并通过减少按键次数来提高生产力的开发者。
- 本文提供了关于 75 个 Zsh 命令、插件、别名和工具的全面指南,包括实际应用和自定义技巧。
- Zsh 的关键特性包括强大的命令行导航、条件执行以及高效地链接多个命令的能力。
- Oh My Zsh,一个社区驱动的框架,通过提供数千个有用的函数、插件和主题来增强 Zsh,从而简化你的工作流程。
- 本文还重点介绍了别名和插件的使用,它们可以显著加快常用任务的速度,并简化 Zsh 中的复杂命令。
Zsh 的 15 个开箱即用功能
Zsh 与 Bash 共享许多方便的功能。以下功能并非 Zsh 独有,但仍然值得了解。我鼓励你开始使用命令行来执行以下列出的操作。起初,它可能看起来比使用 GUI 更费力,但一旦你掌握了窍门,你将永远不会后悔。
- 从文件系统的任何位置输入
cd
将直接带你回到你的主目录。 - 输入
!!
将调出最后一个命令。如果命令失败是因为需要管理员权限,这将非常方便。在这种情况下,你可以输入sudo !!
。 - 你可以使用
&&
来链接多个命令。例如,mkdir project && cd project && npm init -y
。 - 使用
||
可以进行条件执行。例如,git commit -m "whatever..." || echo "Commit failed"
。 - 使用
mkdir
命令的-p
开关将允许你根据需要创建父目录。使用花括号扩展可以减少重复。例如,mkdir -p articles/jim/sitepoint/article{1,2,3}
。 - 在每个命令的基础上设置环境变量,例如:
NODE_DEBUG=myapp node index.js
。或者,在每个会话的基础上设置:export NODE_DEBUG=myapp
。你可以通过输入echo $variable-name
来检查它是否已设置。 - 将一个命令的输出管道传输到第二个命令。例如,
cat /var/log/kern.log | less
使长的日志易于阅读,或者history | grep ssh
搜索包含“ssh”的任何历史记录条目。 - 你可以从终端在你的编辑器中打开文件。例如,
nano ~/.zshrc
(nano),subl ~/.zshrc
(Sublime Text),code ~/.zshrc
(VS Code)。如果文件不存在,当你按下编辑器中的“保存”时,它将被创建。 - 导航是一项重要的技能。不要仅仅依赖你的箭头键。例如,
<kbd>Ctrl</kbd> <kbd>a</kbd>
将带你到一行的开头。 - 而
<kbd>Ctrl</kbd> <kbd>e</kbd>
将带你到结尾。 - 你可以使用
<kbd>Ctrl</kbd> <kbd>w</kbd>
删除一个单词(向后)。 -
<kbd>Ctrl</kbd> <kbd>u</kbd>
将删除从光标到行首的所有内容。 -
<kbd>Ctrl</kbd> <kbd>k</kbd>
将清除从光标到行尾的所有内容。最后三个可以使用<kbd>Ctrl</kbd> <kbd>y</kbd>
撤消。 - 你可以使用
<kbd>Ctrl</kbd> <kbd>Shift</kbd> <kbd>c</kbd>
复制文本。这比右键单击并选择“复制”要优雅得多。 - 相反,你可以使用
<kbd>Ctrl</kbd> <kbd>shift</kbd> <kbd>v</kbd>
粘贴复制的文本。
尝试记住这些按键组合。你会惊讶于它们会有多么频繁地派上用场。
15 个自定义别名,提升你的生产力
别名是常规命令的终端快捷方式。你可以将它们添加到你的 ~/.zshrc
文件中,然后重新加载你的终端(使用 source ~/.zshrc
)以使它们生效。
声明(简单)别名的语法如下:
<code>alias [alias-name]='[command]'</code>
别名非常适合常用命令、长命令或语法难以记住的命令。以下是一些我经常使用的别名:
-
一个
myip
别名,它将你当前的公共 IP 地址打印到终端:alias myip='curl http://ipecho.net/plain; echo'
。 -
一个
distro
别名,用于输出有关你的 Linux 发行版的信息:alias distro='cat /etc/*-release'
。 -
一个
reload
别名,因为我似乎总是记不住如何重新加载我的终端:alias reload='source ~/.zshrc'
。 -
一个
undo-git-reset
别名:alias undo-git-reset-head="git reset 'HEAD@{1}'"
。这将恢复运行git reset HEAD~
的效果。 -
一个更新包列表的别名:
alias sapu='sudo apt-get update'
。 -
一个使用 sudo 重新运行上一个命令的别名:
alias ffs='sudo !!'
。 -
因为我很懒,所以我将
y
作为yarn
命令的别名:alias y='yarn'
。这意味着我可以克隆一个仓库,然后只需输入<kbd>y</kbd>
即可引入所有依赖项。我从 Syntax 上的 Scott Tolinski 那里学到了这个。 -
我不常用,但这个别名会清除
node_modules
文件夹并删除package-lock.json
文件,然后重新安装项目的依赖项:alias yolo='rm -rf node_modules/ && rm package-lock.json && yarn install'
。正如你可能知道的,yolo 代表 You Only Live Once。 -
一个打开我的
.zshrc
文件进行编辑的别名:alias zshconfig='subl $HOME/.zshrc'
。 -
一个更新 rbenv 可以安装的 Ruby 版本列表的别名:
alias update-available-rubies='cd ~/.rbenv/plugins/ruby-build && git pull'
-
一个在你当前目录启动服务器的别名(不需要 npm 包):
alias server='python -m SimpleHTTPServer 8000'
。 -
你还可以创建一个别名,以便在浏览器中打开文档:
alias npmhelp='firefox https://github.com/robbyrussell/oh-my-zsh/tree/master/plugins/npm'
。 -
一个全局别名,用于将命令的输出管道传输到 less:
alias -g L='| less'
。你可以像这样使用它:cat production.log L
。 -
一个全局别名,用于将命令的输出管道传输到 grep:
alias -g G='| grep'
。你可以像这样使用它:history G ssh
。 -
你还可以使用函数来创建别名。以下(取自此处)创建了一个添加、提交并将代码推送到 GitHub 的别名:
<code>alias [alias-name]='[command]'</code>
在线上有很多地方可以找到更多关于别名的想法。例如,这个 Hacker News 讨论,或者这篇关于使用 Zsh 提高命令行生产力的文章。
使用 (Oh My) Zsh 可以完成的 15 件很酷的事情
Oh My Zsh 是一个社区驱动的框架,用于管理你的 Zsh 配置,并捆绑了数千个有用的函数、助手、插件和主题。如果你要将 Z shell 作为你的日常驱动程序,你应该 真的 安装 Oh My Zsh。
以下是 Oh My Zsh 可以为你做的十五件有用的事情:
-
take
命令将创建一个新目录 并 进入该目录。take my-project
替换mkdir my-project && cd my-project
。 -
zsh_stats
将为你提供前 20 个命令及其运行次数的列表。 - Oh My Zsh 简化了你的文件系统导航。例如,
..
是cd ...
的别名。 - 同样,
...
将你向上移动两个目录,....
向上移动三个,.....
向上移动四个。 - 你可以在导航时省略
cd
。例如,输入/
将直接带你到你的文件系统根目录。 - 也支持部分匹配。例如,输入
/h/j/De
并按下<kbd>TAB</kbd>
,然后<kbd>Return</kbd>
,将带我到/home/jim/Desktop/
。 -
rd
是rmdir
的别名,md
是mkdir -p
的别名。 - 你可以输入
d
来列出终端会话中最后使用的目录。 - 然后,你可以使用
cd -n
导航到这些目录中的任何一个,其中 n 是目录编号。 - Tab 补全是另一个很棒的功能。例如,输入
ls -
并按下<kbd>TAB</kbd>
将列出所有命令选项,以及对它们功能的有用描述。这也适用于cap
、rake
、ssh
和kill
。 - 输入
alias
将列出你当前的所有别名。 - 使用通配符(Zsh 功能),你可以列出具有特定扩展名的文件。例如,
ls *.html
将列出当前目录中的所有 HTML 文件。要包含子目录,请更改为:ls **/*.html
。 - 通配符限定符允许你使用标志来选择文件类型。例如,
ls -l **/*(.x)
将查找当前目录和所有子目录中的所有可执行文件。 - 你可以按修改日期搜索文件。例如,
ls *(m-7)
将列出过去一周内修改的所有文件。 - 你可以按大小搜索文件。例如,
ls *(Lm 1)
将查找大小大于 1MB 的所有文件。
使用插件,获得乐趣和收益
Oh My Zsh 附带 大量 插件。你应该浏览这些插件,并投入一些时间学习那些可以帮助你工作流程的插件。
以下是我经常使用的三个插件,它们提供了大量方便的快捷方式和别名。
10 个漂亮的 Git 别名
git 插件提供了许多别名和一些有用的函数。为什么不浏览这些并尝试记住你最常用的十个呢?以下是我最常用的那些。
-
g
是git
的方便别名。这意味着你可以输入诸如g clone <whatever></whatever>
之类的内容,而不是git clone <whatever></whatever>
。可能只有两个按键,但它们很快就会累积起来。 -
gaa
是git add all
的别名。我一直都在使用这个。 -
gb
是git branch
的别名,它将列出当前仓库中的所有分支,并显示你当前所在的哪个分支。 -
gcb
是git checkout -b
的别名,这个命令允许你创建一个新的分支。 -
gcm
是git checkout master
的别名。这将你返回到主分支。 -
gdca
是git diff --cached
的别名。这允许你对已暂存以进行提交的任何文件进行差异比较。 -
gf
是git fetch
的别名。 -
gm
是git merge
的别名。 -
gp
是git push
的别名。要同步仓库的分支,你可以执行:gf upstream
,gm upstream/master
,然后是gp
。 -
glog
是git log --oneline --decorate --graph
的别名,它将为你提供一个漂亮的 git 分支图。
10 个方便的 npm 别名
npm 插件提供了补全以及许多有用的别名。
-
npmg
是npm install --global
的别名,你可以使用它在你的系统上全局安装依赖项。例如,npmg nodemon
。 -
npmS
是npm install --save
的别名,你可以使用它来安装依赖项并将它们添加到你的package.json
的dependencies
部分。请注意,从 npm 5.0.0 开始,在运行npm i <package></package>
时,这是默认值。 -
npmD
是npm install --save-dev
的别名,你可以使用它来安装依赖项并将它们添加到你的package.json
的devDependencies
部分。 -
npmO
是npm outdated
的别名,它将检查注册表以查看任何(或特定)已安装的包当前是否已过期。 -
npmL
是npm list
的别名,它将列出已安装的包。 -
npmL0
是npm list --depth=0
的别名,它列出顶级包。这对于查看全局安装了哪些模块特别有用,而不会用巨大的依赖树淹没你的终端:npmL0 -g
。 -
npmst
是npm run start
的别名,这是一个常用于启动应用程序的 npm 脚本。 -
npmt
是npm run test
的别名,正如你可能猜到的那样,它用于运行你的测试。 -
npmR
是npm run
的别名。它本身将列出项目的所有可用 npm 脚本,以及对它们功能的描述。与脚本名称一起使用时,它将运行该脚本,例如,npmR build
。 -
npmI
是npm init
的别名。这将向你提出一些问题,然后根据你的答案创建一个package.json
。使用-y
标志来自动化此过程。例如,npmI -y
。
10 个节省时间的 Rails/Rake 别名
此插件增加了对 Ruby on Rails 框架和 Rake 程序的补全,以及一些用于日志和环境变量的别名。
-
rc
是rails console
的别名,它允许你从 CLI 与你的 Rails 应用程序交互。 -
rdc
是rake db:create
的别名,它(除非设置了RAILS_ENV
)将为你的应用程序创建开发和测试数据库。 -
rdd
是rake db:drop
的别名,它将删除你的应用程序的开发和测试数据库。 -
rdm
是rake db:migrate
的别名,它将运行任何挂起的数据库迁移。 -
rds
是rake db:seed
的别名,它运行db/seeds.rb
文件以使用数据填充你的开发数据库。 -
rgen
是rails generate
的别名,它将生成样板代码。例如:rgen scaffold item name:string description:text
。 -
rgm
是rails generate migration
的别名,它将生成数据库迁移。例如:rgm add_description_to_products description:string
。 -
rr
是rake routes
的别名,它列出应用程序的所有已定义路由。 -
rrg
是rake routes | grep
的别名,它允许你列出和过滤已定义的路由。例如,rrg user
。 -
rs
是rails server
的别名,它启动 Rails 默认的 Web 服务器。
其他资源
上面列出的插件的主要工作是为常用命令提供别名。请注意,还有许多其他插件可以为你的 shell 添加其他功能。
以下是我最喜欢的四个:
-
sudo
允许你通过按两次<kbd>ESC</kbd>
来轻松地为当前或之前的命令添加sudo
前缀。 -
autosuggestions
根据历史记录和补全内容在你键入时建议命令。如果建议的是你正在寻找的命令,请按<kbd>→</kbd>
键接受它。一个真正的节省时间的工具! -
command-not-found
:如果$PATH
中未识别命令,它将使用 Ubuntu 的command-not-found
包来查找它或建议拼写错误。 -
z
是一个方便的插件,它会构建你最常用和最近的文件夹列表(它称之为“frecent”),并允许你使用一个命令跳转到它们。
不要忘记,如果你在终端上花费大量时间,那么让它在视觉上更具吸引力是值得的。幸运的是,Oh My Zsh 附带了许多主题供你选择。我最喜欢的主题是 Agnoster。
你可以在我的文章《10 个 Zsh 提示和技巧:配置、自定义和用法》中了解更多关于主题的信息。
结论
就是这样:75 个 Zsh 命令、插件、别名和工具。我希望你在学习过程中学到了一两个技巧,并且我鼓励你离开你的 GUI 并进入终端。它比看起来容易得多,并且是提高生产力的好方法。
如果我错过了你最喜欢的插件或节省时间的别名/命令,请在 Twitter 上告诉我。
想从你的工具包中获得更多收益吗?请查看 Wiley 的《Visual Studio Code:Web 开发人员的端到端编辑和调试工具》。
关于 Zsh 命令、插件、别名和工具的常见问题
使用 Zsh 比使用其他 shell(如 Bash)有什么好处?
Zsh,也称为 Z shell,是一个强大的 shell,包含来自其他 shell(如 Bash、tcsh 和 ksh)的功能。它比这些 shell 提供了一些优势。首先,Zsh 具有强大的自动完成功能,可以建议命令、文件名、选项甚至主机名。此功能可以显着加快你的工作流程。其次,Zsh 支持共享命令历史记录,这允许你查看在另一个终端会话中键入的命令。第三,Zsh 允许你同时使用 Emacs 和 vi 编辑模式,这使得它对不同的用户来说更加灵活。最后,Zsh 拥有一种强大的脚本语言,具有关联数组和浮点运算等功能,这些功能在 Bash 中是不可用的。
如何自定义我的 Zsh 提示符?
Zsh 允许你使用 PROMPT
变量来自定义你的提示符。你可以在你的 .zshrc
文件中设置此变量。例如,如果你想在你的提示符中显示当前目录,你可以使用 %~
参数。因此,你的 PROMPT
变量将如下所示:PROMPT='%~%# '
。你还可以使用 %F{color}
参数向你的提示符添加颜色。例如,要使你的提示符为绿色,你可以使用:PROMPT='%F{green}%~%# %f'
。 %f
将颜色重置为默认颜色。
如何在 Zsh 中使用别名?
Zsh 中的别名可以通过允许你为长命令或常用命令创建快捷方式来帮助你节省时间。你可以使用 alias
命令后跟别名和你要快捷的命令来创建一个别名。例如,要为 ls -l
命令创建一个别名,你可以使用:alias ll='ls -l'
。你可以将此行添加到你的 .zshrc
文件中以使别名永久生效。
什么是 Zsh 插件,如何使用它们?
Zsh 插件是为你的 Zsh shell 添加附加功能的脚本。它们可以帮助你自动化任务、添加新功能或自定义你的 shell。要使用 Zsh 插件,你首先需要安装它。这通常涉及将插件的存储库克隆到你的 .oh-my-zsh/plugins
目录中,然后将插件添加到你的 .zshrc
文件中的 plugins
数组中。安装插件后,你就可以开始使用它的功能了。
如何从 Bash 切换到 Zsh?
从 Bash 切换到 Zsh 是一个简单的过程。首先,你需要使用你的包管理器安装 Zsh。例如,在 Ubuntu 上,你可以使用:sudo apt install zsh
。安装 Zsh 后,你可以使用 chsh
命令将其设置为你的默认 shell:chsh -s $(which zsh)
。下次你打开终端时,它将使用 Zsh。
如何使用 Zsh 主题?
Zsh 主题允许你自定义 shell 的外观。你可以更改配色方案、提示符布局,甚至添加当前时间或 git 状态等元素。要使用 Zsh 主题,你首先需要安装它。这通常涉及将主题的存储库克隆到你的 .oh-my-zsh/themes
目录中,然后将你的 .zshrc
文件中的 ZSH_THEME
变量设置为主题的名称。安装主题后,你可以通过获取你的 .zshrc
文件来激活它:source ~/.zshrc
。
什么是 Oh My Zsh,如何使用它?
Oh My Zsh 是一个社区驱动的框架,用于管理你的 Zsh 配置。它附带了许多有用的函数、插件和主题。要使用 Oh My Zsh,你首先需要安装它。这通常涉及下载安装脚本并在你的终端中运行它。安装 Oh My Zsh 后,你可以通过编辑你的 .zshrc
文件来开始自定义你的 shell。
如何使用 Zsh 函数?
Zsh 函数允许你将命令组合在一起并将其作为单个命令执行。你可以使用 function
关键字后跟函数名称和命令块来定义函数。例如,要创建一个打印“Hello, world!”的函数,你可以使用:function hello { echo "Hello, world!"; }
。你可以通过键入函数名称来调用此函数:hello
。
如何使用 Zsh 数组?
Zsh 支持索引数组和关联数组。你可以使用 set
命令后跟数组名称和元素来创建索引数组。例如,要创建一个颜色数组,你可以使用:set -A colors red green blue
。你可以使用其索引访问数组的元素:echo $colors[1]
。要创建关联数组,你可以使用 typeset
命令:typeset -A colors; colors[red]=#FF0000; colors[green]=#00FF00; colors[blue]=#0000FF;
。
如何使用 Zsh 循环?
Zsh 支持几种类型的循环,包括 for、while 和 until 循环。for 循环允许你为列表中的每个元素重复执行命令块。例如,要打印从 1 到 5 的数字,你可以使用:for i in {1..5}; do echo $i; done
。while 循环允许你在条件为真时重复执行命令块。例如,要打印从 1 到 5 的数字,你可以使用:i=1; while (( i 。until 循环允许你在条件为假时重复执行命令块。例如,要打印从 1 到 5 的数字,你可以使用:<code>i=1; until (( i > 5 )); do echo $i; i=$((i 1)); done
。
以上是75个ZSH命令,插件,别名和工具的详细内容。更多信息请关注PHP中文网其他相关文章!

与这些顶级开发人员新闻通讯有关最新技术趋势的了解! 这个精选的清单为每个人提供了一些东西,从AI爱好者到经验丰富的后端和前端开发人员。 选择您的收藏夹并节省时间搜索REL

该教程通过使用AWS服务来指导您通过构建无服务器图像处理管道。 我们将创建一个部署在ECS Fargate群集上的next.js前端,与API网关,Lambda函数,S3桶和DynamoDB进行交互。 Th

该试点程序是CNCF(云本机计算基础),安培计算,Equinix金属和驱动的合作,简化了CNCF GitHub项目的ARM64 CI/CD。 该计划解决了安全问题和绩效

此基于GO的网络漏洞扫描仪有效地确定了潜在的安全弱点。 它利用了GO的并发功能的速度功能,包括服务检测和漏洞匹配。让我们探索它的能力和道德


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

Atom编辑器mac版下载
最流行的的开源编辑器

适用于 Eclipse 的 SAP NetWeaver 服务器适配器
将Eclipse与SAP NetWeaver应用服务器集成。

Dreamweaver Mac版
视觉化网页开发工具

VSCode Windows 64位 下载
微软推出的免费、功能强大的一款IDE编辑器

WebStorm Mac版
好用的JavaScript开发工具