本文主要用于记录在Windows上使用WSL2和centos系统打造一个免费高效的shell终端的配置过程以及界面优化过程。

1、选型分析

之前一直都是使用termius和windows来进行ssh管理,但是最近termius要过期了(没钱续费),不用盗版(版权意识),ssh的Agent Forwarding功能是个人刚需且为termius的付费版才有的功能,所以开始研究windows上免费的ssh客户端管理工具或者是方式。

(mac系统用户可以跳过这篇文章)首先考虑到了mac,因为mac系统是类unix系统,在命令行终端操作上要比windows好太多,但是没钱买mac,所以pass

然后如果直接使用linux系统的话虽然shell的问题很容易解决,但是其他的办公软件无法使用或者很难用;如果用虚拟机跑linux,启动麻烦,耗费性能,文件管理也十分麻烦;所以pass

还有就是各种windows上的各种免费第三方工具,如powershell、GitBash、cmder等等,能实现一定的Linux命令和shell功能,但是相比原生linux还是功能残缺。

**但是如果只要管理各种ssh客户端的话很多免费工具已经足够优秀了,**而笔者本次除了管理ssh之外还想要实现一定的shell功能,因此最后锁定Windows10上面的2004版本的wsl2工具,用它来运行一个linux系统,虽然是残缺的Linux,但是在shell功能和ssh功能上和直接运行Linux并无差异。唯一需要注意的就是windows的版本要比较新。

WSL 2 is only available in Windows 10 builds 18917 or higher

2、安装wsl

windows官网的安装教程比较详细,并且wsl的安装启用比较简单,我们可以直接使用管理员模式的powershell通过命令行来启用:

dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

命令顺利执行完后需要重启,这时候输入wsl --help就可以看到wsl已经安装成功。

3、安装centos

Windows的应用商店中有一些不错的linux发行版,包括很多同学都很喜欢的ubuntu,但是个人比较熟悉使用centos,而应用商店中的centos是要收费的,不过好在github上面有CENTOS官方开源的安装包,我们这里使用github上的安装包进行安装。

如果使用应用商店中的发行版直接点击安装即可。随后便可以跳过下面的centos的安装部分。

首先我们去centos的GitHub页面下载对应的安装包:

注意这里要切换分支进行下载,以centos7-x86.64为例,这里对应的就是最新的centos7.8系统,我们只需要下载对应的tar.xz压缩包即可。

wget https://github.com/CentOS/sig-cloud-instance-images/blob/CentOS-7-x86_64/docker/centos-7-x86_64-docker.tar.xz

接着我们以管理员身份打开一个powershell窗口:

# 安装 Chocolatey
Set-ExecutionPolicy Bypass -Scope Process -Force; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))
# 安装 LxRunOffline
choco install lxrunoffline

注意这里安装完成之后需要重启powershell来进行下一步的安装

LxRunOffline install -n 自定义系统名称 -d 安装目录路径 -f tar.xz安装包路径
# 注意windows系统命令行中的文件路径和linux系统差别很大
# 比如我这里的安装命令就是
LxRunOffline.exe install -n centos -d D:/centos -f .\centos-7-x86_64-docker.tar.xz
# 将centos安装到D盘的centos文件夹下,并且命名为centos

接下来就可以使用下述两种方式尝试启动

LxRunOffline run -n 自定义系统名称
wsl -d 自定义系统名称

4、升级centos为wsl2

windows官网教程

# 列出已经安装的wsl的信息
wsl -l -v
# 将对应的wsl设为wsl2,注意<Distro>要和上面查询到的信息一致
wsl --set-version <Distro> 2
# 设置默认使用的发行版
wsl -s <Distro>

5、配置windows terminal

使用windows的cmd或者powershell都可以直接输入wsl命令进入到wsl系统中进行操作,但是由于这两者的界面比较丑,因此我们这里使用可以定制更多参数的windows terminal来进行替换。

不过windows terminal目前来说属于比较轻量级的产品,如果需要更多的功能可以考虑一下其他的软件,这里额外推荐一个免费的全平台终端terminus注意比收费的termius要多一个字母n,也是github上面的一个开源项目,免费高效且内置多种主题和少量还可以的插件。

5.1 安装windows terminal

windows terminal直接使用win10自带的应用商店即可搜索下载安装。

5.2 安装powerline/fonts

powerline/fonts是github上面的一个项目,涵盖了较多的字体,windows本身内置的字体可能在shell中显示不太美观,所以这里我们需要在windows系统中和wsl中都安装字体。

首先在wsl中使用git拉取项目并且安装

git clone https://github.com/powerline/fonts.git --depth=1
cd fonts
./install.sh

在Windows中也需要安装该字体,以UbuntuMono为例,同样是下载之后进入到对应的文件夹中手动安装所有的ttf字体即可:

(注意尽量以管理员身份为本机所有用户安装)

5.3 配置iTerm2-Color-Schemes

主题的效果我们可以在官网进行预览,配置参数我们可以在对应的GitHub中找到。需要注意的是要找到对应的windows terminal目录中的配置。

