读书人

Linux命令行上的一些小脚本和小技巧

发布时间: 2012-12-22 12:05:05 作者: rapoo

Linux命令行下的一些小脚本和小技巧

一、一个用户快速目录切换的脚本:
相信很多人在工作中都需要在多个目录之间做切换,频繁地按cd和tab键在多个目录之间做切换不光很费时间,最伤不起的是我们的手指,按多了那个痛啊,这里就介绍一个可以给目录打上标签,然后快速进行多个目录进行切换的脚本,脚本的安装只需要以下三个步骤:

  1. git clone git://github.com/huyng/bashmarks.git
  2. make install
  3. 最后再在~/.bashrc里面加入~/.local/bin/bashmarks.sh就可以

说下脚本怎么使用吧,比如我现在在/home/khotyn/workspace/exodus2下面,现在我要为这个目录打上名字为"exodus2"的标签,那么只需要用以下命令就可以了"sexodus2",然后,不管在任何一个目录下,你都可以用"g exodus2"回到上面的那个/home/khotyn/workspace/exodus2目录下,怎么样,很方便吧。更多的使用教程可以参考这个项 目的README页面:https://github.com/huyng/bashmarks/blob/master/README.md

二、一个调用默认程序打开命令的文件:
用过Mac OS X的同学可能知道,Mac的终端下有一个强大的命令叫做open,它可以调用文件关联的默认程序来打开文件,比如你想在终端下打开一个pdf,只需要"open xxx.pdf"就可以调用默认的pdf查看器打开pdf,你要在终端下打开当前目录,只需要"open ."就可以用默认的文件浏览器打开当前目录。

那么Linux下有没有这个命令呢,答案是有的,Linux起同样作用的命令的名字叫做xdg-open,对于使用ubuntu的用户来说,应该 已经默认安装好了,如果没有安装好,可以用以下命令来安装"sudo apt-get install xdg-utils",当然,这个命令名字的名字实在太长,打起来太不方便,你可以做一个简单的alias:alias open="xdg-open"

三、一个将管道内容输出到系统剪切版的命令:
好吧,知道这个命令也是因为Mac终端下有一个叫做pbcopy的命令,可以直接将管道的内容输出到系统剪切板。

废话不多说了,Linux下对应的命令是xclip,可以通过“sudo apt-get install xclip”来安装,安装以后试一下效果:‘echo "Hello,world" | xclip’,找一个地方ctrl+v看看?什么?"Hello, world"没有出来?这是因为"Hello,world"就被输出到X的剪切板里了,但是更多时候我们需要将内容输出到系统的剪切板,那么你可以这样做:echo "Hello, world"| xclip -selection clipboard 再去文本编辑器里面看看ctrl+v出来的是不是就是"Hello, world"了?当然,命令太长,同样可以做alias:alias pbcopy="xclip -selectionclipboard"

四、一个用于快速合并分支的脚本
在项目中,我们往往需要频繁地合并分支,每一次都需要选择版本号,并且敲一大堆的命令,的确有点烦,于是我写了一个简单的shell脚本来方 便做分支合并,脚本内容如下:

#!/bin/sh
?
## A simple shell script used to merge braches of Subversion.
versions=`svn log $2 --stop-on-copy | grep '^r[0-9]*' | awk '{print $1}'`
head_version=`echo $versions | awk '{print $1}' | grep -o '[0-9]*$'`
tail_version=`echo $versions | awk '{print $NF}' | grep -o '[0-9]*$'`
merge_cmd="svn merge -r $tail_version:$head_version $2 ."
?
echo 'Preparing environment:'
rm -rf khotyn_tmp && mkdir khotyn_tmp && cd khotyn_tmp
echo "Preparing environment done!\nChecking out $1"
svn co $1 .
echo "Checking out $1 done!\nMerging branches:$merge_cmd"
$merge_cmd
echo "Merging branches done:$merge_cm
d"<!--span-->

简单说下怎么使用:假设你把脚本名字起为svnmerger.sh,运行以下命令:./svnmerger.sh branch1 branch2,这样这个脚本会在当前目录下创建一个叫做khotyn_tmp的目录,把分支branch1拉到这个目录下,然后将branch2合并上 来(合并的版本为从svn log --stop-on-copy的起始版本到HEAD),这样用一个命令就可以应付项目中绝大部分的分支合并工作了。

五、使用vi来做svn diff:
用过svn diff的同学大概都觉得svndiff命令出来的东西实在是不怎么好看,可读性实在太差,而作为一个常年面对终端的程序员,打交道最多的编辑器可能就是vi,那么这里就介绍一个用vi 来可视化diff结果的脚本。

脚本的安装过程如下:

  • 在~/.vim/scripts下面建立一个叫做svndiff的文件,内容如下:
    <!--[if !supportLists]-->???????? <!--[endif]-->#!/bin/bash
    shift 5;/usr/bin/vimdiff -f "$@"
  • 给这个文件执行权限:chmod +x svndiff
  • 在~/.bashrc里面添加一个alias: alias svndiff="svn diff --diff-cmd ~/.vim/scripts/svndiff"现在,你就可以使用svndiff filename来替代svndiff filename了

  • 读书人网 >UNIXLINUX

    热点推荐