在 Windows 上打造体验绝佳的 Linux 终端(非 wsl)

栏目: 服务器 · 发布时间: 1年前

来源: juejin.im

内容简介:相比于 Windows 上的 Powershell 命令,Linux 命令更加简洁易用,能够有效提高开发效率,有时候还需要完全真实的 Linux 环境做测试,毕竟一般服务器都是用 Linux 系统的。目前桌面版的 Linux 发行版系统如 Ubuntu、Deepin 等都Mac 太贵,所以我只能用 Windows 了。

本文转载自:https://juejin.im/post/5bd5a08cf265da0add520772,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有。

相比于 Windows 上的 Powershell 命令,Linux 命令更加简洁易用,能够有效提高开发效率,有时候还需要完全真实的 Linux 环境做测试,毕竟一般 服务器 都是用 Linux 系统的。

目前桌面版的 Linux 发行版系统如 Ubuntu、Deepin 等都 对开发 工具 都有很好的支持 。但是对于国内的环境来说,软件生态还是相当匮乏,除了写代码,想干点别的,相当困难。更重要的是 所有的 Linux 发行版对多桌面的支持都非常差,对触摸板的多指操作的支持也非常差,这是不能忍受的 ,所以还是只拿 Linux 当服务器用吧。

Mac 太贵,所以我只能用 Windows 了。

Windows 其实是可以打造出一套体验非常良好的 Linux 环境的,至少在我的使用过程中是要 比单独安装 Linux 桌面版系统要好

我的 Linux 终端方案

在我写这篇文章的时候,我已经试过非常多在 Windows 上使用 Linux 终端的方式了,并且还用过很长时间,最终我选择了 Git Bash + Hyper-V + Linux 这种方案。

  • Git Bash 由 Windows 版的 Git 自带,启动速度快,内存占用少,自带大部分 Linux 命令,可通过配置文件更改外观,采用 Linux 文件系统,支持 alias。稍稍莫改一下,再添加几个 alias,它就是日常使用体验非常好的终端。
  • Hyper-V 是 Windows 从 win8 开始就自带的虚拟机,用来安装服务器版 Linux,性能可以媲美 VMware,而内存占用则远远优于 VMware,并且支持用 Powershell 命令操作虚拟机。Powershell 命令虽然比较难记,但是可以借助 alias 设置别名来使用,非常方方便。

同样的,我列举几个不好的方案:

  • WSL ,磁盘 IO 性能极差,并且没有真实内核,无法运行 docker 等 Linux 应用。
  • Cmder 没有 Linux 文件系统,切换磁盘繁琐且经常失败,窗口上的多余部件过多,启动不够快。
  • VMware ,内存占用高,不使用时后台服务多,不支持用命令控制虚拟机。

美化 Git Bash

在用户根目录下新建一个名为 .minttyrc 的文件,写入以下内容,然后重启 git bash,就能看到美化后的样子了。

下面配置中第一部分是窗口的基本配置,包括大小、透明度、字体等,第二部分是窗口颜色,第三部分是目录和文件的配色,都可以随意修改。

$ cd ~
$ touch .minttyrc
$ vi .minttyrc
复制代码
FontHeight=16
Font=Consolas
Transparency=low
FontSmoothing=full
Locale=zh_CN
Charset=GBK
Columns=88
Rows=26
OpaqueWhenFocused=no
Scrollbar=none
Language=zh_CN

ForegroundColour=131,148,150
BackgroundColour=0,43,54
CursorColour=220,130,71

BoldBlack=128,128,128
Red=255,64,40
BoldRed=255,128,64
Green=64,200,64
BoldGreen=64,255,64
Yellow=190,190,0
BoldYellow=255,255,64
Blue=0,128,255
BoldBlue=128,160,255
Magenta=211,54,130
BoldMagenta=255,128,255
Cyan=64,190,190
BoldCyan=128,255,255
White=200,200,200
BoldWhite=255,255,255
复制代码

