在Windows上像Unix一样开发

简介:

在这篇文章里,我将向大家分享一些软件安装和环境设置方法,这是我最近的实践收获,并对使用效果非常满意。我不能永远待在Linux上开发,但我非常喜欢Linux终端和Linux环境,在开发一些开源软件时,Linux会让我感觉所有的事情变得更容易,所有工具都很好的相互配合,不需要你手工的用绷带把它们绑在一起。

下面这种Windows环境配置能让你轻松的完成日常工作中的大部分Linux简单任务。

我假定你的机器上什么都没安装,现在从头开始…

linux vs windows

linux vs windows

Linux终端

Windows的cmd基本就是废物…但如果你愿意花时间去找,你能找到很多的可以替代它的软件,最近我就发现了cmder这个东西,它把conemu,msysgit 和 clink 打包在一起,让你无需配置就能使用一个真正干净的Linux终端!它甚至还附带了漂亮的ol’ monokai配色主题。

这是一个款可移植的软件,你可以把它放在系统的任何一个目录里。它里面有一个bin/目录,你可以把想要的任何执行命令、文件都放在这里目录里,从终端里可以执行它们。

有了cmder,你就有了git,有了一个不错的终端和大多数的linux命令((ls, mv, cp, grep, cat等等。)

Git

cmder里已经有它了!省了很多事,不是吗?

Chocolatey软件包管理系统

因为我会大量的使用执行各种命令程序,我就发现Chocolatey真是很好用。

要安装它,你只需要执行

@powershell -NoProfile -ExecutionPolicy unrestricted -Command "iex ((new-object net.webclient).DownloadString('https://chocolatey.org/install.ps1'))" && SET PATH=%PATH%;%systemdrive%\chocolatey\bin

你需要安装xampp吗? cinst xampp.app 就行了!你还可以选择把它安装到哪里,通常,它会被安装到D:\xampp目录下。

你需要ruby吗?cinst ruby

Wget

这是一个必不能少的好东西,有很多常用的工具(例如composer)需要用它来进行快速的、简易的安装。

安装它,你只需要执行cinst Wget。

Nano文本编辑器

我真的很喜欢这个能执行快速便捷文本的工具。执行cinst nano,就是你安装它需要所的所有操作!

你需要注意的重要一点是,^W键是关闭tab页,所以,你需要在cmder设置里取消这种快捷键关联。

Vim

你使用Vim?执行cinst vim就行了,当然,所有vim使用者都知道如何安装和配置它…

集成XAMPP(Apache+PHP+MySQL+Perl)

毕竟是在Windows平台上,安装这个集成包要比单独安装apache + mysql简单。

XAMPP安装并不往Windows PATH里添加任何路径信息,所以,如果你想在命令行里运行PHP命令,你需要执行set PATH=%PATH%;D:\xampp\php,这是假设你把XAMPP安装到了D:\xampp目录里!

这样之后,如果执行php --version你就不会看到错误信息,如果有错误,请检查你的 XAMPP 目录。

另外,如果你打算执行PHP里的pear命令,你会遇到像下面这样的错误:

ERROR: failed to mkdir C:\php\pear\data\Auth\Auth\Frontend
  ERROR: failed to mkdir C:\php\pear\docs\Benchmark\doc
  ERROR: failed to mkdir C:\php\pear\data\Cache\Container
  ERROR: failed to mkdir C:\php\pear\docs\Cache_Lite\docs
  ERROR: failed to mkdir C:\php\pear\docs\Calendar\docs\examples
  ERROR: failed to mkdir C:\php\pear\docs\Config\docs

这是因为XAMPP并没有去主动配置perl,所以,如果你是把XAMPP安装在D:\xampp目录下,你需要做这样:

D:,转到这个分区,然后

cd D:\xampp\php
pear config-set doc_dir d:\xampp\php\pear\docs 
pear config-set cfg_dir d:\xampp\php\pear\cfg 
pear config-set data_dir d:\xampp\php\pear\data 
pear config-set cache_dir d:\xampp\php\pear\cache 
pear config-set download_dir d:\xampp\php\pear\download 
pear config-set temp_dir d:\xampp\php\pear\temp 
pear config-set test_dir d:\xampp\php\pear\tests 
pear config-set www_dir d:\xampp\php\pear\www

这就行了。

结论

总的来说,我非常喜欢这样改造后的环境,我们会继续的改进它,当然,欢迎提出你的建议 ;) 

;)

原文发布时间为:2014-01-03

本文来自云栖社区合作伙伴“Linux中国”

