[Linux] 如何在 Linux 中自定义一条命令?
0 序[*]在Linux系统中,自定义一条命令可以通过脚本编写、alias命令创建别名、函数定义等方式实现。
这些方法允许用户按自己的需求创建新指令,以快速、高效地执行常用操作或复杂的命令序列。
脚本编写是一种常见且灵活的方式,通过将一系列命令写入一个文本文件并赋予执行权限,用户可以通过文件名调用这些命令,极大地提高工作效率并实现自动化任务。
1 环境变量法
[*]熟悉linux的都知道,大部分发行版都会判断用户目录下是否有bin目录,如果有就会将这个目录加入环境变量
也就是说,我们可以将一些脚本写好放到这个目录下,也就是$HOME/bin目录下,这样我们就可以在终端直接调用脚本了
上述判断bin目录是否存在的部分一般会放在$HOME/.profile,我的Linux操作系统下这部分内容如下:
# ~/.profile: executed by the command interpreter for login shells.
# This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login
# exists.
# see /usr/share/doc/bash/examples/startup-files for examples.
# the files are located in the bash-doc package.
# the default umask is set in /etc/profile; for setting the umask
# for ssh logins, install and configure the libpam-umask package.
#umask 022
# if running bash
if [ -n "$BASH_VERSION" ]; then
# include .bashrc if it exists
if [ -f "$HOME/.bashrc" ]; then
. "$HOME/.bashrc"
fi
fi
# 如下几行 shell 命令,不同 Linux 操作系统中情况可能不同。有可能没有这几行命令,则需要自己拷贝进来。
# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ]; then
PATH="$HOME/bin:$PATH"
fi当然,如果之前目录中没有bin目录,我们自己手动在$HOME目录下建立bin。
mkdir -p $HOME/bin/创建好的shell脚本,需要赋予可执行权限。
chmod +x $HOME/bin/xxx.sh这个时候需要我们注销后再登录才可以,或者执行source $HOME/.profile。
[*]实际案例
mkdir -p $HOME/bin
echo 'echo "Hello, $1!"' > $HOME/bin/hello.sh
source $HOME/.profile
//在任意路径下均可执行:
hello.sh2 脚本编写
[*]在Linux中,脚本通常是一系列的命令集合,存储在一个文本文件中,这些命令按照一定顺序执行。
要创建一个脚本,首先需要确定用于编写脚本的文本编辑器,如vim或nano。
然后,在编辑器中输入需要自动化执行的命令序列。
[*]创建脚本文件: 使用文本编辑器创建一个新文件,例如 myscript.sh。sh扩展名表示这是一个shell脚本。
[*]写入命令: 在文件的开头添加#!/bin/bash,这是一个 shebang 行,指示系统使用哪个解释器来运行脚本。然后,下面写入需要执行的命令。
例如,创建一个简单的脚本greet.sh,其内容如下:
#!/bin/bash
echo "Hello, $USER!"这个脚本会输出欢迎信息,其中$USER是一个环境变量,代表当前的用户名。
[*]赋予执行权限: 使用命令chmod +x greet.sh为脚本文件赋予执行权限。
[*]执行脚本: 通过./greet.sh命令运行脚本。
3 ALIAS命令创建别名
[*]别名(alias)是对一条或多条命令的引用,可以让用户为复杂或长的命令序列设定简短的名字。
[*]创建临时别名: 使用alias命令创建一个别名,比如alias l='ls -lA',这条命令会创建一个别名l,以后只需输入l就可以执行ls -lA命令。
[*]创建别名 (临时)
alias ll='ls -lA'
[*]删除别名
unalias [-a][别名]
-a : 删除全部的别名
如: unalias ll
[*]持久化别名: 为了让别名在新的会话中依然有效,可以将其添加到~/.bashrc或~/.bash_profile文件中。编辑这个文件,将相同的alias命令添加进去。
// 打开 .bashrc 文件
vim ~/.bashrc
// 在文件末尾添加alias定义
alias mygpu='nvidia-smi'
source ~/.bashrc4 函数定义
[*]在bash脚本中定义函数可以让用户创建包含多个命令的复合命令,函数比别名更加灵活,可以接受参数。
[*]定义函数: 函数的定义格式类似于其他编程语言。
例如,创建一个名为greet的函数:
greet() {
echo "Hello, $1!"
}在这个例子中,$1代表函数的第一个参数。
[*]使用函数: 函数定义后,可以在脚本的其他地方或命令行直接调用,例如greet World会输出"Hello, World!"。
建立类似fish shell的函数机制
[*]fish shell中自定义指令是使用函数的方式来实现的,一条自定义指令可以对应一个函数
于是我们可以借助fish shell的这种思路来在bash上实现。实现方法如下:
[*]step1 建立放置函数的文件夹
我的方法是在$HOME下建立.bash_func文件夹,可使用命令 mkdir -p $HOME/.bash_func 实现。
[*]step2 在$HOME/.bashrc下添加加载函数的代码
在$HOME/.bashrc后面添加以下部分:
if [ -d "$HOME/.bash_func" ]
then
if [[ $(ls $HOME/.bash_func | wc -c ) -gt 0 ]];then
for flist in $(ls $HOME/.bash_func)
do
. $HOME/.bash_func/$flist
done
fi
fi这样以来,我们在~/.bash_func/下建立文件写函数,启动终端后,就能自动加载函数,之后就可以做为自定义的指令使用。
比如,我们建立t_func文件,文件内容如下:
function t_func(){
echo "hello,this is a demo!"
}
[*]然后我们新打开一个终端,注意要新打开,或者你可以先把shell切换到sh,再切换到bash,使得.vimrc文件被加载,然后我们终端输入t_func可以看到效果!
[*]需要注意的是,要写成函数的形式,虽然一个文件中可以写多个函数,但是建立一个文件写一个函数,一个函数就是一条自定义指令,这样方便管理!
Y 推荐文献
[*]Linux alias命令 - 菜鸟教程
[*]Linux unalias命令 - 菜鸟教程
X 参考文献
[*]如何在 Linux 中自定义一条命令 - PingCode
[*]linux下自定义命令的几种实现方法 - 博客园 【推荐】
本文作者: 千千寰宇
本文链接: https://www.cnblogs.com/johnnyzen
关于博文:评论和私信会在第一时间回复,或直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
日常交流:大数据与软件开发-QQ交流群: 774386015 【入群二维码】参见左下角。您的支持、鼓励是博主技术写作的重要动力!
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
页:
[1]