如何自定义一个Linux命令(简单易懂版)

如何自定义一个Linux命令(简单易懂版)

好久没写东西了,如果不往外输出,就不知道自己到底经历过什么,学到过什么,简书的第一篇文章从这篇前年写在csdn的文章开启。以下是正文,希望大家能够互相支持,共勉!

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, 需要执行以下操作:

type abc #查看是否存在名为abc的系统命令,提示 bash: type: abc: not found,与明不存在这样的命令

alias abc='ls;rm -r template;mkdir template;cd template;cat 11 > temp.txt'

执行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

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

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

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

相关推荐

Wi-Fi 的二维码
日博365哪个是真的

Wi-Fi 的二维码

[播放]到手拆,电信电视盒子
365彩票下载1.0.0老版本

[播放]到手拆,电信电视盒子

关于猊的成语
365bet哪个国家的

关于猊的成语

【週三買好物】Hartmann最完美箱包 打造時尚奢華旅行
日博365哪个是真的

【週三買好物】Hartmann最完美箱包 打造時尚奢華旅行

提洛斯回响·原初受火者 (Echo of Tyros,First Flamebearer) - [ISS]Iron的法术与魔法书 (Iron's Spells 'n Spellbooks) - MC百科
365bet哪个国家的

提洛斯回响·原初受火者 (Echo of Tyros,First Flamebearer) - [ISS]Iron的法术与魔法书 (Iron's Spells 'n Spellbooks) - MC百科

比特币怎么买?从入门到精通,一份面向2025年的完整购买与管理指南
日博365哪个是真的

比特币怎么买?从入门到精通,一份面向2025年的完整购买与管理指南