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
shell
#!/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() {
# 调用函数,初始化workspace
init_workspace
echo "my_func init success, workspace: $workspace"
}
# 初始化workspace函数
function init_workspace() {
if [ -d "/workspace" ]; then
workspace="/workspace"
work_user="root"
else
workspace="/home/nsjim/work"
work_user="nsjim"
fi
# echo "workspace init success: $workspace"
}
# 添加可执行权限
function add_x() {
# chmod +x $1.sh
chmod -R +x $1
}
# 添加读写权限
function add_rw() {
chmod -R a+rw $1
}
# 开启docker
function docker_start() {
docker start mlir_ns
docker exec -it mlir_ns /bin/bash
}
# 进入docker
function docker_exec() {
docker exec -it mlir_ns /bin/bash
}
# 初始化docker服务(docker内)
function docker_init() {
# ssh service
eval ssh-agent
service ssh start
}
# 重新加载此脚本
function source_my_func() {
init_workspace
# source /workspace/CodeLib/Shell/script/my_func.sh
source ${workspace}/${relative_path}
}
# 显示此脚本路径
function show_my_func_path() {
init_workspace
echo "script path: ${workspace}/${relative_path}"
}
# 加载PATH环境变量
function export_path() {
init_workspace
# 环境变量使用冒号隔开,使用如下命令可添加环境变量
# export PATH=/path/to/dir:$PATH
export PATH=$workspace/CodeLib/Python/Tool:$PATH
}
# 加载PYTHONPATH环境变量
function export_pythonpath() {
init_workspace
# 环境变量使用冒号隔开,使用如下命令可添加环境变量
# export PYTHONPATH=/path/to/dir:$PYTHONPATH
export PYTHONPATH=$workspace/model-apt/ml-cvnets:$PYTHONPATH
}
#### 调用main函数
my_func_main