1、安装NotePad++

第一步是安装Notepad++。

2、安装 Cygwin64 Terminal

Cygwin64 Terminal是在Windows环境下,模拟运行Linux命令的软件,很实用。官网地址:https://www.cygwin.com/。

下载后,安装时需要选择下载源,建议选择edu结尾的网站。网上安装教程很多,这里不多说了。

3、添加环境变量

添加环境变量是为了能在CMD下直接使用Cygwin64的命令,之后的脚本用也用到了环境变量。

计算机 -> 右键 属性 -> 高级 -> 环境变量

在用户环境变量下添加两个环境变量,CYGWIN_HOME的值根据Cygwin64 Terminal的安装位置选择,默认安装位置为C:\cygwin64:

CYGWIN_HOME

C:\cygwin64

path

%path%;%CYGWIN_HOME%/bin

4、修改NotePad++的默认编码格式

为了方便,我们将Notepad++的默认编码格式改为utf-8的无BOM格式编码,设置 -> 首选项 -> 新建

5、解决换行符的问题

默认的Notepad++在编辑Shell脚本的时候默认会使用"\r\n"作为换行,这样的话执行结果中会出现

Cygwin64 $'\r': command not found的错误很烦,我们使用一段代码来替换掉"\r"。

不过要是按这个搞法,以后编写Shell脚本就需要放在 %CYGWIN_HOME%/home/%用户% 路径下了。当然,好处也是有点:在执行脚本之前,cd 到虚拟的Linux的/home/%用户%下,可以避免路径问题 ,比如 mkdir、pwd 什么的。

关掉自动更新,主要是为了不出现 Reload 的提示,老弹窗很烦就是了。

在Notepad++中关闭自动更新,设置 -> 首选项 ->其他:

将以下代码保存为cutName,放在%CYGWIN_HOME%/bin路径下,注意使用utf-8的无BOM格式编码:

#!/bin/sh

#2016-10-13 之前的搞法,不能实时输出,不实用,改了一波

replaceType=$1

cygwinPath=$2

winPath=$3

winPath=${winPath/"${cygwinPath}"/""}

