Redian新闻
>
如何在命令行上舒适地生存? | Linux 中国

如何在命令行上舒适地生存? | Linux 中国

科技
 
导读:如果在过去一到三年内,你刚刚不再害怕使用命令行了,是什么帮助了你?                       
本文字数:5072,阅读时长大约:7分钟

https://linux.cn/article-16085-1.html
作者:Julia Evans
译者:ChatGPT

有时我与一些害怕使用命令行的朋友交谈,我感到自己给不出好的建议(我已经使用命令行太长时间了),因此我向一些 Mastodon🔗 social.jvns.ca 上的人提出了以下问题:

如果在过去一到三年内,你刚刚不再害怕使用命令行了,是什么帮助了你?

(如果你不记得,或者你已经使用命令行舒适地工作了 15 年,则无需回答——这个问题不适用于你 😃)

这个列表还不如我希望的那么长,但我希望通过发布它来收集更多的答案。显然,并没有一个单一的方法适用于所有人,不同的人会选择不同的路径。

我认为舒适使用命令行有三个方面:减少风险动机资源。我将先谈谈减少风险,然后是一些动机,并列出一些资源。

减少风险的方式

很多人(没错!)对在命令行上意外执行了一些无法撤销的破坏性操作感到担心。

以下是一些人们提到的帮助他们减少风险的策略:

◈ 定期备份(有人提到他们在上周的一个命令行错误中意外删除了整个家目录,但很幸运他们有备份)。
◈ 对于代码,尽可能多地使用 git
◈ 将 rm 设置为类似 safe-rm 或 rmtrash 这样的工具的别名,这样你就不会意外删除不应删除的内容(或者就设置别名到 rm -i)。
◈ 尽量避免使用通配符,使用制表符键补全代替(我的 Shell 会使用 TAB 键补全 rm *.txt 并显示我将要删除的内容)。
◈ 使用精美的终端提示符,可以显示当前目录、计算机名称、git 分支和你是否具有 root 权限。
◈ 如果你计划对文件运行未经测试或危险的命令,先备份文件副本。
◈ 拥有一台专用的测试机器(如便宜的旧 Linux 计算机或树莓派)进行特别危险的测试,例如测试备份软件或分区。
◈ 对于危险命令,如果有的话,使用 --dry-run 选项来查看执行结果而不实际执行操作。
◈ 在你的 Shell 脚本中构建自己的 --dry-run 选项。

这些策略有助于降低在命令行上引发不可逆操作的风险。

杀手级应用程序

一些人提到了一个“杀手级命令行应用程序”,这激励他们开始花更多时间在命令行上。例如:

