今天有同学问如何用 grep 匹配 tab,想到这么几个方法:
- 在匹配模式里写上一个真正的 tab (bash下):
-
grep foo$'\t'bar … -
[ESC] tabORC-v tab
-
- 用 awk:
awk '/\t/' … - 有支持 PCRE 的 grep (编译时没有打开
--disable-perl-regexp),加上开关-P:grep –P '\t' … - 换个真正的工具:
perl
今天有同学问如何用 grep 匹配 tab,想到这么几个方法:
grep foo$'\t'bar … [ESC] tab OR C-v tab awk '/\t/' … --disable-perl-regexp),加上开关 -P : grep –P '\t' … perl
Tags: grep, shell, tab, tips
Posted in tech | 1 Comment »
Windows 下面有最小化所有窗口的快捷键, 但默认没有最小化当前窗口的快捷键. 解决方法(之一)是使用仅16.5k的神器 HoeKey.
安装运行 HoeKey 后, 按Win+Q呼出配置界面, 选择编辑配置文件, 加入一条:
~0=Msg||274|61472
这样就可以用快捷键 Win+0 来最小化当前窗口了.
同理可以写 ~9=Msg||274|61488 来用 Win+9 最大化当前窗口.
Tags: hoekey, hotkey, minimize, shortcut, tips, window
Posted in tech | 4 Comments »
通过ssh来存取svn仓库自然是很方便的,不用架设webdav服务器,不用多侦听一个端口等等,一般的可以这样:
svn co svn+ssh://host/path/to/svn/repos
如果ssh不工作在默认的22端口上,如2222,有两个办法解决。
设置SVN_SSH变量:
export SVN_SSH="ssh -p 2222"
编辑~/.subversion/config,其中有tunnel一节,加入:
proa = ssh -p 2222
然后就可以这样用了:
svn svn+proa://host/path/to/svn/repos
如果遇到错误"bash: svnserve: command not found",是因为svn调用ssh后得到是非登陆shell。可以试着在放置svn仓库的服务器上加入相关路径到.bashrc,或者给svnserve在/usr/bin下面加个符号链接,确保非登陆shell可以找到svnserve。也可以搞的很复杂:
生成一个新的ssh密钥对,用下面的格式把公钥放到svn服务器上
command="/full/path/to/svnserve -t" TYPE KEY COMMENT
客户机上安上面指定端口的方法指定svn用特定的私钥
export SVN_SSH="ssh -p 2222 -i /home/dude/.ssh/id_svn_only"
这样svn在通过ssh隧道连接时就可以启动svnserve了。
大约需要的人早找到了英文的资料,不过我想用中文写出还是有人会看的。为什么还要用svn这么土的东西?当然是历史原因了。
Tags: dev, ssh, svn, tips
Posted in tech | 3 Comments »
我觉得XShell是Windows上目前最好的终端模拟器,但似乎大家只看到SecureCRT,很少人提XShell。
XShell vs. SecureCRT
XShell vs. Putty & Pietty
当然putty是自由软件,和商用的XShell比较不是很合适。putty也有很多插件可以实现部分有缺憾的功能,用起来会麻烦一些就是了。我个人平常还是以putty为主,功能够用,速度飞快。大量机器的管理还是XShell合适。
注意,XShell在商业环境使用下是需要买许可的。
update:
SecureCRT 使用screen时屏幕闪烁,关闭 visual bell 就好了,putty 也是如此:
$ cat >> ~/.screenrc
# turn visual bell off
vbell off
Tags: ssh, tips
Posted in tech | 6 Comments »
看开幕式,入场式时段很无聊,决定冒充一下程序员,给 Launchy 写个小插件,让它能转换时间戳。
搞阿搞,终于搞出来鸟,个中艰险,按下不表。
Launchy是我必用的工具,转换时间戳也老要干,呃,还是很有用的。如图:
我用的是比较老的Launchy 1.25,我也推荐用这个版本的,2.0为移植用了QT,大了不少。
Tags: dev, launchy, tips
Posted in tech | 1 Comment »
这是个无聊时练习C#的小东西,可以在内文中插入一个水平线,其实就是加了个<hr />。还是有点小用的说,至少我用~
小小<hr />的左对齐也有麻烦的浏览器兼容问题:align="left"只在ie和ff下有用,Live Write自动会放到div中,而opera需要加上test-align="left"。
下载位置(附源码):
纳米盘:InsertHr.zip
我的blog:InsertHr.zip
Tags: dev, livewriter, tips
Posted in tech | No Comments »
Gmail Mobile App是我在手机上必装的程序,WM6自带的邮件客户端在当下的无线网络中还是不如它爽利。
换了多普达C730w之后,发现内置的Java虚拟机JMM无法全屏,遂换了修改版JMM,又发现会把屏幕最下方吃掉一坨。现在使用JBed,对OperaMini、Talkonaut(一个多协议IM工具)的支持都很好,可以全屏,速度不错。缺憾就是在Gmail中会出来虚拟机自己的菜单栏,挡掉Gmail自己的。图片可以参见这个帖子。网上有人针对竖屏的机器进行了修改,解决了竖屏QVGA下面JBed的问题,看来这个问题是可以解决的。
首先使用JavaMagic这个修改程序,设置分辨率为横屏QVGA的320*240,强制全屏,不启用字体替换、键码转换。处理jar文件后,安装测试,还算不错,可以全屏了,菜单也可以正确弹出,但是虚拟机的菜单有时仍然会挡出一部分内容。
继续努力,在网上苦苦搜索小时有余,终于得到一法。对所谓的第二jad文件进行编辑,此文件的文件名中存在"[Ar]"字样,使用文本编辑器在jad文件最后加上:
UseNativeCommands: false
ReverseSoftkeys: true
UseNativeMenus: false
基本上意思是不使用系统原生菜单、命令,翻转两个软键(很有用)。安装测试,成功!截图如下:
这个修改方法应该也可以解决其他手机Java程序全屏的问题。
ps:这个blog终于有pr了: pr=0 :)
Tags: gmail, java, tips, windows mobile, wm
Posted in tech | 2 Comments »
自打购入了移动硬盘,就一直打着里面三星160G的主意:和笔记本上的80G交换一下。想来这不是很复杂的工作,以前从40g换到80g就挺容易。高高兴兴地用DiskGenius将各个分区复制到移动硬盘上,换了硬盘到机器上,却无法引导系统。现象是开机出现thinkpad logo的post画面之后,就黑屏只有光标在左上角闪动。
按说机器对大硬盘支持没有问题。怀疑C区没有设为活动或者引导区没有复制过去,试着通过故障恢复台进行fixboot/fixmbr,没戏。想覆盖安装一遍Windows,发现带NTFS DOS支持的DOS7.1认为硬盘空间不足。
幸好专门网的网友给出了解决方案:必须在PE环境下克隆引导分区,硬盘必须接主机IDE口,放在硬盘盒是不行的。
刻了张PE盘,重新恢复了一遍C区,重启,成功!三星的这块HM160JC,性能虽然一般,却是相当的安静,和之前那块TOSHIBA比,简直可以说是没有声音。
问题的原因我还是不清楚。另外还有一个诡异的问题,联想的一块装SATA盘的可引导移动硬盘,如果直接插在机器上,按F12,死活不能出现在设备选单里,必须很暴力地热插拔一次才能被认出来。难道这块硬盘有自虐倾向?另外,如果新硬盘的分区情况和原硬盘不同,Windows很有可能不能正确挂载分区,进安全模式到磁盘管理里面手工指派一下盘符就好了。
另外,这块HM160JC居然在Thinkpad的APS支持范围内,省却了满世界找微码的麻烦。
Tags: boot, ghost, migrate, tips
Posted in tech | No Comments »