I am LAZY bones ? all linux

分类: 'CLI软件' 的归档

bash下esc键的妙用

看到ee在他blog里说按两下 esc键,可以和tab一样补全.于是想到了还有写 esc 的小技巧,可以大家分享一下:
1.
最有用的用过是这个:你要建立一个文件夹,然后cd到里面去,而这个文件夹名字很长的时候,你只需要这样:
mkdir ThisIsAVeryLongDirectoryName 回车 cd {esc}{点号} 就会补全那一串 ThisIsAVeryLongDirectoryName 了.
其实这个是这样的,esc以后按个点点,意思是在当前光标所在位置,补上上一个命令的最后一个参数,也就是那个目录名了,这样是不是方便多了?当然这招也可以用在其他地方,另一个例子是: 可能上一个命令执行了 apt-cache show XXX软件包,了解了他的信息之后,下一步要安装/卸载了,就可以执行 apt-get install/remove {esc}{点号} 了.
2.
{esc}{<} 可以移到历史命令的第一个
{esc}{>} 可以到最后一个历史命令.这个可以用在,你想在历史里面找某个命令,结果按了若干下向上箭头后,没找到,快速回去的话,就不用一直按向下箭头了.
{esc}{backspace} 快速清除当前行输入,上面这种情况也可以用这招.或者用于命令输到一半的时候,却不想执行该命令了,就不用一个个字符删了.
3.
输入重复字母:如果要输入 ee ,可以这么按:{esc}{2}{e},如果要输入100个e,就可以这样: {esc}{1}{0}{0}{e},哈哈.
4.
{esc}{t} 可以瞬间大挪移,比如现在已经输入了 ab cd efg 然后光标停留在最后面,按下{esc}{t}之后,得到的是 ac efg cd,光标所在处的单词,会往前一个,哈哈,好玩吧.
5.
补全类:
除了按多次{esc}可以补全以外,还有更好玩的:
{esc}{~}可以补全本机上的用户名
{esc}{/}可以补全文件名
{esc}{@}可以补全主机名,localhost可以方便地用 lo补全.
还有很多,可以参考man bash 的readline一节.

调整了下PS1变量

.bashrc里面是这么写的:

  1. PS1='{$?}\[\e[01;31;44m\]\u\[\e[00;33;44m\]@\[\e[01;31;44m\]\h\[\e[00m\]:\[\e[04;34;47m\]\w\[\e[00m\]$ '

在原来的基础上,前面加了个上条命令的返回值,而且放在一行里面,反正不会很占地方,嘿嘿.
效果预览:
bash

========20090723 update========
现在的PS1已经更新为:

  1. PS1='`a=$?;if [ $a -ne 0 ]; then echo -n -e "\[\e[01;32;41m\]{$a}"; fi`\[\e[01;31;44m\]\u\[\e[00;33;44m\]@\[\e[01;31;44m\]\h\[\e[00m\]:\[\e[04;34;47m\]\w\[\e[00m\]$ '

HOWTO:ubuntu下刻录VCD

下载的动画片,想给邻居的小孩子刻录成VCD,好在他家的VCD机上播放,倒还真费了我不少功夫.为了避免后人走弯路,写点经验出来给大家分享.
其实最繁的倒不是刻录本身,而是视频格式的转换上.
刻录工具,搜索一下源,基本定位在 mkvcdfs(包含在vcdtools这个包里)和 cdrdao(包含在cdrdao包里).但是mkvcdfs命令需要的mpg格式,我下载的视频是avi格式的,于是一开始用 mencoder 转了N次,不管怎么转,mkvcdfs都不认,呵呵,就在我觉得没希望的时候,突然想到了ffmepg,man了一下,居然有 -target vcd 这样的参数,哈哈,真是 踏破铁鞋无觅处,得来全不费功夫啊.
现在知道mencoder转应该也是可以的,但是VCD对视频/音频编码方式,帧率,分辨率等都有非常严格的要求,所以mencoder的参数很难配.而ffmpeg的 -target vcd 参数,则可以一次性设置这所有的参数,很是方便.
现在贴上步骤:

工具安装:都是apt搞到: sudo apt-get install ffmepg vcdtools cdrdao

ffmpeg -i 1.avi -target vcd 1.mpg #转换第一个视频
ffmpeg -i 2.avi -target vcd 2.mpg #转换第二个视频
mkvcdfs 1.mpg 2.mpg #将视频合成,生成镜像文件,此命令会在当前目录生成一个 vcd_image.bin 文件(二进制镜像),和一个 vcd.toc 文件.后面的命令要用到后者.
sudo cdrdao scanbus #扫描刻录机在哪个接口上,这里输出:

  1. $ sudo cdrdao scanbus
  2. [sudo] password for lily:
  3. Cdrdao version 1.2.2 - (C) Andreas Mueller
  4.   SCSI interface library - (C) Joerg Schilling
  5.   Paranoia DAE library - (C) Monty
  6.  
  7. Check http://cdrdao.sourceforge.net/drives.html#dt for current driver tables.
  8.  
  9. Using libscg version 'ubuntu-0.8ubuntu1'
  10.  
  11. 1,0,0 : MATSHITA, DVD-RAM UJ-850S , 1.20

注意最后面一行的 1,0,0 的字样,最后一步就用这个命令刻录:
sudo cdrdao write –device 1,0,0 vcd.toc
这里的 –device 后面要用上面的输出代替.执行完了,就OK了,拿到VCD机上试试看吧!

