大家都知道 systemd 启个服务打 systemctl start nginx.service 实在是长的难受(尽管有Tab…), 于是 ArchWiki 上有介绍一个简单用 start nginx 来代替的方法, 但是这个方法没有 Bash 自动补全, 于是我自己折腾了一下..
补全函数都取自他们各自原来的 bash-completion 文件, 我只修改了一点点(可惜不能复用啊..).
嗯, 照例上代码…
/etc/bash.bashrc, 或者 ~/.bashrc 里添加:
if ! systemd-notify --booted; then # not using systemd
start() {
sudo rc.d start $1
}
restart() {
sudo rc.d restart $1
}
stop() {
sudo rc.d stop $1
}
else
_target() {
if [[ "$1" == *.service ]]
then
echo $1
else
echo $1.service
fi
}
export -f _target
start() {
sudo systemctl start $(_target $1)
}
export -f start
restart() {
sudo systemctl restart $(_target $1)
}
export -f restart
stop() {
sudo systemctl stop $(_target $1)
}
export -f stop
enable() {
sudo systemctl enable $(_target $1)
}
export -f enable
status() {
sudo systemctl status $(_target $1)
}
export -f status
disable() {
sudo systemctl disable $(_target $1)
}
export -f disable
fi
Continue reading 给 Systemd 的操作加上 Bash 简写及其自动完成