5.4 配置setting.json

setting.json的参数非常多,我们可以根据自己的习惯设定显示界面和快捷键等操作,并且还可以添加背景图片,自定义不同shell的图标icon和主题等用以区分不同的shell避免误操作。

// To view the default settings, hold "alt" while clicking on the "Settings" button.
// For documentation on these settings, see: https://aka.ms/terminal-documentation{"$schema": "https://aka.ms/terminal-profiles-schema","defaultProfile": "{aabae64a-7cf7-5add-b5d6-744e54ab56d6}", //设定默认启动使用的shell。这里使用后面对应的guid"initialRows": 40, //初始化窗口的行数"initialCols": 150,//初始化窗口的列数"alwaysShowTabs": true,"showTerminalTitleInTitlebar": true,"profiles":{"defaults":{// Put settings here that you want to apply to all profiles           },"list":[{"guid": "{07b52e3e-de2c-5db4-bd2d-ba144ed6c273}","hidden": false,"name": "Ubuntu-20.04","source": "Windows.Terminal.Wsl","fontFace": "Fira Mono for Powerline","fontSize": 12,"colorScheme": "Ubuntu",  //这里的color要和后面的schemes中的一致"useAcrylic" : false,    // 是否启用窗口透明度,效果类似毛玻璃特效"acrylicOpacity" : 0.6 // 窗口透明度}{"guid": "{aabae64a-7cf7-5add-b5d6-744e54ab56d6}","hidden": false,"name": "centos","source": "Windows.Terminal.Wsl","fontFace": "Fira Mono for Powerline","fontSize": 12,"colorScheme": "Atom","useAcrylic" : true,    // 窗口透明度"acrylicOpacity" : 0.8 // 窗口透明度},{// Make changes here to the cmd.exe profile"guid": "{0caa0dad-35be-5f56-a8ff-afceeeaa6101}","name": "cmd","commandline": "cmd.exe","hidden": false,"fontSize": 12,"colorScheme": "MaterialDark","useAcrylic" : false,    // 窗口透明度"acrylicOpacity" : 0.5 // 窗口透明度}]},// Add custom color schemes to this array"schemes": [{          "name": "Atom","black": "#000000","red": "#fd5ff1","green": "#87c38a","yellow": "#ffd7b1","blue": "#85befd","purple": "#b9b6fc","cyan": "#85befd","white": "#e0e0e0","brightBlack": "#000000","brightRed": "#fd5ff1","brightGreen": "#94fa36","brightYellow": "#f5ffa8","brightBlue": "#96cbfe","brightPurple": "#b9b6fc","brightCyan": "#85befd","brightWhite": "#e0e0e0","background": "#161719","foreground": "#c5c8c6"}],"keybindings": [//这里可以设置快捷键{"command" : "copy","keys" : ["ctrl+c"]},{"command" : "paste","keys" : ["ctrl+v"]}]
}

5.5 ssh_config

最后我们再搭配ssh自带的ssh_config来添加各种自定义ssh参数,如果需要在这上面开启ssh的Agent Forwarding功能,个人习惯是单独创建一个脚本并且在bash中设置alias快捷操作。

# 脚本内容示例
# 开启ssh Agent Forwarding
eval `ssh-agent`
# 将要使用的ssh key添加到ssh-add中
# 如果后面不指明文件则使用默认的~/.ssh/id_rsa
# 也可以一次添加多个
ssh-add ~/.ssh/id_rsa
ssh user@host

然后在bashrc文件中添加alias即可快速操作,对应的ssh_config参数可以使用man ssh_config命令来查看。

这里贴出几个常用的参数:

Host example.host.com
# ssh远程客户端的别名,可以直接通过ssh example.host.com来进行连接HostName 192.168.1.1
# ssh远程客户端的ip地址User root
# ssh远程的用户Port 22
# ssh的端口IdentityFile ~/.ssh/id_rsa
# ssh的认证密钥ForwardAgent yes
# 是否开启Agent Forwarding,默认不开启AddKeysToAgent yes
# 是否自动将 key 加入到 ssh-agent,值可以为 no(default)/confirm/ask/yes
# 如果是 yes,key 和密码都将读取文件并以加入到 agent ,就像 ssh-add。其他分别是询问、确认、不加入的意思。添加到 ssh-agent 意味着将私钥和密码交给它管理,让它来进行身份认证。

6、效果展示

wsl2使用的应该是windows定制的内核(目前我的系统内核是4.19.84-microsoft-standard),同时无法使用systemd工具,但是作为terminal来使用已经是绰绰有余了,命令的丰富程度也要远胜于powershell、gitbash和其他的第三方命令行,安装一些常用命令的方便程度也要远胜于cygwin等。windows系统的硬盘也会直接挂载在wsl中的/mnt目录下,可以直接使用Linux的sed、awk、paste等命令来对windows下的文本进行操作。

注意在默认情况下会把系统本身的硬盘也挂载到/mnt目录下,注意不要误操作rm命令

