shell配置
Nushell
安装
配置
配置 | Nushell
Windows 的 Nushell 配置与 VSCode 集成(不说废话)
https://blog.yusong.me/terminal/shell/nushell
Vscode 高亮插件
GitHub - nushell/vscode-nushell-lang: A Nushell grammar for Visual Studio Code with IDE support
配置 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 |
starship
命令行常用工具
替代品
- 命令行常用工具的替代品 - 阮一峰的网络日志 (ruanyifeng.com)
- ibraheemdev/modern-unix: A collection of modern/faster/saner alternatives to common unix commands. (github.com)
Sudo
Linux 最好用的命令是什么?sudo!一键切换管理员权限,Powershell 每次发现忘了开管理员,就得重开一个,很麻烦的有没有!
所以我们来给 Windows 装一个 sudo:
1 | scoop search sudo |
然后就可以爽到飞起了。以后不管什么命令失败,都可以 sudo 试一试。
Zoxide 快速跳转
ajeetdsouza/zoxide: A smarter cd command. Supports all major shells. (github.com)
MobaXterm
安装完毕之后界面长这个样。
当然你们刚安装完成是不会有任何 session 的。下面来创建第一个 SSH session。
点击菜单栏 「sessions」 –> 「new session」,即可弹出 「session setting」 对话框。由上面那一大串的连接方式我们就可以知道 Moba 的强大之处。
我们点选第一个 SSH 图标,并填入相关信息,就可以完成 session 创建了。
点击确定后,输入密码就可以连接上虚拟机了。而且边上虚拟机之后,它会自动通过 FTP 也连接到虚拟机,直接拖拽就可以进行文件复制了。
快速连接 session
创建一个 session 之后,就可以在左侧的 session 标签里留下它的信息,下次需要连接的时候直接双击即可。
几个有用的设置
隐藏菜单栏下的那排按钮
菜单栏下的那排按钮感觉有点鸡肋,全部可以从菜单栏里找到,而且使用频率也不是非常高。况且,大部分屏幕是长方形的,上下空间有限,左右还比较富余一些,因此去掉它可以省下很大空间。
在菜单栏点击 「view」 –> 「show menu bar」,即可隐藏此排按钮。
右键粘贴
在 Moba 及很多终端工具里,都有这样的功能:鼠标左键划选复制文件,右键粘贴文本。但在 Moba 中右键粘贴功能默认不打开,我们可以手动打开。
在菜单栏点击 「settings」 –> 「Configuration」,在弹出的对话框中选择 「terminal」,再将 「paste using right-click」 打上对勾即可。
关闭自动弹出 SFTP
Moba 在连接上远程电脑之后,将自动打开左侧的 SFTP 侧边栏。有时我们并不需要 SFTP,同时主窗口是黑色的,SFTP 又是白色的,显得有点刺眼,因此可以将自动弹出 SFTP 功能关闭掉。
在菜单栏点击 「settings」 –> 「Configuration」,在弹出的对话框中选择 「SSH」,再将 「automaticall switch to SSH-browser tab after login」 前面的对勾去掉即可。