前言
之前写过这个东西:Linux命令行直接打开全局路径下的python脚本
里面在.bashrc中设置的这句代码我一直不太明白原理:
然后今天我才知道,原来在这句alias里,我是先设置了一个函数:
op() {
export pyfile=`which $1`
gvim $pyfile
}
然后直接调用了这个函数op,并且把这一系列操作最后封成了alias op,可以说是一波三折了。
终于在今天我知道了在bashrc里应该怎么搞,那么我想了下,为啥不封一个伪快捷键来解决:1.记不住那么多路径 2.记不住那么多指令 3.记不住那么多alias名 的问题呢?
刚想做这个事就遇到了一个问题,我虚拟机里默认是csh:
[xiaotu@xiaotu-eda Desktop]$ echo $SHELL
/bin/tcsh
这个时候执行bashrc会报语法错误,所以就这样了一下,就会使bashrc生效了:
exec bash
执行
第一步,把常用的指令和路径跳转啥的封一个队列:
cmd_array[0]="vi ~/.xiaotu/.eda_synopsys"
cmd_array[1]="vi ~/.xiaotu/.alias"
cmd_array[2]="source /home/xiaotu/.xiaotu/.alias"
cmd_array[3]="cd /home/xiaotu/my_work"
第二步,做一个need函数:
need() {
for i in $(seq 0 `expr ${#cmd_array[@]} - 1`);
do
echo "[todo $i] ${cmd_array[$i]}"
done
}
第三步,做一个todo函数:
todo() {
${cmd_array[$1]}
}
第四步,看看效果是这样的:
[xiaotu@xiaotu-eda Desktop]$ exec bash
hello
[xiaotu@xiaotu-eda Desktop]$ need
[todo 0] vi ~/.xiaotu/.eda_synopsys
[todo 1] vi ~/.xiaotu/.alias
[todo 2] source /home/xiaotu/.xiaotu/.alias
[todo 3] cd /home/xiaotu/my_work
[xiaotu@xiaotu-eda Desktop]$ todo 3
[xiaotu@xiaotu-eda my_work]$ pwd
/home/xiaotu/my_work
第五步,之后可以直接把需要的指令继续往cmd_array[$]中添加,不用再费劲起一大堆alias了,费脑筋啊。