Windows Terminal + WSL2 + CENTOS 配置Windows命令终端相关推荐

  1. 酷炫cmd命令行工具——windows terminal的详细配置

    官网配置地址:An overview on Windows Terminal | Microsoft Docs 目录 一.Windows terminal安装与基本操作 1.Windows Termi ...

  2. Windows Terminal美化杂记-Windows Terminal使用与配置

    文章目录 Windows Terminal 前言 原cmd Windows Terminal 安装Terminal 配置 配置代码部分 配置字体部分 配置右键添加 测试常量 命令行中执行 管理员权限运 ...

  3. shell win10 改成cmd_Win10 的 PowerShell、CMD 和 Windows Terminal 全方位美化配置方法

    说明:# 原创 # 标签为 IT 之家在 IT 圈所设的投稿栏目,具体投稿规则点此查看. 其实网上的教程已经很多,但还是分享我自己亲测出来的吧 众所周知,Windows 10 自带的 PowerShe ...

  4. powershell快捷键_借助Windows Terminal搞一个花里胡哨的PowerShell终端

    一提起PowerShell,命令提示符等等,想到的就是丑.难用,非常丑! 各位可以先感受一下. 不过,现在我们可以对它做一个美化,美化后的效果如下,各位也可以感受下(本人不提供背景图) 下面做简单记录 ...

  5. 配置windows失败计算机,解决 配置windows update失败还原更改,请务必关机 win7更新失败 还原更改(图文)...

    win7在自动更新系统的时候出现更新失败的情况 一直停在"配置windows update失败还原更改,请务必关机"的画面如下: 如果持续半个小时到一个小时都在上述画面 可以重启电 ...

  6. 使用 ohmyzsh 打造 windows、ubuntu、mac 系统高效终端命令行工具

    如果觉得内容不错,可以设为星标置顶我的公众号 原标题名:oh my zsh 和 windows git bash 设置别名提高效率 写于2018年06月03日 在我的微信交流群中听闻很多前端开发比较贫 ...

  7. 告别黑白CMD PowerShell + Windows Terminal 终端美化

    Windows Terminal 只支持 Windows 1903 以上的版本,如果你的电脑未升级,可以退出浏览了. 软件介绍与安装 在微软商店下载下载 PowerShell 和 Windows Te ...

  8. linux 终端 主题 配色方案,自定义 Windows Terminal 终端界面与配色方案

    什么是 Windows Terminal?官方简介如下: Windows 终端是一个面向命令行工具和 shell(如命令提示符.PowerShell 和适用于 Linux 的 Windows 子系统 ...

  9. lex编译dos命令_微软新的命令行工具:Windows Terminal

    Windows Terminal 是微软为 Windows 操作系统打造的新的命令行工具.这款命令行实际上是一款集合形命令行工具,支持 PowerShell.CMD 以及 WSL. Windows T ...

最新文章

  1. sql查两个时间内的数据_如何通过AWR的sql脚本查执行时间、消耗CPU、gets、I/0等的sql?...
  2. asp.net MVC5为WebAPI添加命名空间的支持
  3. 美国纽约拟将电话亭变WiFi热点
  4. python 01列表异或_python基础篇三
  5. Spring Data Jpa的@Temporal注解
  6. mysql 慢查询及深入调优
  7. office365彻底卸载教程
  8. 视频教程-太空大战游戏实战课程-其他
  9. 微信投票平台防止刷票的方法和原理随笔
  10. 导出RCP程序遇到错误
  11. 亚马逊SP-API对接实践
  12. 【Lua笔记】、Lua元表
  13. 程序员的奋斗史(四十五)——大学断代史(九)——独自南下的岁月
  14. Complete Internet Repair(电脑网络修复工具)官方中文版V8.1.3.5222 | 网络修复工具使用后仍不能上网?快试试万能网络修复大师
  15. java感谢地说说_感恩心情说说
  16. 反病毒软件解析计算机的异常现象(转)
  17. 快递100 实时查询
  18. Android提示音大全,个性提示音下载-个性提示音app安卓版下载v1.2.1-游迅网
  19. 想知道谁是你的最佳用户?基于Redis实现排行榜周期榜与最近N期榜
  20. U盘直接拔掉会对数据有损坏吗

热门文章

  1. 怎么免费制作logo?logo免费设计在线生成,从此设计不求人
  2. iPhoneX 适配
  3. The artifact org.apache.commons:commons-io:jar:1.3.2 has been relocated to commons-io:commons-io:jar
  4. 为什么正常单据记账没有数据_正常单据记账怎么没有记录U8存货核算?正常 – 手机爱问...
  5. R语言矩阵操作:根据值找到行号和列号
  6. 6种自动化测试框架(总有一款适合你)
  7. 09.python常用数据类型—字典
  8. 真菌元胞自动机Python实现
  9. idea使用docker-mave插件打包镜像并部署到harbor私服仓库
  10. 用MATLAB绘制两个圆相切,教您用几何绘图工具画三个两两相切的圆