[Linux] 如何在 Linux 中自定义一条命令?

365bet体育手机 📅 2025-10-07 05:24:27 👤 admin 👁️ 8825 ❤️ 613
[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.sh

2 脚本编写

在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 ~/.bashrc

4 函数定义

在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下自定义命令的几种实现方法 - 博客园 【推荐】

相关养生推荐

堉译名字含义:
bat365官方网站

堉译名字含义:

📅 09-14 👁️ 4678
饥荒海滩
365bet体育手机

饥荒海滩

📅 09-04 👁️ 5188
阴阳师哪个式神先升6星比较好 御魂6号位选择攻略
bat365官方网站

阴阳师哪个式神先升6星比较好 御魂6号位选择攻略

📅 07-09 👁️ 1968
韩国制药行业掠影
亚洲365bet比分

韩国制药行业掠影

📅 10-02 👁️ 2211