序
在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自定义命令内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论