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

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

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

相比于 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)》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

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

算法引论

算法引论

[美]Udi Manber / 黄林鹏、谢瑾奎、陆首博、等 / 电子工业出版社 / 2005-9-1 / 35.00元

本书是国际算法大师乌迪·曼博(Udi Manber)博士撰写的一本享有盛誉的著作。全书共分12章:第1章到第4章为介绍性内容,涉及数学归纳法、算法分析、数据结构等内容;第5章提出了与归纳证明进行类比的算法设计思想;第6章到第9章分别给出了4个领域的算法,如序列和集合的算法、图算法、几何算法、代数和数值算法;第10章涉及归约,也是第11章的序幕,而后者涉及NP完全问题;第12章则介绍了并行算法;最后......一起来看看 《算法引论》 这本书的介绍吧!

在线进制转换器
在线进制转换器

各进制数互转换器

随机密码生成器
随机密码生成器

多种字符组合密码

SHA 加密
SHA 加密

SHA 加密工具