实用教程介绍如何在终端使用 Copilot 辅助命令行操作,直接提升开发效率。
如果你用过终端,就一定体会过这些痛苦:想不起某条命令,害怕网上随便找来的一条命令会破坏系统,或者怎么也找不到能完成目标的正确命令。
今天,有了 GitHub Copilot in the CLI,这些痛苦都将得到缓解!💃🏼
GitHub Copilot in the CLI 在终端中提供了一种类似聊天的界面,让你可以询问与命令行有关的问题。
它旨在帮助你处理常规 shell 命令、git 命令和 gh cli 命令。本文将带你完成 copilot in the cli 的安装并开始使用。
要安装 copilot in the cli,首先必须安装 GitHub CLI,并在 OAuth 浏览器窗口中完成身份验证。如果你还不熟悉 GitHub CLI,可以阅读相关博客文章,了解如何使用它!因为我使用的是 macOS,所以选择了 homebrew 作为包管理器:
brew install gh
gh auth login
要使用 copilot in the cli,你还需要拥有有效的 GitHub Copilot 订阅。安装好 gh cli 并开通 copilot 订阅后,可以运行以下命令安装扩展:
gh extension install github/gh-copilot
现在一切准备就绪!🎉
我建议先运行 help 命令,了解如何与 copilot in the cli 交互。运行 gh copilot --help 后,你会看到以下输出:
gh copilot
Your AI command line copilot.
Usage:
copilot [command]
Available Commands:
config Configure options
explain Explain a command
suggest Suggest a command
Flags:
-h, --help help for copilot
-v, --version version for copilot
Use "copilot [command] --help" for more information about a command.
你主要可以使用两条命令与 copilot in the cli 交互:gh copilot explain 和 gh copilot suggest。
💡 实用技巧!创建 alias,可以让 copilot in the cli 更轻松地融入你的日常工作流。
安装完成后,我建议你接下来创建一个 alias。这样能让你与 copilot in the cli 的交互顺畅许多,因为它可以减少按键次数,让你更快获得帮助。
由于我使用的是 zsh,因此运行了以下命令来创建 alias:
alias copilot='gh copilot' ; echo 'alias copilot="gh copilot"' >> ~/.zshrc && source ~/.zshrc
alias gcs='gh copilot suggest' ; echo 'alias gcs="gh copilot suggest"' >> ~/.zshrc && source ~/.zshrc
alias gce='gh copilot explain' ; echo 'alias gce="gh copilot explain"' >> ~/.zshrc && source ~/.zshrc
接下来,我们来了解这些命令的含义,并通过几个示例看看如何使用它们。
💡 请记住,我已经创建了 alias,所以接下来会使用 gce 或 gcs,而不是 gh copilot explain 或 gh copilot suggest。
使用 copilot cli explain 命令有两种方式:
你可以不带任何参数运行 explain 命令,随后它会提示你输入需要解释的命令。
gh copilot explain
你也可以同时运行 explain 命令并传入想要解释的命令:
gh copilot explain 'your query'
你还可以带上 -h flag 运行 explain 命令,以获取更多信息:
gh copilot explain -h
你可以通过三种方式与 copilot in the cli 交互并获得建议:
你可以运行 suggest 命令,然后按照屏幕上的提示操作:
gh copilot suggest
你可以同时运行 suggest 命令并输入 query,然后选择命令类型:
gh copilot suggest 'command you want to run'
你还可以同时运行 suggest 命令、输入 query,并指定命令类型:
gh copilot suggest 'command you want to run' -t 'type of command'
-t flag 表示命令类型,可以是以下类型之一:
有时,copilot in the cli 给出的建议并不完全符合你的需求。收到建议后,你可以选择 Revise command 选项来修改命令,并向 copilot 提供更多有关需求的细节:
💡 实用技巧!Copilot in the CLI 并不是简单地把你想要的建议直接交给你。请记住,它是你的副驾驶。因此,如果输出与预期不完全一致,可以编辑建议或要求它修改,直到得到你需要的结果。
收到 copilot in the cli 的建议后,你可以选择 Explain command 选项,让 copilot 解释这条命令:
收到 copilot in the cli 的建议后,你可以复制它提供的响应,并在终端中运行。
收到 copilot in the cli 的建议后,你可以选择 Rate command 选项为命令评分,并选择它是否有帮助:
你可以选择 Exit 选项退出 prompt flow 窗口:
现在来看一些示例。💃🏼
我在网上看到了这条命令,很好奇它究竟有什么作用,因此可以这样询问:
gh copilot explain chmod -r 777 /
💡 实用技巧!让 copilot 解释包含特殊字符的命令时,请将命令放在字符串中,这样 copilot 才能更好地理解它。
如你所见,这条命令实际上非常危险,可能会让你丢失所有数据。我很喜欢这次收到的解释,因为它不但告诉了我这条命令的作用,还告诉了我它为什么危险。
🚨 绝对不要在你的机器上运行这条命令 🚨
在下面的可视化示例中,我首先使用 git branch 命令列出本地 repo 中的分支,然后使用 git branch -r 命令列出远程 repo 中的分支。接着,我向 copilot in the cli 请求建议:
gh copilot suggest 'delete a git branch locally and remotely' -t git
它提供了以下建议:
git push origin --delete <branch_name>
git branch -D <branch_name>
我运行了建议的命令,然后再次列出本地 repo 和远程 repo 中的分支,确认该分支是否已被删除。谢天谢地,它确实被删掉了。🙌🏼
你也可以向 copilot in the cli 询问 gh 命令。例如,如果想查看 repo 中所有未关闭的 issue,可以向 copilot in the cli 请求建议:
gh copilot suggest 'view all open issues' -t gh
它提供了以下建议:
gh issue list --state='open'
我运行了这条命令,随后得到当前 repo 中所有未关闭 issue 的列表。完整流程请参见下面的可视化示例:
Copilot in the CLI 也可以用于处理终端中的管理任务。例如,如果想终止仍持有已删除文件的进程,可以向 copilot in the cli 请求建议:
gh copilot suggest 'kill processes with open files that have been deleted' -t shell
它提供了以下建议:
lsof | grep '(deleted)' | awk '{print $2}' | sort -u | xargs -r kill -9
由于我不太熟悉 xargs 命令,因此让 copilot 解释了这条建议。更多内容请参见下面的视频示例:
运行建议的命令后,我可以运行 lsof | grep '(deleted)' | awk '{print $2}' | sort -u,查看被终止的进程。
如果不问下面这个问题,那还能叫终端演示吗?😂
gh copilot suggest 'how to exit vim' -t shell
它提供了以下建议:
:q!
虽然这个答案是正确的,但并不是我真正想要的,因为它固然能让你退出 vim,却会让你在这个过程中丢失所有改动。因此,我让 copilot 修改这条命令:
? How should this be revised?
> how to exit vim and save changes
Suggestion:
:wq
完美!💃🏼 完整流程请参见下面的可视化示例:
GitHub Copilot in the CLI 是一款能够改变游戏规则的工具。无论是帮你回忆命令、学习新命令,还是解释你偶然在网上发现的命令,它都非常实用。
希望你能享受使用它的过程!亲自试试看,然后告诉我你是如何使用它的。如果有反馈或遇到问题,可以在 gh-copilot repo 中提交 issue,也可以在下方留言,我一定会帮你找到答案。
你尝试过 GitHub Copilot in the CLI 吗?感觉如何?请在下方评论区告诉我!👇🏼🚀
如果需要采取进一步行动,你可以考虑屏蔽此人和/或举报滥用行为。