Shell- 毫无疑问,在终端中,Shell 使用最频繁、最重要的工具。以前用过 Bash 和 Z Shell,现在,我在用它 Fish Shell。这是一个非常优秀的终端 Shell 该工具具有语法自动推荐补充、语法亮点显示或使用快捷键在最近访问的文件夹之间来回切换等多种功能。
一方面,它非常适合初学者,因为用户不需要任何设置。另一方面,它使用脚本语法和其他语法 Shell 因此,用户通常不能直接粘贴复制自互联网的脚本。您必须将不兼容的命令改为合法的 Fish 脚本,或者启动一个 Bash 会话以运行 Bash 脚本。
https://fishshell.com/docs/current/index.html#syntax-overview
我能理解这种变化背后的原因(毕竟 Bash 脚本不是用户使用的语言),但这种不兼容并没有给我带来任何好处。平时很少写 Bash / Fish 脚本,所以我经常忘记这些语法,所以每次我想使用它们,我总是必须从零开始重新学习它们。与 Bash 脚本相比,Fish 脚本的资源相对较少。我通常不读文档,重复轮子,而是从 StackOverflow 复制粘贴现成脚本即用。
尽管我前面提到过 Fish Shell 但几个缺点,但我还是推荐你用,因为切换 Shell 工具很简单,值得一试。尤其是当你懒得自己配置的时候。 Shell,并希望通过最少的配置就能获得很好的使用效果的时候,那就更不要错过它了。
您可以添加相关插件来扩展自己 Fish Shell 功能。安装插件最简单的方法是使用插件管理工具,如 Fisher、Oh My Fish 或者 fundle。现在,我使用的插件管理工具是 Fisher,我用它安装管理了三个插件:
-
franciscolourenco/done ——长时间运行脚本完成后发送通知。
-
evanlucas/fish-kubectl-completions——1个自动补全 kubectl(Kubernetes command line tool) 命令插件。
-
fzf——将 fzf 工具与 Fish 集成的插件。
过去,我有使用很多的插件(比如 rbenv、pyenv、nodenv、fzf、z),但我用其他工具来避免影响我 Shell 运行速度(这是我以前用的) Z shell 教训)。
下载地址:https://fishshell.com/
2、Starship
如果你必须从这篇文章中选择我最喜欢的终端工具——那非 Starship 莫属。Starship 可适用于任何事情 Shell。您只需要在相应的配置文件中安装它.bashrc
/.zshrc
/config.fish
加一行配置,剩下的工作交给它完成。
它能做到:
-
根据您是否在代码仓库中添加了新文件,是否修改了文件,是否暂存了文件,用相应的符号表示 git 仓库状态。
-
根据你所在的 Python 项目目录,展示 Python 版本号也适用于 Go/Node/Rust/Elm 其它编程语言环境。
-
执行上一个命令所需的时间必须在毫秒级。
-
如果上一个命令执行失败,将显示相应的错误提示符。
还有无数其他信息可以显示。但是,它可以以更友好的形式智能地呈现给你!例如,如果你不在那里 git 它将隐藏在仓库中 git 假如你不在 Python 不会有项目 Python 版本信息,因为显示它毫无意义。它永远不会向你展示多余的信息,始终保持终端的美丽、优雅和简单。
Starship 运行速度如何?它是用 Rust 虽然有这么多功能,但它仍然比我以前使用的所有提示工具都快!我对提示信息非常洁癖,因此我经常破解自己的版本。我会根据现有提示找到相应的功能代码,然后粘在一起,以确保 Starship 只有我需要的功能才能保持它的快速运行。外部工具永远不会比我精心制作的提示工具快!” 这就是我对 Starship 怀疑的原因。
下载地址:https://starship.rs/
3、z
“z它能让你在文件目录之间快速跳转。它会记住你访问的历史文件夹。经过短暂的学习,你可以使用它z path_of_the_folder_name
命令在目录之间跳转。
例如,如果我经常访问, ~/work/src/projects
,我只需要操作 z pro
,你可以马上跳到那里。z 参考原理 frecency 基于统计算法的算法 frequency 和 recency 分析算法。如果它存储了您不想使用的路径文件夹,您可以随时手动删除它。它提高了我在不同文件路径之间频繁切换的效率,帮助我节省了键盘点击次数和大量的路径记忆。
下载地址:https://github.com/rupa/z
4、fzf
fzf— fuzzy finder,即模糊搜索器。它是一种通用工具,可以使用模糊搜索来查找文件、历史命令、过程、git 提交等。如果您输入一些字母,它将尝试匹配结果列表中的任何位置。字母输入越多,结果就越准确。您可能在其他代码编辑器中有过这种类型的搜索体验——当您想打开文件时,您只能在不输入完整路径的情况下输入文件名的一部分——这是模糊搜索。
我通过 fish fzf 插件使用它,所以我可以搜索命令历史记录或快速打开文件。这是一个很好的工具,可以每天为我节省很多时间。
https://github.com/jethrokuan/fzf
下载地址:https://github.com/junegunn/fzf
5、fd
上面动图是 find 命令(左)和 fd 使用对比命令(右)。
类似于系统本身 find
但使用起来更简单,搜索速度更快,默认设置也很好。
不管你想找到一个名为“invoice文件,但不确定文件的扩展名称,或者找到一个存储所有文件 invoice 目录,而不仅仅是一份文件。你可以卷起袖子开始 find 编写那些复杂的正则表达式,也可以直接命令 fd invoice
。不管怎样,最简单的。
默认情况下,fd 会忽略隐藏和存在.gitignore
列出的文件和目录。大多数时候,这也是我们想要的,但在极少数特殊情况下,如果需要禁止此功能,我会给命令设置一个别名:fda='fd -IH'
。
你会发现,fd 根据基准测试,命令输出的颜色配置非常漂亮(以上) GIF),它的执行速度甚至比find 命令
的还要快。
下载地址:https://github.com/sharkdp/fd
6、ripgrep
上图为 grep(左)与 rg(右)执行命令时的比较。
与上述fd
指令类似,ripgrep
是grep
替代命令的方法, 不过ripgrep
执行速度更快,默认配置健全,色彩输出丰富。
它也会跳过被子.gitignore
忽略和隐藏文件,因此如有特殊需要,我们可以设置指令别名:rga ='rg -uuu'
。它将禁止所有智能筛选,并使用它ripgrep
性能和标准 grep 指令一致。
下载地址:https://github.com/BurntSushi/ripgrep
7、htop 和 glances
在 Linux 或 Mac 我们熟悉上显示过程运行状态信息最常用的工具top
,它是每个系统管理员的好帮手。此外,即使像我这样主要从事网络开发,检查计算机的运行也是非常有用的。你知道,看看现在是什么 Docker 进程还是 Chrome 这个过程吃掉了你所有的东西 RAM,应该如何做吗?
htop
工具是top
工具的绝佳替代品。
top
工具是一种非常基本的监控工具,功能有限,所以很多人转向使用它 htop。htop
比起top
,优点明显——除了功能更完善外,它的色彩搭配也非常丰富,整体使用更友好。
借助 glances,还能让你一目了然地快速了解系统的现状。
lances 是htop
的补充工具。除了列出所有进程及其 CPU 和内存使用情况之外,它还可以显示有关系统的其他信息,比如:
-
网络及磁盘使用情况
-
文件系统已使用的空间和总空间
-
以及最近消耗过多资源的进程列表
我选择使用htop
来筛选和终止进程,因为对我来讲,效率提高了不少,我也使用 glances
可以快速浏览一下计算机的运行状况。它提供 API 接口、Web UI 以及支持各种导出格式,因此你可以将系统监视提高到一个新 Level。因此我在这里强烈推荐一波!
htop 下载地址:https://hisham.hm/htop/
glances 下载地址:
https://nicolargo.github.io/glances/
8、virtualenv 和 virtualfish
Virtualenv 是用于在 Python 中创建虚拟环境的工具(比起内置的venv
模块,我更喜欢 Virtualenv)。
VirtualFish 是 Fish Shell 的虚拟环境管理器(如果你不使用 Fish Shell,请查看 virtualenvwrapper)。它提供了许多命令来执行快速创建、列出或删除虚拟环境等操作。
virtualenv 下载地址:
https://pypi.org/project/virtualenv/
virtualfish 下载地址:
https://github.com/justinmayer/virtualfish
9、pyenv、nodenv 和 rbenv
pyenv 可以轻松实现 Python 版本的切换。
Pyenv、nodenv 和 rubyenv 是用于管理计算机上不同版本的 Python、Node 和 Ruby 的工具。
假设你要在计算机上安装两个版本的 Python。比如,你正在从事两个不同的 Python 项目,或者因为特殊情况仍然需要使用 Python2。不同 Python 版本在电脑上管理很复杂。你需要确保不同的项目具有正确版本的软件依赖包。如果你不小心的话,很容易弄乱这种脆弱的配置并被其他软件包使用的二进制文件所覆盖。
该工具为版本管理提供了很多帮助,并将这一噩梦变得易于管理。它可以全局或“按文件夹”切换 Python 版本,而且每个版本都是相互隔离的。
我最近找到了一种名为 asdf 的工具,该工具可以将 pyenv、nodenv、rbenv 及其他 env 进行统一管理。它提供了几乎所有编程语言的版本管理,下次我需要为编程语言设置版本管理器时,一定会尝试使用一下。
pyenv 下载地址:https://github.com/pyenv/pyenv
nodenv 下载地址:https://github.com/nodenv/nodenv
rbenv 下载地址:https://github.com/rbenv/rbenv
10、pipx
Virtualenv 解决了 Python 程序包管理中的许多问题,但是还有一个方案可以解决。如果我想在全局环境下安装 Python 软件包(比如它是一个独立的工具,正如前面提到的glances
工具),那么我会遇到全局安装带来的问题。在虚拟环境之外安装软件包不是一个好主意,将来可能会导致意想不到的问题。另一方面,如果我决定使用虚拟环境,那么每次我要运行程序时都需要激活该虚拟环境。这也不是最方便的解决方案。
事实证明,pipx
工具可以解决上面提到的问题。它将 Python 软件依赖包安装到单独的环境中(因此不会存在依赖项冲突的问题)。与此同时,这些工具提供的 CLI 命令在全局环境内也可用。因此,我无需激活任何环境——pipx
会帮我完成这个操作!
如果你想了解有关 Python 工具的更多信息并想了解如何使用它们,我为 PyCon 2020 会议制作了一个名为“现代 Python 开发人员工具包”的视频。
这是一个长达两个小时的视频教程,内容涉及如何设置 Python 开发环境,要使用的工具以及如何从头开始制作 TODO 应用程序(包括测试和文档)。你可以在 YouTube 上进行观看。
https://www.youtube.com/watch?v=WkUBx3g2QfQ
pipx 下载地址:
https://github.com/pipxproject/pipx
11、ctop 和 lazydocker
ctop 的实时监控示例
当你使用 Docker 并对其监控时,这两个工具会很有帮助。ctop
是 Docker 容器的顶级接口。它可以为你:
-
展示正在运行和已停止的容器列表。
-
展示统计信息,例如内存、CPU 使用率以及针对每个容器的其他详细信息窗口(例如绑定的端口等其他信息)。
-
提供快捷菜单,方便快速停止、杀掉指定容器进程或显示给定容器的日志。
这比你尝试从docker ps
命令中找出所有这些信息要方便多了。
lazydocker
是我最喜欢的 Docker 工具
如果你认为ctop
很酷,请你尝试使用 lazydocker 后再做决定!它是一个非常成熟的拥有终端 UI 界面的工具,提供了非常丰富的功能用于管理 Docker。这是我最喜欢的 Docker 管理工具!
ctop 下载地址:https://github.com/bcicen/ctop
lazydocker 下载地址:
https://github.com/jesseduffield/lazydocker
技术学习总结
学习技术一定要制定一个明确的学习路线,这样才能高效的学习,不必要做无效功,既浪费时间又得不到什么效率,大家不妨按照我这份路线来学习。
最后面试分享
大家不妨直接在牛客和力扣上多刷题,同时,我也拿了一些面试题跟大家分享,也是从一些大佬那里获得的,大家不妨多刷刷题,为金九银十冲一波!
HDgyG-1628315729666)]
[外链图片转存中…(img-f9eGPdbp-1628315729667)]
最后面试分享
大家不妨直接在牛客和力扣上多刷题,同时,我也拿了一些面试题跟大家分享,也是从一些大佬那里获得的,大家不妨多刷刷题,为金九银十冲一波!
[外链图片转存中…(img-dY2Z0XpX-1628315729667)]
[外链图片转存中…(img-ydwPY8CH-1628315729668)]