Linux命令--自定义

  Linux系统提供了大量的命令供用户使用,一般来说,一条命令对应一定的功能,当我们需要完成复杂的任务时,就需要使用命令的组合或者写脚本来完成。有的时候,这些指令组合需要多次执行,我们希望有一条命令可以代替我们需要输入的复杂命令。

临时自定义命令

  Linux支持用户自定义一个命令。用户可以使用alias(英文单词,别名,化名的意思)命令为一串指令指定一个别名。使用alias命令自定义命令的方式如下:

alias command='command1;command2;command3...'

  例如,我们想要查看当前目录下的所有文件,删除名为template的文件夹,再创建一个名为template的文件夹,并在里面创建一个名为temp.txt,内容为11的文件,需要执行如下操作:

ls
rm -r template
mkdir template
cd template
cat 11 > temp.txt

  如果我们需要多次执行上面的命令序列,我们可以为其创建一个别名,假设此别名为abc, 需要执行以下操作:

  1. type abc #查看是否存在名为abc的系统命令,提示 bash: type: abc: not found,与明不存在这样的命令
  2. alias abc=’ls;rm -r template;mkdir template;cd template;cat 11 > temp.txt’
  3. 执行abc,测试命令是否生效

命令持久化

  按照上面的方式自定义的命令在系统重启后会失效,想要每次开机后都能使用自定义的命令我们还需要做以下工作:
将自定义命令的操作写入到/root/.bashrc_aliases文件里面。如果文件不存在,创建此文件即可,这个文件是Linux系统为自定义命令专门留的接口。我们可以在/root/.bashrc中看到关于这个文件的描述。

Linux_命令自定义插图


延伸

  从上述自定义命令的方式来看,我们不仅可以为命令序列起别名,还可以通过写脚本的方式来构建更加复杂的命令。例如ant编译命令可以通过下面的方式传入参数来编译,但需要输入较多的文字,用起来很麻烦:

ant release -Dsdk.dir=$sdk_path -Dtarget=android-$targetSdkVersion -Dclear.exist.libraries=$clear_static_libs_flag -Dstatic.libraries.dir=$static_lib_path -Dmykey.path=$keysoter_path

  为了方便编译,我们可以开发一个shell脚本build.sh,通过传参数来完成调用。

#!/bin/bash
echo "The parameter is empty.We'll use default config to compile the module."
echo "Usage : "
echo "1. SDK path"
echo "2. target version No. "
echo "3. clear.exist.libraries. True means it will clear the libraries. "
echo "4. static.libraries.dir"
echo "5. Keystore path"


echo "ant release -Dsdk.dir=$sdk_path -Dtarget=android-$targetSdkVersion -Dclear.exist.libraries=$clear_static_libs_flag -Dstatic.libraries.dir=$static_lib_path -Dmykey.path=$keysoter_path"
echo 

sdk_path=$1
targetSdkVersion=$2
clear_static_libs_flag=$3
static_lib_path=$4
keysoter_path=$5

if [ x$sdk_path == x"" ]; then
    read -p "Continue or not ?[y/n]" decision
    if [ $decision = "y" ];then
        ant release
    else
        exit 1
    fi
elif [ x$targetSdkVersion == x"" ]; then
    ant release -Dsdk.dir=$sdk_path
elif [ x$clear_static_libs_flag == x"" ]; then
    ant release -Dsdk.dir=$sdk_path -Dtarget=android-$targetSdkVersion
elif [ x$static_lib_path == x"" ]; then 
    ant release -Dsdk.dir=$sdk_path -Dtarget=android-$targetSdkVersion -Dclear.exist.libraries=$clear_static_libs_flag
elif [ x$static_lib_path == x"" ]; then
    ant release -Dsdk.dir=$sdk_path -Dtarget=android-$targetSdkVersion -Dclear.exist.libraries=$clear_static_libs_flag -Dstatic.libraries.dir=$static_lib_path
else
    ant release -Dsdk.dir=$sdk_path -Dtarget=android-$targetSdkVersion -Dclear.exist.libraries=$clear_static_libs_flag -Dstatic.libraries.dir=$static_lib_path -Dmykey.path=$keysoter_path
fi

  使用脚本来执行编译的话,我们仅需要把脚本放到代码目录里面,再执行以下命令即可

./build.sh /work/sdk/android_5.1_sdk 22 false

  现在编译命令比最开始的已经简化了很多,缺点是我们需要知道脚本的存放位置。现在我们不想让别的调用的人知道这个脚本,并且希望输入能更加简洁,这个时候就可以使用自定义命令:

alias ca='/work/script/build.sh'

  这样,我们下次想要编译代码时,只需要在工程目录下执行ca命令并按照需要调用参数就可以了。

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值