比如,我想在每次运行`yay`后自动运行`fortune | cowsay`,但是不想在运行`yay -S foo`后运行这条命令,因此`alias yay='yay; fortune | cowsay'`行不通
pacman hook可以做到吗?有更好的办法吗?
最近编辑记录 AllenWu233 (2024-04-10 21:47:48)
既自以心为形役,奚惆怅而独悲?
离线
编写一个bash脚本,不带参数时运行yay结束后运行"fortune | cowsay",带参数时原样传给yay,然后在终端里把yay确定为该脚本的别名。
#!/bin/bash
# 一个运行yay然后运行fortune | cowsay的脚本
if [ $# -eq 0 ]; then # 如果没有给出参数
yay # 运行yay
fortune | cowsay # 运行fortune并把它传给cowsay
else # 如果给出了参数
yay "$@" # 把参数传给yay
fi
别忘了chmod +x /path/to/script.sh
最后alias yay=/path/to/script.sh
离线
编写一个bash脚本,不带参数时运行yay结束后运行"fortune | cowsay",带参数时原样传给yay,然后在终端里把yay确定为该脚本的别名。
#!/bin/bash # 一个运行yay然后运行fortune | cowsay的脚本 if [ $# -eq 0 ]; then # 如果没有给出参数 yay # 运行yay fortune | cowsay # 运行fortune并把它传给cowsay else # 如果给出了参数 yay "$@" # 把参数传给yay fi
别忘了chmod +x /path/to/script.sh
最后alias yay=/path/to/script.sh
感谢提醒。照这么说我在.zshrc里写一个类似的函数也是可以的吧
既自以心为形役,奚惆怅而独悲?
离线
是可以这么干,但是写脚本或者函数的话,补全需要自己处理了。
离线
是可以这么干,但是写脚本或者函数的话,补全需要自己处理了。
确实,补全用不了了有点难受,还是得找其他办法
既自以心为形役,奚惆怅而独悲?
离线
解决了,方法是添加pacman hook
先创建一个脚本:fortune-cowsay.sh
#!/bin/bash
fortune | cowsay
然后在/usr/share/libalpm/hooks/下创建一个hook:
# Run 'fortune | cowsay' after upgrade
[Trigger]
Operation = Remove
Operation = Install
Operation = Upgrade
Type = Package
Target = *
[Action]
Description = Fortune:
Depends = fortune-mod
When = PostTransaction
Exec = /path/to/fortune-cowsay.sh
这样每次更新、安装或卸载软件包都可以自动运行脚本,并且不会影响shell的自动补全
既自以心为形役,奚惆怅而独悲?
离线