创建可接受拖放的可执行bash脚本。下降

时间:2012-05-01 03:21:37

标签: bash ubuntu drag-and-drop exe

我在Ubuntu上从源代码编译了mplayer。我不想使用GUI但是我想制作一个可执行的bash文件,它从一个被删除到bash文件的文件中获取路径。我该如何做到这一点呢?

我想让它看起来像这样: mplayer <get full path to filefile-ending>

我希望可执行文件bash文件位于我的桌面上;)


如果可能,我只是喜欢rightclick -> start with mplayer功能,但我不知道如何制作。

3 个答案:

答案 0 :(得分:4)

尝试:

#!/bin/bash
mplayer "$1"

删除文件的文件路径将作为第1个命令行参数传递给脚本文件。

答案 1 :(得分:1)

您可以使用$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

答案 2 :(得分:0)

在打开的终端中

通过使用 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
  • 第一次读取将确定是否有东西要来了,否则结束循环。
  • 超时非常短的第二个循环将 dropped URL作为单个字符串读取
  • read -a req会将字符串拆分为仅考虑第一部分