遗留问题:
1.刻出来的盘到VCD机上播放,画面的最上方和最下方会有一块区域丢失,比如原本正常的字幕,只看到半行字了,而且画面有点轻微的倾斜.不知道是不是那VCD机的问题.
2.刻录出来的视频码率太高了,比我avi的源还高,导致一张VCD只能放两集,能不能降低码率,多放几集?
3.谁知道怎么刻录DVD?
有谁知道遗留问题的答案的话,千万不吝赐教哦~谢谢…

powertop

PowerTop是一个用来找出哪个程序频繁地使CPU脱离空闲(省电)状态的linux小程序,会根据结果实时给出合理建议,以使你的电池发挥最大的效能.intel开发的,不知道是否对AMD的CPU有效.
主页: http://www.linuxpowertop.org/
截图:
powertop

iptraf 命令行的网络监视软件

今天在找一个命令行下的网络监视软件,发现有个叫 iptraf 的,很不错,功能也很全面.
ubuntu下安装可以直接 apt-get install iptraf
截两个图:
screenshot-iptraf2.png
screenshot-iptraf4.png

[转]用gettext实现shell脚本国际化.

$ cat test.sh
#!/bin/bash
export TEXTDOMAINDIR=/usr/share/locale
export TEXTDOMAIN=test.sh
echo “$(gettext -s hello)”

编辑一个po文件:
$ cat test.sh.po
msgid “hello”
msgstr “你好!”

编译成mo文件:
$msgfmt -o test.sh.mo test.sh.po

复制到/usr/share/locale/zh_CN/LC_MESSAGES/
$sudo cp test.sh.mo /usr/share/locale/zh_CN/LC_MESSAGES/

中文:
$ export LANG=zh_CN.UTF-8
$ ./test.sh
你好!

英文:
$ export LANG=en_US.UTF-8
$ ./test.sh
hello

这里可以看到,gettext在locale是 zh_CN的时候,会去 TEXTDOMAINDIR 下面的 zh_CN/LC_MESSAGES 里面找mo文件,所以,TEXTDOMAINDIR也可以放在当前目录,只要里面有zh_CN这目录,并且里面的内容是正确的,这样就可以避免放文件到 /usr/share/local 时候所需的root权限.
参考: http://forum.ubuntu.org.cn/viewtopic.php?t=105507

[转]手把手教你把Vim改装成一个IDE编程环境(图文)

自己的vim一直是”丑陋”地在用着,很羡慕人家漂亮的VIM,今天看到一篇比较不错的文章.还来不及看完,记一下,以后再看:

http://blog.csdn.net/wooin/archive/2007/10/31/1858917.aspx

By: 吴垠

ssh反向连接

先介绍一下我这里的情况: 公司的电脑是在内部网里面,不可能有公网地址;家里的电脑是adsl拨号,有动态的公网IP,动态绑定到域名 xxx.xxx.org
如果现在想从家里ssh到公司的电脑,直接连接肯定是不行的,不过可以用以下方法:
1. 在公司电脑上执行: ssh -f -N -R 12121:localhost:22 xxx@xxx.xxx.org
2. 然后在家里的电脑上执行: ssh xxxx@localhost -p 12121 就可以成功连上公司的电脑了.

上面命令里面的 12121 是任一个本地端口(上面例子里面是家里电脑的端口),可以在合理的范围内任意指定.我的理解是这样的: 前一个命令相当于把公司机器的22端口(localhost:22) 映射到 家里机器的12121端口. 然后在家里电脑上直接ssh 本机的 12121 端口,数据就会被转发到公司机器了.就这么简单.

参考此文和 man ssh

刚又学了一招

以前一直用locate查找文件,也没想过它的工作原理,知道我那恢复过的gentoo系统里面出现了这种状况:
locate xxx
locate: warning: database /var/lib/slocate/slocate.db’ is more than 8 days old
什么都查找不了,google了一下,发现需要updatedb一下,嘿嘿,原来这个也有数据库的啊…以前见过updatedb这个进程,还在纳闷是什么进程呢,呵呵.

cksfv 另一个常用的校验工具

说到校验,很多人都会想起 md5sum ,因为ubuntu各版本的光盘都用这个校验的嘛~而且各个发行版里面也都会预装这个小工具.但是这并不是唯一的(废话),今天介绍另一个: cksfv
发现这个是在从 TLF 下载的电影里面,TLF的电影都是用rar分卷压缩的,除了 xxx.rar,xxx.r00,xxx.r01….之外,通常还有个 xxx.sfv 文件.这就是用于check的.
ubuntu用户使用 cksfv 得先安装: apt-get install cksfv 即可.看看包里面的描述:

描述: sfv checker and generator
SFV, Simple File Verification, uses crc32 checksums to verify that files are intact. cksfv automates the task of generating
and checking .sfv sheets. For integrity, md5 checksums are probably a better alternative, but sfv is a widely used method for
verification on the USENET binary newsgroups and other places.

从中可知sfv用的是 CRC32 算法,这种算法产生的sum是32位的,虽然没有md5那么严谨,但是有个好处,就是计算速度比md5快多了.因此,在数据量很大又不是非常重要的场合,就很适用了,比如电影文件.估计这也是很多电影发布小组才有cksfv校验的原因吧.