OpenBSD에서 파일을 제공하는 패키지를 찾는 쉘 스크립트

OpenBSD에서 파일을 제공하는 패키지를 찾는 쉘 스크립트
# 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다음에서 비롯됩니다.pkglocationb패키지를 사용하면 설치 여부에 관계없이 모든 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 {}.

관련 정보