【问题标题】:Create executable bash script that accepts drag & drop创建接受拖放的可执行 bash 脚本
【发布时间】:2012-05-10 17:05:44
【问题描述】:

我在 Ubuntu 上从源代码编译了 mplayer。我不想使用 GUI,但我想制作一个可执行的 bash 文件,该文件从被拖放到 bash 文件中的文件中获取路径。我怎样才能让这样的事情成为可能?

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

我希望可执行的 bash 文件放在我的桌面上;)


如果可能的话,我想要一个rightclick -> start with mplayer 函数,但我不知道怎么做。

【问题讨论】:

  • 抱歉,不是编程问题,请投票转至superuser.com 或者您可以“标记”它并要求主持人移动它。 (我没有否决你的问题)。祝你好运。
  • 您使用的是哪个 GUI 环境?
  • 哦,对不起,我只是习惯于在 stackoverflow xD 中发帖,我在 ubuntu 上使用 gnome 3 而不是 unity,仍然使用 lightdm。

标签: bash ubuntu drag-and-drop exe


【解决方案1】:

试试:

#!/bin/bash
mplayer "$1"

拖放文件的文件路径将作为第一个命令行参数传递给脚本文件。

【讨论】:

  • 不知何故我无法拖放到 .sh 文件上。文件只是堆积或复制到桌面。
  • 天哪,我终于搞定了!感谢您的代码,它的工作原理!我只需要创建一个 mplayer.desktop 快捷方式来启动可用作可执行文件的 .sh 文件。而且我必须对这两个文件都授予完全权限。现在它完美无瑕;)
  • @HitomiTenshi,如果你能分享你的 .desktop 文件内容,这对我有很大帮助 - 我正在努力解决这个问题。
  • @alfadog67,您可能需要 `%u` 在 Exec 行的末尾(在 xfce 中为我工作),因此它将 args 传递给脚本。
【解决方案2】:

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

【讨论】:

  • 你迟到了将近 6 年。不过感谢您的彻底回答!
  • 谢谢你,只为像我一样迟到的人 ;-)。
  • 我想知道如何使用 WSL2 来做到这一点,直到最近它还是无头的。
【解决方案3】:

在打开的终端中

通过使用 mate-terminalgnome-terminalkonsole,您可以使用拖放到打开的窗口中。

这将发送 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 将拆分字符串以仅考虑第一部分

【讨论】:

  • 由于 lubuntu 似乎不支持拖放脚本或桌面条目,因此对于需要在给定应用程序中快速运行某些内容的任何情况(我的 md5sum案例)。
猜你喜欢
  • 2012-12-02
  • 2013-01-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-23
  • 1970-01-01
相关资源
最近更新 更多