分享一个shell写的linux系统下查找文件并进入vi模式的命令:
直接上代码:
#!/usr/bin/ksh
#set -x
test_digi()
{
case $1 in
#[0-9]* )
[[:digit:]]* )
if [ $1 -gt $2 ]
then
echo " **** ERROR:没有您选择的文件 **** "
return 0
else
return 1
fi
;;
* )
echo " **** ERROR:输入非正数[$1] ****"
return 0
;;
esac
}
if [[ "$1" = *.c ]];
then
find ~/src -name "$1" > ~/tmp/_$$
else
find ~/src -name "$1*" > ~/tmp/_$$
fi
linenum=` wc -l ~/tmp/_$$ | awk '{ print $1}' `
#echo 行数是$linenum
if [ $linenum == 0 ]
then
PATHNAME=""
echo 文件$1不存在
elif [ $linenum == 1 ]
then
PATHNAME=`cat ~/tmp/_$$`
else
echo
cat -n ~/tmp/_$$
echo
echo 有多个文件符合条件,请选择要编辑的文件:
read choice
while test_digi $choice $linenum
do
echo
echo
cat -n ~/tmp/_$$
echo
echo 有多个文件符合条件,请选择要编辑的文件:
read choice
done
PATHNAME=`head -${choice} ~/tmp/_$$ | tail -1`
fi
#echo 您选择的路径是 $PATHNAME
if [ x$PATHNAME != x ]
then
cd $(dirname $PATHNAME)
echo 您要编辑的文件是
echo
echo " " $(basename $PATHNAME )
echo
# vim $(basename $PATHNAME)
vi $(basename $PATHNAME )
fi
unlink ~/tmp/_$$
69,1 Bot
可以看到,选择的文件不加后缀则会把所有文件都列出来提供选择,输入相应的文件编号,即可进入vi模式编辑该文件。
如果to *.c 则会直接进入该 .c文件,不会进入选择模式。
为了保证,退出vi模式后当前目录在该文件的目录下,则需要在 .profile 文件中添加如下代码:
alias to='. to'