相关文章
|
1月前
|
数据可视化 数据库 C++
Qt 5.14.2揭秘高效开发:如何用VS2022快速部署Qt 5.14.2,打造无与伦比的Windows应用
Qt 5.14.2揭秘高效开发:如何用VS2022快速部署Qt 5.14.2,打造无与伦比的Windows应用
|
4月前
|
Unix Linux Shell
【文件格式问题】文件格式 Windows、Unix/Linux、Mac 导致的问题及处理(idea 或 notepad++ 档案格式转换方法)
【文件格式问题】文件格式 Windows、Unix/Linux、Mac 导致的问题及处理(idea 或 notepad++ 档案格式转换方法)
56 0
|
19天前
|
监控 安全 API
7.3 Windows驱动开发:内核监视LoadImage映像回调
在笔者上一篇文章`《内核注册并监控对象回调》`介绍了如何运用`ObRegisterCallbacks`注册`进程与线程`回调,并通过该回调实现了`拦截`指定进行运行的效果,本章`LyShark`将带大家继续探索一个新的回调注册函数,`PsSetLoadImageNotifyRoutine`常用于注册`LoadImage`映像监视,当有模块被系统加载时则可以第一时间获取到加载模块信息,需要注意的是该回调函数内无法进行拦截,如需要拦截则需写入返回指令这部分内容将在下一章进行讲解,本章将主要实现对模块的监视功能。
36 0
7.3 Windows驱动开发:内核监视LoadImage映像回调
|
4月前
|
监控 安全 API
7.2 Windows驱动开发:内核注册并监控对象回调
在笔者上一篇文章`《内核枚举进程与线程ObCall回调》`简单介绍了如何枚举系统中已经存在的`进程与线程`回调,本章`LyShark`将通过对象回调实现对进程线程的`句柄`监控,在内核中提供了`ObRegisterCallbacks`回调,使用这个内核`回调`函数,可注册一个`对象`回调,不过目前该函数`只能`监控进程与线程句柄操作,通过监控进程或线程句柄,可实现保护指定进程线程不被终止的目的。
30 0
7.2 Windows驱动开发:内核注册并监控对象回调
|
4月前
|
监控 安全 API
7.6 Windows驱动开发:内核监控FileObject文件回调
本篇文章与上一篇文章`《内核注册并监控对象回调》`所使用的方式是一样的都是使用`ObRegisterCallbacks`注册回调事件,只不过上一篇博文中`LyShark`将回调结构体`OB_OPERATION_REGISTRATION`中的`ObjectType`填充为了`PsProcessType`和`PsThreadType`格式从而实现监控进程与线程,本章我们需要将该结构填充为`IoFileObjectType`以此来实现对文件的监控,文件过滤驱动不仅仅可以用来监控文件的打开,还可以用它实现对文件的保护,一旦驱动加载则文件是不可被删除和改动的。
29 1
7.6 Windows驱动开发:内核监控FileObject文件回调
|
4月前
|
监控 安全 API
6.9 Windows驱动开发:内核枚举进线程ObCall回调
在笔者上一篇文章`《内核枚举Registry注册表回调》`中我们通过特征码定位实现了对注册表回调的枚举,本篇文章`LyShark`将教大家如何枚举系统中的`ProcessObCall`进程回调以及`ThreadObCall`线程回调,之所以放在一起来讲解是因为这两中回调在枚举是都需要使用通用结构体`_OB_CALLBACK`以及`_OBJECT_TYPE`所以放在一起来讲解最好不过。
44 1
6.9 Windows驱动开发:内核枚举进线程ObCall回调
|
4月前
|
监控 安全 API
6.8 Windows驱动开发:内核枚举Registry注册表回调
在笔者上一篇文章`《内核枚举LoadImage映像回调》`中`LyShark`教大家实现了枚举系统回调中的`LoadImage`通知消息,本章将实现对`Registry`注册表通知消息的枚举,与`LoadImage`消息不同`Registry`消息不需要解密只要找到`CallbackListHead`消息回调链表头并解析为`_CM_NOTIFY_ENTRY`结构即可实现枚举。
50 1
6.8 Windows驱动开发:内核枚举Registry注册表回调
|
4月前
|
存储 API 开发者
6.7 Windows驱动开发:内核枚举LoadImage映像回调
在笔者之前的文章`《内核特征码搜索函数封装》`中我们封装实现了特征码定位功能,本章将继续使用该功能,本次我们需要枚举内核`LoadImage`映像回调,在Win64环境下我们可以设置一个`LoadImage`映像加载通告回调,当有新驱动或者DLL被加载时,回调函数就会被调用从而执行我们自己的回调例程,映像回调也存储在数组里,枚举时从数组中读取值之后,需要进行位运算解密得到地址。
32 1
6.7 Windows驱动开发:内核枚举LoadImage映像回调
|
4月前
|
监控 安全 API
7.5 Windows驱动开发:监控Register注册表回调
在笔者前一篇文章`《内核枚举Registry注册表回调》`中实现了对注册表的枚举,本章将实现对注册表的监控,不同于32位系统在64位系统中,微软为我们提供了两个针对注册表的专用内核监控函数,通过这两个函数可以在不劫持内核API的前提下实现对注册表增加,删除,创建等事件的有效监控,注册表监视通常会通过`CmRegisterCallback`创建监控事件并传入自己的回调函数,与该创建对应的是`CmUnRegisterCallback`当注册表监控结束后可用于注销回调。
45 0
7.5 Windows驱动开发:监控Register注册表回调
|
4月前
|
存储 安全 数据安全/隐私保护
3.2 Windows驱动开发:内核CR3切换读写内存
CR3是一种控制寄存器,它是CPU中的一个专用寄存器,用于存储当前进程的页目录表的物理地址。在x86体系结构中,虚拟地址的翻译过程需要借助页表来完成。页表是由页目录表和页表组成的,页目录表存储了页表的物理地址,而页表存储了实际的物理页框地址。因此,页目录表的物理地址是虚拟地址翻译的关键之一。在操作系统中,每个进程都有自己的地址空间,地址空间中包含了进程的代码、数据和堆栈等信息。为了实现进程间的隔离和保护,操作系统会为每个进程分配独立的地址空间。在这个过程中,操作系统会将每个进程的页目录表的物理地址存储在它自己的CR3寄存器中。当进程切换时,操作系统会修改CR3寄存器的值,从而让CPU使用新的页
54 0
3.2 Windows驱动开发:内核CR3切换读写内存