◈ ripgrep🔗 github.com
◈ jq
◈ wget / curl
◈ git(一些人发现他们更喜欢使用 git 命令行界面而不是使用图形界面)
◈ ffmpeg(用于视频处理)
◈ yt-dlp
◈ 硬盘数据恢复工具(来自 这个精彩的故事🔗 github.com

还有一些人提到他们对图形界面工具感到失望(例如使用了所有内存,并使计算机崩溃的重型集成开发环境),并因此有动机用更轻量级的命令行工具替代它们。

激发人们的命令行技巧

有人提到被其他人在命令行上展示的酷炫功能所激励,例如:

◈ 命令行工具可以比你的 Hadoop 集群快 235 倍🔗 adamdrake.com
◈ Gary Bernhardt 的这个“命令行链锯”演讲🔗 www.youtube.com

explainshell

有几个人提到了 explainshell🔗 explainshell.com,它可以让你粘贴任何命令行指令,并将其分解成不同的部分解释。

命令历史、制表符补全等等

有很多小技巧和窍门可以使在命令行上工作更容易,例如:

◈ 使用向上箭头查看先前的命令
◈ 使用 Ctrl+R 搜索你的 Bash 历史记录
◈ 使用快捷键在行内导航:Ctrl+w (删除一个单词)、Ctrl+a(跳转到行首)、Ctrl+e(跳转到行尾),以及 Ctrl+left arrow / Ctrl+right arrow(向前/向后跳转一个单词)
◈ 将 Bash 历史记录设置为无限制
◈ 使用 cd - 返回上一个目录
◈ 文件名和命令名的制表符自动补全
◈ 学习如何使用像 less 这样的分页工具阅读手册页或其他大型文本文件(如搜索、滚动等)
◈ 在 macOS 上使用 pbcopy/pbpaste 将剪贴板内容复制/粘贴到 stdout/stdin
◈ 在编辑配置文件之前备份它们

fzf

很多人提到使用 fzf🔗 github.com 作为模糊搜索 Shell 历史记录的更好方法。除了作为更好的模糊搜索 Shell 历史记录的工具,人们还提到了一些其他用途:

◈ 选择 git 分支(git checkout $(git for-each-ref --format='%(refname:short)' refs/heads/ | fzf)
◈ 快速查找要编辑的文件(nvim $(fzf)
◈ 切换 Kubernetes 上下文(kubectl config use-context $(kubectl config get-contexts -o name | fzf --height=10 --prompt="Kubernetes Context> ")
◈ 从测试套件中选择要运行的特定测试

一般的模式是使用 fzf 来选择某个对象(文件、git 分支、命令行参数),fzf 将所选对象输出到标准输出,然后将其插入作为另一个命令的命令行参数。

你还可以将 fzf 用作工具,自动预览输出并快速迭代,例如:

◈ 自动预览 jq 的输出(echo '' | fzf --preview "jq {q} < YOURFILE.json"
◈ 自动预览 sed 的输出(echo '' | fzf --preview "sed {q} YOURFILE"
◈ 自动预览 awk 的输出(echo '' | fzf --preview "awk {q} YOURFILE"

你可以参考这个思路。

通常,人们会为 fzf 的使用定义别名,比如输入 gcb 或其他命令,以快速选择要检出的 git 分支。

树莓派

一些人开始使用树莓派,这样可以更安全地进行实验,而不必担心损坏计算机(只需擦除 SD 卡然后重新开始即可!)。

漂亮的 Shell 环境

很多人说,当他们开始使用像 oh-my-zsh🔗 ohmyz.sh 或 Fish🔗 fishshell.com 这样更用户友好的 Shell 环境时,他们在命令行上感到更舒适。我非常同意这一点 – 我已经使用 Fish 十年了,我非常喜欢它。

在这里还有一些其他的事情可以做:

◈ 有些人说,让他们的终端更漂亮可以帮助他们感到更舒适(“让它变成粉色!”)。
◈ 设置一个漂亮的 Shell 提示符来提供更多信息(例如,当命令失败时,可以将提示符设置为红色)。特别是 transient prompts🔗 www.reddit.com(在当前命令设置一个非常花哨的提示符,但在之前的命令中设置一个简单得多的提示符)看起来非常好。

一些用于美化终端的工具:

◈ 我使用 base16-shell🔗 github.com
◈ powerlevel10k🔗 github.com 是一个流行的漂亮的 Zsh 主题,具有 transient prompts
◈ starship🔗 github.com 是一个漂亮的提示符工具
◈ 在 Mac 上,我认为 iTerm2🔗 iterm2.com 比默认的终端更容易自定义。

漂亮的文件管理器

一些人提到了像 ranger🔗 github.com 或 nnn🔗 github.com 这样的漂亮的终端文件管理器,这是我之前没有听说过的。

一个有帮助的朋友或同事

一个可以回答初学者问题并给你指点的人是无价的。

通过肩并肩地观察学习

有人提到观察更有经验的人使用终端 - 有很多经验丰富的用户甚至没有意识到自己在做什么,你可以从中学到很多小技巧。

别名

很多人说,为常用任务创建自己的别名或脚本就像是一个神奇的“灵光一现”时刻,因为:

◈ 他们不必记住语法
◈ 然后他们就有了一份自己常用命令的列表,可以轻松调用

查找示例的备忘单

很多手册页没有示例,例如 openssl s_client🔗 linux.die.net 的手册页就没有示例。这使得起步变得更加困难!

人们提到了一些备忘单工具,比如:

◈ tldr.sh🔗 tldr.sh
◈ cheat🔗 github.com(还可以进行编辑 - 你可以添加自己的命令以供以后参考)
◈ um🔗 ratfactor.com(一个非常精简的需要自己构建的系统)

例如,openssl 的备忘单🔗 github.com 非常棒 - 我认为它几乎包含了我在实际中使用 openssl 时用过的所有内容(除了 openssl s_client 的 -servername 选项)。

有人说他们配置了他们的 .bash_profile,这样每次登录时都会打印出一张备忘单。

不要试图背诵

一些人说他们需要改变自己的方法 - 他们意识到不需要试图记住所有的命令,只需按需查找命令,随着时间的推移,他们会自然而然地记住最常用的命令。

(我最近对学习阅读 x86 汇编有了完全相同的体会 - 我正在上一门课程,讲师说“是的,刚开始时可以每次都查找,最终你会记住最常见的指令。”)

还有一些人说相反的观点 - 他们使用间隔重复应用程序(如 Anki)来记忆常用的命令。

Vim

有人提到他们开始在命令行上使用 Vim 编辑文件,一旦他们开始使用终端文本编辑器,使用命令行处理其他事情也变得更自然。

此外,显然有一个名为 micro🔗 micro-editor.github.io 的新编辑器,像是更好的 pico/nano,适用于那些不想学习 Emacs 或 Vim 的人。

桌面上使用 Linux

有人说他们开始使用 Linux 作为他们的日常主力系统,而需要修复 Linux 问题可以帮助他们学习。这也是我在大约 2004 年熟悉命令行的方式(我非常喜欢安装各种不同的 Linux 发行版,以找到我最喜欢的那个),但我猜这不是如今最受欢迎的策略。

被迫仅使用终端

有些人说他们参加了一门大学课程,教授让他们在终端上做所有事情,或者他们自己制定了一个规则,一段时间内必须在终端上完成所有工作。

工作坊

有几个人说像 Software Carpentry🔗 software-carpentry.org 这样的工作坊(面向科学家的命令行、Git 和 Python/R 编程简介)帮助他们更熟悉命令行。

你可以在这里查看 Software Carpentry 课程🔗 software-carpentry.org

书籍和文章

一些提到的材料:

文章:

◈ 《终端🔗 furbo.org
◈ 《命令行功夫🔗 blog.commandlinekungfu.com》(包含 UNIX 和 Windows 命令行技巧)

书籍:

◈ 《Effective Linux at The Command Line🔗 www.oreilly.com
◈ 《Unix Power Tools》(可能有些过时)
◈ 《The Linux Pocket guide》

视频:

◈ Mindy Preston 的 CLI tools aren’t inherently user-hostile🔗 www.youtube.com
◈ Gary Bernhardt 的 destroy all software screencasts🔗 www.destroyallsoftware.com
◈ DistroTube🔗 www.youtube.com

(题图:MJ/c0dc082a-a477-434b-b826-77a42c8f61c3)


via: https://jvns.ca/blog/2023/08/08/what-helps-people-get-comfortable-on-the-command-line-/

作者:Julia Evans 选题:lujun9972 译者:ChatGPT 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

欢迎遵照 CC-BY-SA 协议规定转载,
如需转载,请在文章下留言 “转载:公众号名称”,
我们将为您添加白名单,授权“转载文章时可以修改”。


微信扫码关注该文公众号作者

戳这里提交新闻线索和高质量文章给我们。
相关阅读
比 Ubuntu 更好?Ubuntu 爱好者的 11 款最佳 Linux 发行版 | Linux 中国在 Linux 中使用 cat 命令 | Linux 中国在 Linux 中使用 cd 命令 | Linux 中国1.6 k star,推荐一款命令行共享文件神器 —— sharingLinux 版 WhatsApp | Linux 中国Linux 中的 ls 命令使用教程 | Linux 中国你好,我是筚(bì)篥( lì)!沈南鹏:如何在逆境中生存?直播预告丨肝癌病友如何获得长生存?多学科专家来支招Linux 中的模糊文件搜索 | Linux 中国如何在 Linux 中映射 SAN LUN、磁盘和文件系统 | Linux 中国10 个最好的 Xfce 桌面环境的 Linux 发行版 | Linux 中国在 Linux 中使用 cp 命令 | Linux 中国5 个令人惊讶的 Linux 用途 | Linux 中国飞碟其实不需要反重力AWS收购命令行工具Fig如何在 Linux 中注释 PDF | Linux 中国从无聊到惊吓如何在 Ubuntu 和其他 Linux 发行版中查看 AVIF 图像 | Linux 中国加拿大的“疯狂誓言”:本世纪末人口达到1亿!魁省吓傻了!我愿意你做我的债主从科研走向商业:科学家如何平衡创新与生存?|【经纬低调分享】直播回放丨肝癌病友如何获得长生存?多学科专家来支招鞋垫黑科技!吸能减震、护膝盖,让你更加放心舒适地享受运动快乐!如何制作一个 Linux Mint 立付 USB | Linux 中国直播预告 | 医保支付改革下企业如何生存?如何在 Linux 中查找映射到 VxVM 磁盘的 SAN LUN | Linux 中国在 Ubuntu、Linux Mint 和 Windows 中升级到最新的 LibreOffice | Linux 中国包含 Openbox 的 7 个极简 Linux 发行版 | Linux 中国UOS 将推 Rust 版 Bash 命令行工具utshell,支持防篡改、防溢出如何在 Linux 主机和 KVM 中的 Windows 客户机之间共享文件夹 | Linux 中国如何在 Linux 中扩展 Veritas 文件系统(VxFS) | Linux 中国各色牡丹芍药伊藤及玫瑰10 个最佳 Linux 虚拟化软件 | Linux 中国Linux 如何挽救老旧电脑(和地球) | Linux 中国
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。