例如,feh
程序可以删除当前查看的图像,大概rm
在某个时候使用该命令。假设我们不想删除文件,而是想运行一个垃圾脚本,例如trash.sh
.有没有办法运行但每次调用时都feh
欺骗它运行?trash.sh
rm
答案1
您需要修改源代码feh
并运行任意脚本而不是语言unlink()
中的系统调用C
,然后编译新代码:
git clone https://github.com/derf/feh.git
cd feh
cat<<EOF > trashbin.patch
--- src/filelist.c 2023-09-18 23:19:53.444892742 +0200
+++ src/filelist_new.c 2023-09-18 23:19:11.293556737 +0200
@@ -112,7 +112,11 @@
gib_list *feh_file_rm_and_free(gib_list * list, gib_list * l)
{
- unlink(FEH_FILE(l->data)->filename);
+ //unlink(FEH_FILE(l->data)->filename);
+ char command[255];
+ sprintf(command, "/usr/local/bin/trashbin.sh %s", FEH_FILE(l->data)->filename);
+ system(command);
+
return(feh_file_remove_from_list(list, l));
}
EOF
patch src/filelist.c < trashbin.patch
make
sudo make install
然后,创建:
/usr/local/bin/trashbin.sh
和你想要的一样
#!/bin/sh
mkdir -p ~/.local/trashbin
/bin/mv -- "$@" ~/.local/trashbin