Linux系统自动化sh脚本
- 前言
- 功能
- 优点
- 步骤
- 示例
前言
Linux系统中,可以编写自动化sh脚本,并在终端中自动加载。可用来简化复杂命令或创建专属命令,提升工作效率。
功能
init_workspace
:可以识别Host和Docker,初始化工作目录source_my_func
:完成自加载,用于更新此自动化sh脚本.bashrc (system and docker)
:终端自动加载,适用于Host和Dockercustom_function
:编写自定义函数,简化复杂命令,创建专属命令
优点
- 自动化提升效率
- 同一脚本可同时用于System内和Docker内
- 化简复杂命令,形成自己的专属命令
- 保留命令历史记录
- 改善打字慢问题
- 自动补全改善错别字问题
步骤
- 创建sh脚本
创建sh脚本,并完成功能,例如:script.sh
- 添加bash解释器
在sh脚本的首行添加bash解释器,一般为:#!/bin/bash
- 添加可执行权限
为sh脚本添加可执行权限:chmod +x [script.sh]
- 临时加载sh脚本
使用source
命令在终端中临时加载sh脚本:source script.sh
永久生效
在.bashrc
文件中自动加载sh脚本:vim ~/.bashrc
示例
文件名称:my_func.sh
#!/bin/bash# 全局变量
workspace="/workspace"
work_user="root"
# relative_path="shell/script/my_func.sh"
relative_path="CodeLib/Shell/script/my_func.sh"# main函数
function my_func_main() {# 调用函数,初始化workspaceinit_workspaceecho "my_func init success, workspace: $workspace"
}# 初始化workspace函数
function init_workspace() {if [ -d "/workspace" ]; thenworkspace="/workspace"work_user="root"elseworkspace="/home/nsjim/work"work_user="nsjim"fi# echo "workspace init success: $workspace"
}# 添加可执行权限
function add_x() {# chmod +x $1.shchmod -R +x $1
}# 添加读写权限
function add_rw() {chmod -R a+rw $1
}# 开启docker
function docker_start() {docker start mlir_nsdocker exec -it mlir_ns /bin/bash
}# 进入docker
function docker_exec() {docker exec -it mlir_ns /bin/bash
}# 初始化docker服务(docker内)
function docker_init() {# ssh serviceeval ssh-agentservice ssh start
}# 重新加载此脚本
function source_my_func() {init_workspace# source /workspace/CodeLib/Shell/script/my_func.shsource ${workspace}/${relative_path}
}# 显示此脚本路径
function show_my_func_path() {init_workspaceecho "script path: ${workspace}/${relative_path}"
}# 加载PATH环境变量
function export_path() {init_workspace# 环境变量使用冒号隔开,使用如下命令可添加环境变量# export PATH=/path/to/dir:$PATHexport PATH=$workspace/CodeLib/Python/Tool:$PATH
}# 加载PYTHONPATH环境变量
function export_pythonpath() {init_workspace# 环境变量使用冒号隔开,使用如下命令可添加环境变量# export PYTHONPATH=/path/to/dir:$PYTHONPATHexport PYTHONPATH=$workspace/model-apt/ml-cvnets:$PYTHONPATH
}#### 调用main函数
my_func_main