shell配置
Nushell
安装
配置
配置 | Nushell
Windows 的 Nushell 配置与 VSCode 集成(不说废话)
https://blog.yusong.me/terminal/shell/nushell
配置 nushell
不显示 banner
运行
$nu.config-path
查看配置文件地址, 或你安装了neovim
直接nvim $nu.config-path
亦可查找
show_banner
并修改为false
代理脚本
1 | alias nuproxy = (let-env http_proxy = "http://127.0.0.1:7890" ; let-env https_proxy = "http://127.0.0.1:7890") |
alias
1 | alias l = (ls) |
使用
强大的 REPL 能力
作为一个 shell,尤其是一个新的 shell,上手是否简单,使用是否 easy?这一点,nushell 也可圈可点(目前版本也还有一些不足,改进之后会更好):
- help 命令几乎可以涵盖你绝大部分的搜索需求。由于 nushell 中所有的指令都是以 command 的形式提供,你可以使用 help -f keyword 来搜索相关的命令。例如:
1 | help -f remove |
在学习 nushell 之前,先了解一下它的命令集,是很有帮助的,后续也方便快速的查找。尤其是 nushell 中与 filter 相关的一系列命令,它非常类似于 Java 8/Scala 中的一些集合 λ 函数。
- 还算不错的调试命令,例如:
- view source
- scope
- debug/inspect/explore:显示变量的值
- explain/metadata/describe: 查看变量的元信息
强大的 completion 能力
nushell 自身的命令具有强大的 completion 能力,而且,它还能把这个能力扩展到外部命令之上,而且,这种扩展的实现非常简单,你也可以对你常用的工具,包装一个 completion 的能力。参考:
Custom completions | Nushellwww.nushell.sh/book/custom_completions.html
比如我引入了 https://github.com/nushell/nu_scripts/blob/main/custom-completions/git/git-completions.nu 之后,我现在使用 git 命令行,基本上就无需搜索了,感觉效率比使用 GUI 工具要提高了不少。
完备的语言能力,可以编写更简单、可读、鲁棒、强大的脚本
nushell 自身是一个编程语言,这一点倒不奇怪(bash、zsh 等也是这样的),不过,有一些特性让 nushell 相比其他的 shell 有更为强大的编程能力:
- nushell 针对 completion、argument process, command help 提供了语言级的支持,现在,你只需要定义一个简单的函数,它就有了 completion、argument process 的能力。非常的优美。
1 | # run the mpp performance bench |
这个能力太让我开心了,几乎是零成本,就获得了显著的脚本的可用性提升。
- 强类型。我更偏爱强类型的语言,代码有更强的鲁棒性。
- 简洁、友好的输出。结合使用 nushell 的 table,可以很简单的输出优美的报告。
Powershell 美化
安装 NF 字体
后面介绍的一些功能会有显示一些特殊字符的需求,所以这里我们要提前安装一些支持特殊字符的字体。而 nerd-fonts 这个项目,包含了众多适配过特殊字符的字体,可以放心使用。这里推荐 Meslo-Nerd-Fonts
,可以在 scoop 中安装。
1 | # scoop默认没有开启nerd-fonts分类,需要开启才能安装相关字体 |
Windows Terminal (终端) 选项
然后再来配置一下 Windows Terminal (终端) ,点击下拉菜单选择设置打开设置标签页,然后依次修改以下选项:
- 启动 -> 默认配置文件,改为 Powershell,如果你已经安装了 Powershell 7.2,这里应当可以自动搜索到。否则可能需要手动编辑配置文件。
- 启动 -> 默认终端应用程序,改为 Windows Terminal (终端) 。
- 外观 -> 在选项卡中显示亚力克效果,选择启用。
- 配色方案,这里可以根据自己喜好调整。
- 配置文件默认值 -> 外观 -> 字体,改为
MesloLGS NF
字体,字号按照自己屏幕大小选择,再开启亚力克效果,透明度选择 70% 左右。
对所有终端生效
在终端中配置只能在当前终端生效,为了让它能够在所有 Powershell 中永久生效,需要在配置文件中编辑。
在 Powershell 中运行以下命令,用 vscode 打开 Powershell 的配置文件,如果你没有 vscode,也可以改成 notepad 用记事本来编辑配置文件。
1 | code $PROFILE |
PSReadLine
想让 Powershell 也拥有提示和补全功能?PSReadLine 可以帮你,这是一个可以增强终端体验的工具。
安装 PSReadLine
PowerShell/PSReadLine: A bash inspired readline implementation for PowerShell (github.com)
确保你使用的是 Powershell 7.2,然后运行下面的命令。
1 | Install-Module PSReadLine -AllowPrerelease -Force |
使用 PSReadLine
要使用 PSReadLine,同样需要在 $PROFILE
中添加一些配置,可以参考 官方文档
1 | Import-Module PSReadLine |
zsh 配置
Zsh 安装
- 查看自己系统是否存在 zsh
1 | cat /etc/shells |
- 查看是否是使用的 zsh
1 | echo $SHELL |
- ubuntu
1 | apt-get update |
第一次进入 Zsh 会自动出现一个配置界面,这个界面可以根据需要自定义 Zsh。
在这里输入 1
就可以进入配置界面了。
配置界面中各个菜单代表的意思分别是:
1
:设置命令历史记录相关的选项2
:设置命令补全系统3
:设置热建4
:选择各种常见的选项,只需要选择 “On” 或者 “Off”0
:退出,并使用空白(默认)配置a
:终止设置并退出q
:退出
这里根据提示,然后按照你自己的喜好配置就可以了。配置好后,会在你的用户目录下生成 .zshrc
文件。然后我们要去这个文件中启用插件和主题。
Ubuntu 安装插件
1 | sudo apt-get install zsh-autosuggestions zsh-syntax-highlighting eza |
zsh-autosuggestion
基于历史记录,进行命令的推荐和补全。
zsh-syntax-highlighting
对输入的命令提供高亮显示和语法检查。
eza-community/eza: A modern alternative to ls
用于替代原生的ls
,通过不同的颜色来更好地区分文件的类型及相关的元属性。
zsh-completions
https://github.com/zsh-users/zsh-completions/tree/master
1 | git clone https://github.com/zsh-users/zsh-completions.git ~/module/zsh-completions |
Fzf-tab
Aloxaf/fzf-tab: Replace zsh’s default completion selection menu with fzf! (github.com)
1 | sudo apt-get install fzf |
~/. zshrc
1 | source /usr/share/zsh-autosuggestions/zsh-autosuggestions.zsh |
命令行常用工具
替代品
- 命令行常用工具的替代品 - 阮一峰的网络日志 (ruanyifeng.com)
- ibraheemdev/modern-unix: A collection of modern/faster/saner alternatives to common unix commands. (github.com)
Zoxide 快速跳转
ajeetdsouza/zoxide: A smarter cd command. Supports all major shells. (github.com)