shellPath=${winPath//'\'/'/'}

if [$replaceType = "-r" ] ; then

sed -i 's/\r//' ${shellPath}

chmod 775 ${shellPath}

elif[ $replaceType = "-b" ] ; then

sed -i 's/$/\r/' ${shellPath}

fi

6、设置运行和快捷键

在Notepad++中设定运行时的命令,运行 -> 运行,输入以下代码,选择保存:

cmd /k cd $(CURRENT_DIRECTORY) & bash cutName -r %CYGWIN_HOME% '$(FULL_CURRENT_PATH)' & bash $(FULL_CURRENT_PATH) & bash cutName -b %CYGWIN_HOME% '$(FULL_CURRENT_PATH)' & pause & exit

输入一个名称,选择一个快捷键组合,注意不要和默认的快捷键冲突(默认的ALT + F1快捷键被我删除了)。

7、设置自动保存

现在就可以使用快捷键执行测试脚本了。但是有一个习惯问题,在执行脚本之前经常忘记保存。这里我们使用一个插件Auto Save来帮助我们在开始运行Shell之前自动保存。

选择Show PluginManager,在available中找到Auto Save(注意不是Auto Save2),选中Auto Save,点击Install。

安装完成后Notepad++会重启一次,重启完成后,在插件菜单打开Auto Save的配置项,选择当Notepad++丢失焦点以后自动保存,这样一来在执行Shell之前,Shell脚本就会自动保存了:

这个要注意下,开启窗口离开焦点自动保存,会对其他日常应用造成影响,需要权衡取舍。

 

8、测试

在%CYGWIN_HOME%/home/%用户%下新建一个Shell脚本,如test.sh:

touch whosyourdaddy

echo `pwd`

echo 'work good'

保存,使用设定的快捷键运行脚本。

可以看到,执行脚本之前,已经切换到脚本所在路径。脚本在%CYGWIN_HOME%/home/%用户%下新建了一个文件。

到此环境搭建完成。

10、参考资料:

Cygwin64 Terminal:https://www.cygwin.com/

Cygwin安装:http://www.cygwin.cn/site/install/

Notepad++ AutoSave 自动保存插件:http://www.appinn.com/notepad-autosave/

windows上使用notepad++编辑shell脚本,并通过cygwin运行:http://kingj.iteye.com/blog/1870238

在notepad++中直接运行Python代码 : http://blog.chinaunix.net/uid-22521242-id-3438230.html

linux shell 字符串操作(长度,查找,替换)详解:http://www.cnblogs.com/chengmo/archive/2010/10/02/1841355.html

linux sed命令详解:http://www.iteye.com/topic/587673

转自:http://blog.csdn.net/hanhaixingchen/article/details/52151632

在Notepad++上搭建Windows下Shell运行环境的更多相关文章

  1. 转:WIN7上搭建Windows Phone 8 开发环境——VMware Workstation下Win8 “无法安装Hyper-V, 某个虚拟机监控程序正在运行”问题解决的办法

    转自:http://www.cnblogs.com/shaddock2013/p/3155024.html 最近在试着在Windows 7上搭建Windows Phone 8的开发调试环境,使用的是V ...

  2. WIN7上搭建Windows Phone 8 开发环境——VMware Workstation下Win8 “无法安装Hyper-V, 某个虚拟机监控程序正在运行”问题解决的办法

    最近在试着在Windows 7上搭建Windows Phone 8的开发调试环境,使用的是VMware Workstation + Win8 Pro的虚拟环境, 在漫长的WPexpress_full下 ...

  3. 使用Codeblock搭建Windows下Objec-c学习环境

    学习Object-c如果使用的是Windows,一般推荐使用虚拟机,但是太重量级了,先要下载OS-X,又要下载x-code.这里推荐一种比较简便的方式,使用code-block来搭建简易的Object ...

  4. windows下apache运行环境搭建

    apache的安装 要求: 1,不要安装到有中文的目录中: 2,尽量将apache,php,mysql安装到一个总的目录,便于管理.(如都建立在amp目录下,然后在该目录下分别建立apache,php ...

  5. windows下STM32开发环境的搭建

    一.概述 1.说明 笔者已经写了一篇Linux下STM32开发环境的搭建 ,这两篇文章的最区别在于开发环境所处的系统平台不一样,而其实这个区别对于开发环境的搭建其实影响不大,制作局部上的操作上发生了改 ...

  6. Windows 下 Ionic 开发环境搭建

    Ionic 介绍 首先,Ionic 是什么. Ionic 是一款基于 Cordova 及 Angular 开发 Hybrid/Web APP 的前端框架,类似的其他框架有:Intel XDK等. 简单 ...

  7. DE1-SOC开发板上搭建NIOS II处理器运行UCOS II

    DE1-SOC开发板上搭建NIOS II处理器运行UCOS II   今天在DE1-SOC的开发板上搭建NIOS II软核运行了UCOS II,整个开发过程比较繁琐,稍微有一步做的不对,就会导致整个过 ...

  8. 分布式版本库——Windows下Git的环境部署以及在GitHub上开源自己的项目

    分布式版本库--Windows下Git的环境部署以及在GitHub上开源自己的项目 这几天着实忙的焦头烂额,可惜不是搞技术,今天周日,难得闲下来,写篇大家都想学习的Git教程,其实廖雪峰老师的网站已经 ...

  9. 《从0到1学习Flink》—— Mac 上搭建 Flink 1.6.0 环境并构建运行简单程序入门

    准备工作 1.安装查看 Java 的版本号,推荐使用 Java 8. 安装 Flink 2.在 Mac OS X 上安装 Flink 是非常方便的.推荐通过 homebrew 来安装. brew in ...

随机推荐

  1. c++ 前置++与后置++的区别

    用C++编程的都知道,C++提供了一个非常强大的操作符重载机制,利用操作符重载,我们可以为我们自定义的类增加更多非常有用的功能.不过,C++也有限制,就是当我们为自定义的类重载操作符时,重载操作符的含 ...

  2. CSS3实战之多列

    CSS2中如果要设计多列布局,常用的方法有浮动和定位,但是浮动容易错位,定位无法满足模块的自适应能力,以及模块之间的文档流联动的需要.为了解决多列布局的难题,CSS3新增了多列自动布局功能. 利用多列 ...

  3. SharePoint 项目的死法(二)

    说实话, 做SharePoint项目或者任何信息化项目并不是个容易的事情, 但成功的IT项目对于一个企业来说也许意味着很多, 从我的观察来看, 大部分的成功的信息化项目给企业所带来的回报都远远超过其所 ...

  4. Donald Ervin Knuth:最年轻的图灵奖高德纳

    高德纳(Donald Ervin Knuth,1938年),美国著名计算机科学家,斯坦福大学电脑系荣誉教授.高德纳教授被誉为现代计算机科学的鼻祖,在计算机科学及数学领域发表了多部 具广泛影响的论文和著 ...

  5. [csp-201809-4]再卖菜 差分约束or记忆化搜索

    先更新第一个做法:差分约束 转化成最长路,求出的每一个解是满足差分方程的最小值 spfa求最短路 对于边(x->y) 有: if(dis[y] > dis[x] + a[i].d) dis ...

  6. func_get_args()获取参数

    php中func_get_args()可以获取多个参数,讲多个参数放在数组里面. <?php function show() { $attr = func_get_args();//获取输入的参 ...

  7. Samba远程代码执行漏洞(CVE-2017-7494)复现

    简要记录一下Samba远程代码执行漏洞(CVE-2017-7494)环境搭建和利用的过程,献给那些想自己动手搭建环境的朋友.(虽然已过多时) 快捷通道:Docker ~ Samba远程代码执行漏洞(C ...

  8. 2017 ACM暑期多校联合训练 - Team 9 1008 HDU 6168 Numbers (模拟)

    题目链接 Problem Description zk has n numbers a1,a2,...,an. For each (i,j) satisfying 1≤i<j≤n, zk gen ...

  9. Python概念-Attr系列(林海峰教的)

    这个Attr系列是egon老师自创的,个人还是可以接受这种文化底蕴的,所以直接拿来用,也是毫无违和感的 所谓Attr系列,其实是__setattr__,__delattr__,__getattr__ ...

  10. Linux基础之权限-你弄得明白吗?

    使用编辑文件passwd的方式添加用户natasha用户ID为1000,组ID为555 在shadow文件中添加natasha用户的信息 在group文件中添加natasha的属组ID为555 为na ...