仅仅是换了一个主题还不够,还需要更改终端提示符,更改 git 安装目录下 etc 目录里面的一个文件即可,这个文件也可以通过绝对路径访问到。

$ vi /etc/profile.d/git-prompt.sh
复制代码
if test -f /etc/profile.d/git-sdk.sh
then
	TITLEPREFIX=SDK-${MSYSTEM#MINGW}
else
	TITLEPREFIX=$MSYSTEM
fi

if test -f ~/.config/git/git-prompt.sh
then
	. ~/.config/git/git-prompt.sh
else
	PS1='\[\033]0;Bash In $PWD\007\]' # 窗口标题
	PS1="$PS1"'\n'                                # 换行
	PS1="$PS1"'\[\033[32m\]'               # 绿色
	PS1="$PS1"'\u '            	                # 用户名
	PS1="$PS1"'\[\033[0m\]'                # 灰色
	PS1="$PS1"'at '			       # 自定义内容
	PS1="$PS1"'\[\033[35m\]'             # 粉红色
	PS1="$PS1"'\t '			       # 时间
	PS1="$PS1"'\[\033[33m\]'             # 黄色
	PS1="$PS1"'\W '                            # 当前目录
	if test -z "$WINELOADERNOEXEC"
	then
		GIT_EXEC_PATH="$(git --exec-path 2>/dev/null)"
		COMPLETION_PATH="${GIT_EXEC_PATH%/libexec/git-core}"
		COMPLETION_PATH="${COMPLETION_PATH%/lib/git-core}"
		COMPLETION_PATH="$COMPLETION_PATH/share/git/completion"
		if test -f "$COMPLETION_PATH/git-prompt.sh"
		then
			. "$COMPLETION_PATH/git-completion.bash"
			. "$COMPLETION_PATH/git-prompt.sh"
			PS1="$PS1"'\[\033[36m\]'  # change color to cyan
			PS1="$PS1"'`__git_ps1`'   # bash function
		fi
	fi
	PS1="$PS1"'\[\033[0m\]'        # 灰色
	PS1="$PS1"'$ '                       # 命令提示符
fi

MSYS2_PS1="$PS1"               # for detection by MSYS2 SDK's bash.basrc
复制代码

上面的这些内容有中文注释的部分是我改过的,这个依据自己的喜好来改,如果看不懂上面的那些符号都是代表的什么意思,可以搜索下 Linux下如何修改终端提示符 就会有很多参考资料。

改完之后:

在 Windows 上打造体验绝佳的 Linux 终端(非 wsl)

在 VSCode 中的样子:

在 Windows 上打造体验绝佳的 Linux 终端(非 wsl)

善用 alias 强化 Git Bash

alias 是一些命令的别名,可以用来简化命令。在用户根目录下新建 .bash_profile ,然后按如下格式自定义命令,保存后重启 git bash 就可以了。

$ cd ~
$ touch .bash_profile
$ vi .bash_profile
复制代码
alias bashalias='code ~/.bash_profile'
alias bashcolor='code ~/.minttyrc'
alias bashconfig='code /etc/profile.d/git-prompt.sh'
alias bashsync='cp ~/.bash_profile ~/.minttyrc ~/.gitconfig /etc/profile.d/git-prompt.sh /e/doing/terminal-sync/ \
                && cd /e/doing/terminal-sync \
                && git add . && git commit -m update && git push'

alias .='cd ~'
alias ..='cd ..'
alias ...='cd ../..'
alias e='exit'
alias cls='clear'

alias gs='git status'
alias gc='git commit -m'
alias gp='git push'
alias gl='git pull'
alias ga='git add .'
alias gb='git branch'
复制代码

上面只是列举了部分我用过的 alias,事实上一个 alias 可以包含多条命令,例如上面的 bashsync ,多用它可以极大地提升命令行的使用效率。

使用 Hyper-v

即使 Git Bash 本身已经很强了,但有的时候还是需要用到真实的 Linux 系统。这个时候就可以启动一个 Linux 虚拟机然后再用 git bash 登陆进去就好了。

使用 Hyper-v 能够在 windows 上获得最好的体验,在众多的虚拟机软件中如 virtualbox,vmware,用 Hyaer-v 运行服务器版的 Linux ,内存占用最少,性能也不错。不过,如果要安装桌面版的 Linux 还是选择用 vmware 吧。

在 Hyper-v 上安装 Linux 虚拟机有很多的教程,我找了两篇我当时看过的没有坑的文章,这两篇是安装配置 centos 的,如果是安装别的发行版,步骤也是大同小异的,第二篇文章是用来设置静态 ip 的,这样每次都可以通过这个静态 ip 登录到虚拟机。

安装好了虚拟机之后,接下来就可以用命令控制它了。

powershell 提供了一些命令来操作虚拟机,例如 Get-VM 可以用来获取虚拟机的状态, Start-VM -Name CentOS7 可以用来启动我指定的虚拟机,其中 CentOS7 是我指定的虚拟机的名字。

在 git bash 中要想运行这些命令,只需要在这些命令前面加上 powershell 就可以了,另外还需要管理员权限才可以,直接把 git bash 的属性设置为以管理员启动会更加方便,同时设置属性的时候还可以顺便设置一个全局快捷键来启动 git bash。

在 Windows 上打造体验绝佳的 Linux 终端(非 wsl)

powershell 的命令还是不太好敲的,因为区分大小写,可以设置一些 alias 来简化操作:

alias vmssh='ssh root@192.168.xxx.x'
alias vmps='powershell Get-VM'
alias vmstop='powershell Stop-VM -Name CentOS7'
alias vmstart='powershell Start-VM -Name CentOS7'
alias vmsave='powershell Save-VM -Name CentOS7'
复制代码

设置了 alias 之后使用起来就非常方便,例如登录虚拟机只需要敲几个字母就行了,这是其它的虚拟机做不到的。当然我还配置过了 ssh ,可以免密登录,centos 也安装了 oh-my-zsh 作为默认 shell。

在 Windows 上打造体验绝佳的 Linux 终端(非 wsl)

更多操作 hyper-v 的 powershell 命令可以参考微软的官方文档。

接下来还有一个问题,windows 与 linux 虚拟机之间怎么方便的传输文件呢,很遗憾 hyper-v 没有类似于 vmware 中的共享文件夹那样的功能,不过借助 scp 命令也是很简单的,可以在两个系统里都创建一个固定的文件夹作为同步文件用,然后设置一个 alias 就好了。

alias vmpush='scp -r /e/share/ root@192.168.xx.x:/root/'
alias vmpull='scp -r root@v192.168.xx.x:/root/share /e'
复制代码

效果如下:

在 Windows 上打造体验绝佳的 Linux 终端(非 wsl)

好了,这样一套在 Windows 上体验绝佳的 Linux 命令行终端基本就打造完成了,好好享用吧

另外这个仓库会同步我最新的终端配置: github.com/xnng/termin…


以上所述就是小编给大家介绍的《在 Windows 上打造体验绝佳的 Linux 终端(非 wsl)》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

关注码农网公众号

关注我们,获取更多IT资讯^_^


为你推荐:

相关软件推荐:

查看所有标签

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

用户体验的要素

用户体验的要素

Jesse James Garrett / 范晓燕 / 机械工业出版社 / 2007年10月 / 25.00

这不是一本关于“怎样做(How-to)”的书。有很多很多讨论如何建设网站的书,这本不是。 这不是一本关于技术的书。在这里你找不到一行代码。 这不是一本有答案的书。相反,这本书说的是“如何提出正确的问题”。 这本书将告诉你,在你阅读其他书籍的之前,你需要提前了解什么。如果你需要一个大的概念,如果你需要了解用户体验设计师所做出的决策的环境,这本书很适合你。 这本书经过精心设计,......一起来看看 《用户体验的要素》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

URL 编码/解码
URL 编码/解码

URL 编码/解码

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具