将Cygwin命令行窗口集成到Windows右键菜单

大家知道在Windows下Shift+右键菜单可以呼出“在此处打开命令行窗口”菜单项,在当前路径下执行一些命令,非常的方便。下图是做出的效果:

那么,如何以这种方式打开Cygwin的命令行窗口呢? 方法是”外呼里应“,”外呼“就是通过注册表添加右键菜单项,用户点击该菜单项时,调用相应程序并传入参数,其中一个重要的参数就是当前路径。”里应“就是在cygwin的启动脚本里检测路径参数,若有,则将工作路径切换到该路径参数。

下面先介绍手动改动注册表的方式:

(1) Win + R, 输入regedit, 回车,启动注册表编辑程序,找到HKEY_CLASSES_ROOT\Directory\Background\shell表项

(2) 右击"shell"->新建->项,输入新建项的名字,如"在此处打开Cygwin窗口",此名随便起,会显示在菜单项上。右击刚才新建的项->新建->项,输入新建项名字为"command",这个项的名字必须为"command",表示点击该菜单项时要执行的命令。双击"command"下"(默认)"数据项,在"数值数据(V)"下输入如下内容:

"D:\Cygwin\bin\mintty.exe" -i /Cygwin-Terminal.ico /bin/env _T=%V /bin/bash -l

解释下上面一行内容的含义。"D:\Cygwin\bin\mintty.exe"为mintty所在位置,注意根据cygwin安装路径不同有所不同。-i用于指定mintty窗口左上角的图标,/bin/env _T=%V用于设置在启动mintty后的shell里面环境变量_T的值,_T为路径参数,其中%V表示windows传入的路径参数。/bin/bash -l 表示启动登录shell

(3) 若仅进行以上设置,右击即可出现菜单项。现在要将其设置成Shift+右击才出现。找到新建的”在此处打开Cygwin窗口“,右击->新建->字符串值,名字输入”Extended“,值保持默认即可。

(4) 进入Cygwin,编辑~/.bash_profile文件,在尾部添加如下内容:

_T=${_T//\\//} #将所有的'\'替换为'/'
if [[ $_T == "" ]]; then
    _T=${HOME}
fi
cd "${_T}"

(4)至此,完成。

下面介绍一个小工具Context Menu Editor,简化上面注册表编辑的繁琐操作,以管理员权限运行该程序,进行如下设置后,点击”set“即可加入注册表。

注意,该工具可以设置菜单项左侧显示的小图标,实际上是在HKEY_CLASSES_ROOT\Directory\Background\shell\{newItemName}下新建"Icon"数据项并设置值为图标路径实现的。该图标与Path文本框里的-i含义不同。

将Cygwin命令行窗口集成到Windows右键菜单

时间: 2024-08-07 04:20:52

将Cygwin命令行窗口集成到Windows右键菜单的相关文章

更改命令行窗口的样式(色彩、字体等)

学习C语言的同学一定对"命令行窗口"并不陌生,大多数情况下,命令行窗口是长下面这样的↓↓↓ 有一些看了我其他文章的同学就问,为什么我的命令行窗口不是长这样的,还有同学说,以前看<黑客帝国>,满屏幕绿色的代码很酷,像下面这样 其实,我们的命令行窗口,当然也可以自定它的颜色样式了,我习惯的使用状态是下面这样: 是的,你没有看错,它还有一些半透明 下面就来看一下怎么操作,首先右击命令行窗口标题栏,在快捷菜单中选择[属性]选项 好的,剩下的就是大家自己调整的时间了,第二个选项卡是字

windows下自动启动Redis隐藏命令行窗口

这段时间看了看关于Redis的相关内容,对于Redis在windows下的安装和常规启动我就不多说了.可以参考其他的博客http://www.cnblogs.com/edisonchou/p/3821228.html.我按照这篇博客的方法添加启动Redis的windows服务,但是在启动服务的时候,会报错:错误1053:服务没有及时响应启动或控制请求.如下图: 我查了相关资料,有的人说是因为windows8系统权限问题.我就想能不能绕过这个错误,实现自动启动Redis,而不用再命令行中启动. 一

在windows命令行窗口下执行:查看所有的端口占用情况

开始--运行--cmd 进入命令提示符 输入netstat -ano 即可看到所有连接的PID 之后在任务管理器中找到这个PID所对应的程序如果任务管理器中没有PID这一项,可以在任务管理器中选"查看"-"选择列" 经常,我们在启动应用的时候发现系统需要的端口被别的程序占用,如何知道谁占有了我们需要的端口,很多人都比较头疼,下面就介绍一种非常简单的方法,希望对大家有用 假如我们需要确定谁占用了我们的9050端口 1.Windows平台 在windows命令行窗口下执

在Windows命令行窗口中输入并运行PHP代码片段(不需要php文件)的方法

有时候只是简单的为了测试某个php函数的效果,以前总是需要建一个php文件,复制这个文件的路径,再通过web访问或者用php命令执行这个php文件. 一直想要怎么才能不用创建文件,才能直接执行PHP代码片段呢?终于找到了方法,现在分享出来,给有需要的人. 前提: 1. 本文只是说Windows下的情况.其他操作系统也类似,但略有不同. 2. 必需已经安装好了php,并设置好了环境变量.如果下载的可执行安装包进行安装的,一般已经自动设好环境变量了.如果是下载的zip包自己解压的,需要手工设置环境变

在windows中,如何使用cmd命令行窗口正确显示编码为utf-8格式的文字

在windows中,如何使用cmd命令行窗口正确显示编码为utf-8格式的文字呢? 正确的步骤如下: 1, 打开cmd命令行窗口 2, 输入命令 >chcp 65001 数字65001代表的是cmd窗口中utf-8格式的编码.cmd窗口默认编码为gbk,数字代码为936 D:\>chcp 65001 Active code page: 65001 3,在cmd窗口标题栏里右键点击,调出右键菜单,点击属性->字体,将字体改成Lucida Console, OK,可以正确显示utf-8编码的

windows环境隐藏命令行窗口运行Flask项目

Linux下可以使用nohub来使Flask项目在后台运行,而windows环境下没有nohub命令,如何让Flask项目在windows中在后台运行而不显示命令行窗口呢? 1.写一个.bat脚本来启动Flask程序 # app.py是Flask项目启动入库 python app.py 2.写一个.vbs脚本来启动.bat # app.py, run.bat 和 runbat.vbs放在同一个目录下,如果不是同一目录下则用绝对路径 CreateObject("WScript.Shell"

windows命令行窗口打开mysql,并创建数据库,导入sql文件

mysql的命令以分号结尾. 1.打开一个命令行窗口,在命令行窗口中切换到mysql的安装路径下到bin文件夹(我没有配置mysql的环境变量,所以需要切换到安装路径,如果已经配置环境变量不需要切换) cd C:\Program Files (x86)\MySQL\MySQL Server 5.5\bin 回车输入下边的命令 mysql -h localhost -u root -p  或 mysql -u root -p 回车提示输入密码,成功后连接mysql数据库 2.创建数据库 //创建数

system调用命令行命令而不显示命令行窗口

system调用命令行命令而不显示命令行窗口 通常用system调用命令行命令时都会弹出黑底白字的命令行窗口,下面的代码可以不显示弹出的命令行窗口. 代码如下 1 #pragma comment( linker, "/subsystem:/"windows/" /entry:/"mainCRTStartup/"" ) // 设置入口地址 2 #include <windows.h> 3 #include <stdio.h>

Exchange 2013 打开EMS命令行窗口报WinRM错误

前2天有用户反映无法打开exchange 2013 EMS命令行窗口,报以下错误: 通过上图的报错一时无法确定原因,通过查看:事件查看器,发现有以下错误事件: 事件ID:2280 该错误大约15s 出现一次. 通过此错误ID大概判断出跟IIS有关,通过和客户沟通了解客户在此服务器上重新安装了exchange2013,而且安装目录和第1次时不一样. 由此判定此问题是因为客户重新安装exchange2013时修改了安装路径,而应用程序的配置文件路径并未进行修改,针对此问题处理方法如下: 1. 打开应