用于在 OpenBSD 上查找哪些软件包提供文件的 Shell 脚本

用于在 OpenBSD 上查找哪些软件包提供文件的 Shell 脚本
# for i in `pkg_info -q`; do pkg_info -L "$i" | grep ^/ | sed "s/^/$i/g" | perl -pe 's/\//\t\//'; done | grep tasklist.desktop
xfce4-panel-4.10.0p2    /usr/local/share/xfce4/panel/plugins/tasklist.desktop
# pkg_file() { for i in `pkg_info -q`; do pkg_info -L "$i" | grep ^/ | sed "s/^/$i/g" | perl -pe 's/\//\t\//'; done | grep $1; } 
ksh: syntax error: `{' unexpected
# 

问:我缺少什么?我只想放入 .profile 文件,但是当我将该行放入函数中时,出现了显示的错误

答案1

您还可以使用现有的工具。命令pkglocate来自pkglocatedbpackage 可以让你搜索任何 OpenBSD 软件包中的所有文件,无论你是否安装了它:

$ pkglocate /usr/local/share/xfce4/panel/plugins/tasklist.desktop
xfce4-panel-4.10.1:x11/xfce4/xfce4-panel:/usr/local/share/xfce4/panel/plugins/tasklist.desktop

您可以仅搜索已安装的软件包包装信息(1):

$ pkg_info -qE /usr/local/share/xfce4/panel/plugins/tasklist.desktop
xfce4-panel-4.10.1

答案2

您的函数定义语法是错误的 - 它是foo() {},而不是foo {}

相关内容