打磨程序员的专属利器——命令行&界面
工欲善其事,必先利其器,程序员更是如此,如果没有一套与自己思维同步的工具,将非常难受并且编码效率会非常低。
但十个程序员就有对工具的十种不同理解,本人现在冒然将自己的“工具箱”拿出来晒晒。若对大家没帮助,轻轻飘过即可,若能引起一丝共鸣,便有了价值。
分三个专题来进行展示--
1. 命令行&界面(本文)
2. 快捷键
3. 文本
本人95%的时间都在windows上学习、工作,所以绝大部分内部都是和windows相关。
1.explorer和命令行窗口相互打开
在explorer中浏览到某路径时,想要打开命令行窗口执行相关命令,这个场景经常会遇到,而一般的做法就是win+R,输入cmd,然后D:,再cd ...。
在win7下可以shift+右键文件夹空白处,这样快捷菜单就多了一个"在此处打开命令窗口"项,如图
下面本人将介绍一种DIY方法
在注册表HKEY_CLASSES_ROOT\Directory\Background\shell 下建立一个子项,命令为"Q在这里打开cmd",(开头的Q可以用做快捷键),再在这个新子项建立一个command子项,然后将其数据设置为 cmd.exe /s /k pushd "%V",如图
这样在空白处右键后,就会有一个"Q在这里打开cmd"的菜单项。这里点击,或者按Q都可以打开命令行窗口了,而当熟练后,可以右键后立刻按Q,根本不需要去看出现的菜单,如图
或者将下面的代码复制到一个reg文件中,然后双击执行reg文件即可。
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\Directory\Background\shell\QOpencmd\command]
""="cmd.exe /s /k pushd \"%V\""
这里只所以选Q,是因为不会和其它的冲突。win7 shift+右键出来的"在此处打开命令窗口"项快捷键是W,和"新建"的快捷键冲突了,当按W后光标会在这两项之间跳动,还需要第三次操作--左键或者回车。不比DIY方法中的直接右键,然后立刻Q,来得快。(关于快捷键的精髓操作在后面的章节中再阐述)
在命令行中打开explorer窗口,可以用explorer+路径,在win shell中是用%cd%来表示当前路径,所以 explorer %cd% 就可以在explorer中打开命令行的当前窗口
如果嫌这个命令太长了,可以建立一个e.bat文件,其内容为
::在命令行中打开资源浏览器窗口
@echo off
explorer %cd%
将e.bat文件放在系统路径,或者专门建立一个文件夹来自己的工具,然后将其添加到系统路径。
这样在命令行中仅仅输入e,然后回车,就可以打开explorer了!! 32个赞!!
受到e.bat的启发,于是又写了一个x.bat,其内容为
::直接用x命令来退出控制台窗口
@echo off
exit
这样可以在命令行中直接用x,就可以退出命令行了。
ubuntu中是用插件来实现资源管理器到命令行窗口的打开,而命令行到资源管理器是在.bashrc中建立一个别名 alias e="nautilus $PWD" (ubuntu下的资源管理器叫nautilus)
osX中也是用插件go2shell来实现Finder到终端,而终端到Finder是用open . (. 表示当前路径)
2.与explorer的左侧树控件的恩怨
本人非常喜欢使用explorer左侧的树控件。可慢慢发现有一个问题,就是这个树控件中的节点太容易被拖动了,有时浏览文件时,不小心拖动了文件夹,文件夹移动了位置,而自己还完全不知。当N天后发现问题时,想要找回文件夹可比登天了。
于是本人就写了个钩子程序,可以禁用掉explorer树控件的拖放功能。这里是下载地址,在win7下测试通过 BanExplorerTreeDrag
而在win7树节点的展开或者收起,都得双击,或者点击左边那一个小小小的箭头,非常的不爽。想要一个只要单击树节点,节点就会展开或者收起的树控件。找了各种设置后,发现无法实现。曾经都有想过自己写一个类似的Explorer程序的打算,可因为种种原因一直没有实现,现在也只能忍受这个树控件了。
3.subst创建一个虚拟盘
subst可以用一个文件夹路径建立一个虚拟的磁盘。
比如 subst G: d:\notedata2 就可以新建一个G:磁盘,并且其内容就是 d:\notedata2 文件夹的内容。(当然G:这个名称不能先被占用)
如果有哪个文件夹需要经常访问,可以用这种方式将其映射成磁盘,然后不管是在Explorer中还是在命令行中都可以比较方便地访问。命令行中可以直接用G:\来定位,而不需要用原来比较长的路径了。(win7的"库功能"也可以将特定的文件夹放在好找到的位置,不过在命令行中还是不方便)
有一个问题是windows重启后这个映射就需要重新建立,不过可以写一个批处理文件开机执行即可。
4.svn,git的自动提交
svn要update/Commit时都得在Explorer中找到文件夹路径,然后右键,再找到Update或者Commit菜单项,如果有多个路径要操作,简直是太繁琐了,并且还容易漏掉。这里介绍和批处理文件来简化操作。
**svn**
将TortoiseSVN安装目录中的bin文件夹添加到系统路径,这样就可以用svn.exe命令,输入svn help,可以发现用svn update path, svn commit path来代替菜单点击(path是项目路径)。然后可以在桌面建立两个bat文件,内容分别是
svn update path
svn commit path
这样直接点击这个两个文件就可以实现svn的update/commit操作了。
如果有多个路径都需要update/commit操作,可以在批处理文件同目录下建立file.txt文件,将要提交的文件或文件夹路径都列在file.txt文件中,如图
然后在批处理文件中用下面的代码可以循环访问到文件中的每一列
@echo off
for /f %%i in (file.txt) do (
echo %%i
)
pause
如果是svn的update/commit操作,只要将echo %%i, 换成 svn commit %%i 或者 svn update %%i 即可。file.txt中的文件名得使用短路径,也就是不包括空格的路径,如果有空格就得在%%i加上引号。用win32api的 GetShortPathName() 可以获取短路径,本人用.Net实现了一个非常简陋的程序shortName,可以将长路径转化为短路径。
**git**
同时将git安装目录中的bin文件夹添加到系统路径,添加建立pull.bat文件,内容为
git pull
pause
push.bat文件,内容为
git add .
git commit -a
git push
pause
然后直接点击文件就可以实现git的pull/push操作了。当然pull.bat, push.bat都得放在项目路径下,如果是要操作其它的路径就先得cd 到其路径下。
小结: 尽量用命令来替代界面操作,上面也写了一小段windows的批处理代码,这里不建议深入学习windows shell,也不建议深入学习linux shell,而应该学跨平台的脚本,比如python, ruby,或者perl。这部分在后面的“文本”一节中再详细说明。
5.Beep, Sleep, OpenInExplorer.exe, FileSize.exe
本人用c++还实现了一些小小的命令行工具。比如
Beep.exe 在命令行中发出Beep声音,实现就是调用win32API的::MessageBeep()函数
Sleep.exe 让命令行进程睡眠指定的时间,就是调用::Sleep()函数
OpenInExplorer.exe 打开explorer,并且定位到指定的文件或文件夹,其实用的ShlObj中的SHOpenFolderAndSelectItems()函数
FileSize.exe 输出指定文件的大小,单位是字节。
下载链接:simple_tools
上面这些功能或许windows自身已有提供,不过本人懒得去找,就顺手自己实现了,反正也不复杂。 实现这些工具也是受了Unix哲学的影响。
还有一些乱七八糟的批处理,请参见 http://www.cnblogs.com/xiangism/archive/2012/11/26/2789606.html
再写一个心得--只所以说程序员是懒惰的,是因为把工具实现好之后的程序员是懒惰的,而在实现、打磨工具的过程中应该持勤奋态度~~
未完,待续...
打磨程序员的专属利器——命令行&界面的更多相关文章
- 程序员必须知道FTP命令
程序员必须知道FTP命令 文件传输软件的使用格式为:FTP<FTP地址>,若连 接成功,系统将提示用户输入 ...
- 【原创精品】程序员最强大的利器——电子笔记本的思考(1)(ver0.3)
[原创精品]程序员最强大的利器,本文以下内容全都是作者EverStenis(胡佳吉)的原创,未经授权不得转载,抄袭必究. 我想问大家一个问题,对于我们程序员来说,在我们的武器工具库中,最强大的一件利器 ...
- java程序员常用的linux命令
作为一个java后端开发者,在日常工作中肯定会有和linux打交道的时候.下面我整理了一些开发中可能需要用到的一些命令(写这篇随笔前,我也没有什么操作经验,主要防止自己忘记这些操作命令,以后有用到新的 ...
- 程序员的复仇:11行代码如何让Node.js社区鸡飞狗跳
来源自:http://www.techug.com/node-js-community 几天前,一名 NPM(Node.js Package Manager)社区的贡献者 Azer Koçulu 出于 ...
- 程序员的专属微信公众号编辑器:定制 Markdown 转 HTML
效果(Gif) 点击我查看 仓库地址 https://github.com/cdk8s/cdk8s-markdown-to-html https://gitee.com/cdk8s/cdk8s-mar ...
- 程序员的专属浪漫——用3D Engine 5分钟实现烟花绽放效果
谁说程序员不懂浪漫? 作为程序员,用自己的代码本事手搓一个技术感十足的惊喜,我觉得,这是不亚于车马慢时代手写信的古典主义浪漫. 那么,应该怎样创作出具有自我身份属性的浪漫惊喜呢? 玩法很多,今天给大家 ...
- 后端程序员常用的linux命令
1. windows ctrl+ - 终端窗口变小 ctrl + shift + = 终端窗口变大 1. mac command+ - 终端窗口变小 command ...
- Java程序员常用的Linux命令01——linux命令基础
1.显示日期的命令date 显示日期: [root@localhost ~]# date 显示年月日: [root@localhost ~]# date '+%Y%m%d' 2.显示日历指令cal 显 ...
- 程序员不常用Linux命令集
1) 关闭指定网卡,如关闭网卡eth0 ifconfig eth0 down 也可以使用ifdown,通常ifdown是一个指向ifup的软链接,而ifup为一个脚本文件. 2) 命令自启动,如希望机 ...
随机推荐
- SQL Server 2012实施与管理实战指南(笔记)——Ch4数据库连接组件
4.数据库连接组件 访问数据库有多种不同的技术,包括ADO,ODBC,OLEDB,ADO.NET等这些都有一些共性.首先要建立连接(Connection),然后通过命令(Command)对数据库进行访 ...
- Access 2003 中自定义菜单栏
在Access中如何用自定义的菜单代替Access自带的菜单,现在做一个简单的介绍: 1.打开您做的Access数据库: 2.单击工具栏,选择“自定义…”: 3.在“自定义”窗口,单击“工具栏”选项卡 ...
- .NET领域驱动设计—实践(穿过迷雾走向光明)
阅读目录 开篇介绍 1.1示例介绍 (OnlineExamination在线考试系统介绍) 1.2分析.建模 (对真实业务进行分析.模型化) 1.2.1 用例分析 (提取系统的所有功能需求) 1.3系 ...
- Linux服务器文件删除空间未释放的问题
一.问题起源 在Linux系统中,通过rm删除文件将会从文件系统的目录结构上解除链接(unlink),如果文件是被打开的(有一个进程正在使用),那么进程将仍然可以读取该文件磁盘空间也一直被占用 这样就 ...
- 网页实时聊天之js和jQuery实现ajax长轮询
众所周知,HTTP协议是无状态的,所以一次的请求都是一个单独的事件,和前后都没有联系.所以我们在解决网页实时聊天时就遇到一个问题,如何保证与服务器的长时间联系,从而源源不段地获取信息. 一直以来的方式 ...
- 烂泥:学习Nagios(三): NRPE安装及配置
本文由秀依林枫提供友情赞助,首发于烂泥行天下 在前两篇文章中,我们介绍了有关nagios的安装与配置,文章为<烂泥:学习Nagios(一):Nagios安装>.<烂泥:学习Nagio ...
- unordered容器
1.散列容器(hash container) 散列容器通常比二叉树的存储方式可以提供更高的访问效率. #include <boost/unordered_set.hpp> #includ ...
- windows下 MySQL手动安装与卸载
下载文件以后进行解压 ,指定文件的具体位置 1.安装 选择路径下的mysqld --intall 指定服务名称 --设置配置文件 例子: C:\Users\Administrator\Desktop ...
- system generator 卷积编码器快速设计
卷积码 卷积码是一种特殊的编码方式,不仅与当前的输入有关,还与之前的输入有关.可以用一个多项式来表示一个卷积编码,多项式表示有多少个移位寄存器以及他们怎么与模2加法器相连.比如,下图中的无反馈的卷积编 ...
- VIJOS1240 朴素的网络游戏[DP]
描述 佳佳最近又迷上了某款类似于虚拟人生的网络游戏.在游戏中,佳佳是某旅行团的团长,他需要安排客户住进旅馆.旅馆给了佳佳的旅行团一个房间数的限制.每一个房间有不同的容纳人数和价钱(这个价格是房间的总价 ...