flatpak 패키지를 실행하기 위한 별칭을 생성하는 작은 스크립트가 있습니다(플랫팩을 명령줄에서 어떻게든 사용할 수 있도록 하기 위해). 이 명령을 수동으로 실행하면 모든 것이 잘 작동합니다.
하지만 flatpak을 설치/업데이트/제거할 때마다 이 명령을 수동으로 실행하고 싶지는 않지만 flatpak 명령이 호출될 때마다 스크립트를 자동으로 실행하고 싶습니다.
그래서 좀 더 효율적으로 표현하려면 flatpak *
명령어를 flatpak * && ~/my_script.sh
.
보너스: 스크립트가 호출될 때만 스크립트가 호출되고 flatpak install
스크립트 가 호출될 때는 호출 flatpak remove
되지 않도록 이 함수를 제한하려면 어떻게 해야 합니까?flatpak list
누구든지 이것을 달성하는 방법을 알고 있습니까?
답변1
하나를 생성하여 alias
다음 항목에 추가 할 수 있습니다 .bashrc
.
alias flatpak='flatpak_(){ flatpak "$@" && ~/my_script.sh; }; flatpak_'
my_script
첫 번째 인수가 다음인 경우 에만 install
실행됩니다 remove
.
alias flatpak='flatpak_(){ flatpak "$@" && [[ "$1" = install || "$1" = remove ]] && ~/my_script.sh; }; flatpak_'
답변2
다음에서 래퍼 함수를 정의합니다 .zshrc
.
flatpak () {
command flatpak "$@" && ~/my_script.sh
}
내장 기능은 함수를 재귀적으로 호출하는 대신 (에 있는 ) command
이름의 외부 명령을 호출하도록 쉘에 지시합니다 . 에 전달된 인수 목록으로 대체됩니다 .flatpak
$PATH
"$@"
flatpak
이는 모든 sh 유사 쉘(dash, bash, ksh, zsh 등)에서 작동합니다(기능에 액세스할 수 있도록 준비한 경우). 함수는 스크립트에 정의되지 않습니다. 스크립트에서 래퍼를 사용하려면 스크립트 상단 근처에 함수를 정의하거나 where $PATH
true 앞에 오는 별도의 스크립트에 래퍼를 배치해야 합니다. 네 flatpak
, 보세요간단한 래퍼 스크립트는 100개의 bash 프로세스를 생성합니다..
특정 명령 후에만 스크립트를 실행하고 이전과 같이 성공할 때만 스크립트를 실행하십시오.
flatpak () {
command flatpak "$@" &&
case $1 in
install|remove) ~/my_script.sh;;
esac
}