您尚未登录。

#1 2023-08-01 20:32:54

AllenWu233
禁忌·四重存在
所在地: 幻想乡红魔馆
注册时间: 2022-10-18
帖子: 48
个人网站

[已解决]如何在运行yay或者sudo pacman -Syu后自动运行指定命令或脚本

比如,我想在每次运行`yay`后自动运行`fortune | cowsay`,但是不想在运行`yay -S foo`后运行这条命令,因此`alias yay='yay; fortune | cowsay'`行不通

pacman hook可以做到吗?有更好的办法吗?

最近编辑记录 AllenWu233 (2024-04-10 21:47:48)


既自以心为形役,奚惆怅而独悲?

离线

#2 2023-08-01 21:34:13

13905069
会员
注册时间: 2022-04-23
帖子: 10

Re: [已解决]如何在运行yay或者sudo pacman -Syu后自动运行指定命令或脚本

编写一个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

离线

#3 2023-08-01 21:46:32

AllenWu233
禁忌·四重存在
所在地: 幻想乡红魔馆
注册时间: 2022-10-18
帖子: 48
个人网站

Re: [已解决]如何在运行yay或者sudo pacman -Syu后自动运行指定命令或脚本

13905069 说:

编写一个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里写一个类似的函数也是可以的吧


既自以心为形役,奚惆怅而独悲?

离线

#4 2023-08-02 10:44:59

依云
会员
所在地: a.k.a. 百合仙子
注册时间: 2011-08-21
帖子: 8,485
个人网站

Re: [已解决]如何在运行yay或者sudo pacman -Syu后自动运行指定命令或脚本

是可以这么干,但是写脚本或者函数的话,补全需要自己处理了。

离线

#5 2023-08-02 15:39:06

AllenWu233
禁忌·四重存在
所在地: 幻想乡红魔馆
注册时间: 2022-10-18
帖子: 48
个人网站

Re: [已解决]如何在运行yay或者sudo pacman -Syu后自动运行指定命令或脚本

依云 说:

是可以这么干,但是写脚本或者函数的话,补全需要自己处理了。

确实,补全用不了了有点难受,还是得找其他办法


既自以心为形役,奚惆怅而独悲?

离线

#6 2024-04-10 21:47:27

AllenWu233
禁忌·四重存在
所在地: 幻想乡红魔馆
注册时间: 2022-10-18
帖子: 48
个人网站

Re: [已解决]如何在运行yay或者sudo pacman -Syu后自动运行指定命令或脚本

解决了,方法是添加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的自动补全


既自以心为形役,奚惆怅而独悲?

离线

页脚