我在 Ubuntu 上从源代码编译了 mplayer。我不想使用 GUI,但我想制作一个可执行的 bash 文件,该文件从拖放到 bash 文件中的文件中获取路径。我怎样才能使这样的事情成为可能?
我想让它看起来像这样:
mplayer <get full path to file
.file-ending>
我希望可执行的 bash 文件放在我的桌面上;)
如果可能的话,我只是想要一个rightclick -> start with mplayer
功能,但我不知道如何制作。
我在 Ubuntu 上从源代码编译了 mplayer。我不想使用 GUI,但我想制作一个可执行的 bash 文件,该文件从拖放到 bash 文件中的文件中获取路径。我怎样才能使这样的事情成为可能?
我想让它看起来像这样:
mplayer <get full path to file
.file-ending>
我希望可执行的 bash 文件放在我的桌面上;)
如果可能的话,我只是想要一个rightclick -> start with mplayer
功能,但我不知道如何制作。
您可以访问传递给脚本$1
的参数(对于第一个参数)。而且您还应该创建一个.desktop
文件,以便 Nautilus(或您的桌面管理器)知道该做什么并使用该文件%u
将删除的路径传递给脚本。
例如,您可以创建一个名为DropOverMe.desktop
:
[Desktop Entry]
Encoding=UTF-8
Name=Drop Over Me
Comment=Execute the script with the file dropped
Exec=gnome-terminal -e "/folder/to/the/script/launchme.sh \"%u\""
Icon=utilities-terminal
Type=Application
我gnome-terminal
在我的 PC 上使用 Ubuntu,使用您喜欢的终端应用程序。
脚本可能类似于:
#! /bin/bash
echo "Launched with $1" >> /tmp/history.log
尝试:
#!/bin/bash
mplayer "$1"
删除文件的文件路径将作为第一个命令行参数传递给脚本文件。
通过使用mate-terminal、gnome-terminal或konsole,您可以使用拖放到打开的窗口中。
这将发送 URL 作为提示,添加一个空格,但没有endline。
为此,运行mplayer,我编写了这个小循环函数:
while IFS=$' \t\r\n' read -d '' -p "Wait for URL to play: " -rsn 1 str &&
[ "$str" ];do
while IFS= read -d '' -rsn 1 -t .02 char
do str+="$char"
done
if [ "$str" ] ;then
read -a req <<<"$str"
echo $req
mplayer $req
fi
done
read -a req
将拆分字符串以仅考虑第一部分