Zsh:75个命令、插件、别名和工具,助你提升终端效率
我每天大部分时间都在终端工作,而我选择的 shell 是 Zsh——一个高度可定制的 Unix shell,拥有许多强大的功能。作为一个懒惰的开发者™,我一直在寻找减少输入量并自动化所有任务的方法。幸运的是,Zsh 正是为此而生的。
在这篇文章中,我将分享 75 个命令、插件、别名和工具,希望能帮助你节省一些按键次数,提高日常工作的效率。
如果你还没有在你的机器上安装 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 个命令及其运行次数的列表。..
是 cd ...
的别名。...
将你向上移动两个目录,....
向上移动三个,.....
向上移动四个。cd
。例如,输入 /
将直接带你到你的文件系统根目录。/h/j/De
并按下 <kbd>TAB</kbd>
,然后 <kbd>Return</kbd>
,将带我到 /home/jim/Desktop/
。rd
是 rmdir
的别名,md
是 mkdir -p
的别名。d
来列出终端会话中最后使用的目录。cd -n
导航到这些目录中的任何一个,其中 n 是目录编号。ls -
并按下 <kbd>TAB</kbd>
将列出所有命令选项,以及对它们功能的有用描述。这也适用于 cap
、rake
、ssh
和 kill
。alias
将列出你当前的所有别名。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,也称为 Z shell,是一个强大的 shell,包含来自其他 shell(如 Bash、tcsh 和 ksh)的功能。它比这些 shell 提供了一些优势。首先,Zsh 具有强大的自动完成功能,可以建议命令、文件名、选项甚至主机名。此功能可以显着加快你的工作流程。其次,Zsh 支持共享命令历史记录,这允许你查看在另一个终端会话中键入的命令。第三,Zsh 允许你同时使用 Emacs 和 vi 编辑模式,这使得它对不同的用户来说更加灵活。最后,Zsh 拥有一种强大的脚本语言,具有关联数组和浮点运算等功能,这些功能在 Bash 中是不可用的。
Zsh 允许你使用 PROMPT
变量来自定义你的提示符。你可以在你的 .zshrc
文件中设置此变量。例如,如果你想在你的提示符中显示当前目录,你可以使用 %~
参数。因此,你的 PROMPT
变量将如下所示:PROMPT='%~%# '
。你还可以使用 %F{color}
参数向你的提示符添加颜色。例如,要使你的提示符为绿色,你可以使用:PROMPT='%F{green}%~%# %f'
。 %f
将颜色重置为默认颜色。
Zsh 中的别名可以通过允许你为长命令或常用命令创建快捷方式来帮助你节省时间。你可以使用 alias
命令后跟别名和你要快捷的命令来创建一个别名。例如,要为 ls -l
命令创建一个别名,你可以使用:alias ll='ls -l'
。你可以将此行添加到你的 .zshrc
文件中以使别名永久生效。
Zsh 插件是为你的 Zsh shell 添加附加功能的脚本。它们可以帮助你自动化任务、添加新功能或自定义你的 shell。要使用 Zsh 插件,你首先需要安装它。这通常涉及将插件的存储库克隆到你的 .oh-my-zsh/plugins
目录中,然后将插件添加到你的 .zshrc
文件中的 plugins
数组中。安装插件后,你就可以开始使用它的功能了。
从 Bash 切换到 Zsh 是一个简单的过程。首先,你需要使用你的包管理器安装 Zsh。例如,在 Ubuntu 上,你可以使用:sudo apt install zsh
。安装 Zsh 后,你可以使用 chsh
命令将其设置为你的默认 shell:chsh -s $(which zsh)
。下次你打开终端时,它将使用 Zsh。
Zsh 主题允许你自定义 shell 的外观。你可以更改配色方案、提示符布局,甚至添加当前时间或 git 状态等元素。要使用 Zsh 主题,你首先需要安装它。这通常涉及将主题的存储库克隆到你的 .oh-my-zsh/themes
目录中,然后将你的 .zshrc
文件中的 ZSH_THEME
变量设置为主题的名称。安装主题后,你可以通过获取你的 .zshrc
文件来激活它:source ~/.zshrc
。
Oh My Zsh 是一个社区驱动的框架,用于管理你的 Zsh 配置。它附带了许多有用的函数、插件和主题。要使用 Oh My Zsh,你首先需要安装它。这通常涉及下载安装脚本并在你的终端中运行它。安装 Oh My Zsh 后,你可以通过编辑你的 .zshrc
文件来开始自定义你的 shell。
Zsh 函数允许你将命令组合在一起并将其作为单个命令执行。你可以使用 function
关键字后跟函数名称和命令块来定义函数。例如,要创建一个打印“Hello, world!”的函数,你可以使用:function hello { echo "Hello, world!"; }
。你可以通过键入函数名称来调用此函数:hello
。
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 支持几种类型的循环,包括 for、while 和 until 循环。for 循环允许你为列表中的每个元素重复执行命令块。例如,要打印从 1 到 5 的数字,你可以使用:for i in {1..5}; do echo $i; done
。while 循环允许你在条件为真时重复执行命令块。例如,要打印从 1 到 5 的数字,你可以使用:i=1; while (( i < 6 )); do echo $i; i=$((i 1)); done
。until 循环允许你在条件为假时重复执行命令块。例如,要打印从 1 到 5 的数字,你可以使用:i=1; until (( i > 5 )); do echo $i; i=$((i 1)); done
。
以上是75个ZSH命令,插件,别名和工具的详细内容。更多信息请关注PHP中文网其他相关文章!