浅析如何在Linux中自定义一条命令

 更新时间:2025年06月10日 10:12:52   作者:千千寰宇  
在Linux系统中,自定义一条命令可以通过脚本编写,alias命令创建别名,函数定义等方式实现,下面小编就来和大家简单讲讲具体的实现代码吧

在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可以看到效果!

需要注意的是,要写成函数的形式,虽然一个文件中可以写多个函数,但是建立一个文件写一个函数,一个函数就是一条自定义指令,这样方便管理!

到此这篇关于浅析如何在Linux中自定义一条命令的文章就介绍到这了,更多相关Linux自定义命令内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Ubuntu 安装cuda10.1驱动的实现步骤

    Ubuntu 安装cuda10.1驱动的实现步骤

    这篇文章主要介绍了Ubuntu 安装cuda10.1驱动的实现步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-07-07
  • 详解如何在Ubuntu上检查、开启、关闭端口

    详解如何在Ubuntu上检查、开启、关闭端口

    在深入探讨如何在Ubuntu上检查、开启、关闭端口之前,理解网络基础概念、端口的工作原理以及Ubuntu的网络架构是至关重要的,文中通过代码示例介绍的非常详细,具有一定的参考价值,需要的朋友可以参考下
    2024-06-06
  • linux解决Tomcat内存溢出的问题

    linux解决Tomcat内存溢出的问题

    下面小编就为大家带来一篇linux解决Tomcat内存溢出的问题。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-12-12
  • Apache与Tomcat服务器整合的基本配置方法及概要说明

    Apache与Tomcat服务器整合的基本配置方法及概要说明

    网上的乱七八糟的资料太多了,很多都是自说自话,希望这篇文章能给大家带来一些清晰的思路。
    2010-12-12
  • Ubuntu18.04安装Nvidia显卡驱动教程(图文)

    Ubuntu18.04安装Nvidia显卡驱动教程(图文)

    这篇文章主要介绍了Ubuntu18.04安装Nvidia显卡驱动教程(图文),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-07-07
  • 详解Linux使用ss命令结合zabbix对socket做监控

    详解Linux使用ss命令结合zabbix对socket做监控

    zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。这篇文章主要分为三块进行说明:介绍ss命令;对机器总体的socket进行监控;某些机器连接该机器的数量进行监控
    2021-06-06
  • Centos6.5搭建java开发环境配置详解

    Centos6.5搭建java开发环境配置详解

    这篇文章主要介绍了Centos6.5搭建java开发环境配置详解,非常具有实用价值,需要的朋友可以参考下。
    2016-12-12
  • Ubuntu Server 11.10安装配置lamp(Apache+MySQL+PHP)

    Ubuntu Server 11.10安装配置lamp(Apache+MySQL+PHP)

    这篇文章主要介绍了Ubuntu Server 11.10安装配置lamp(Apache+MySQL+PHP),需要的朋友可以参考下
    2016-10-10
  • Scp如何使用密码拷贝文件

    Scp如何使用密码拷贝文件

    在Linux系统中使用scp命令复制文件的两种方法:手动输入密码和使用密钥拷贝,手动输入密码时,系统会提示输入密码;使用密钥拷贝时,需要先生成ssh密钥对,并将公钥添加到远程服务器的~/.ssh/authorized_keys文件中
    2025-02-02
  • 嵌入式Linux开发环境搭建ping、nfs的解决方法

    嵌入式Linux开发环境搭建ping、nfs的解决方法

    在本篇文章里小编给大家整理了关于嵌入式Linux开发环境搭建ping、nfs的解决方法,需要的朋友们学习参考下。
    2019-07-07

最新评论