10

Ubuntuのソースからmplayerをコンパイルしました。GUIを使用したくありませんでしたが、bashファイルにドロップされるファイルからパスを取得する実行可能なbashファイルを作成したかったのです。どうすればそのようなことが可能になりますか?

私はそれをこのように見せたかった: mplayer <get full path to filefile-ending>

実行可能bashファイルをデスクトップに配置したい;)


できればrightclick -> start with mplayer関数が欲しいのですが、作り方がわかりません。

4

3 に答える 3

7

$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
于 2018-03-26T20:45:38.743 に答える
3

試す:

#!/bin/bash
mplayer "$1"

ドロップされたファイルのファイルパスは、最初のコマンドライン引数としてスクリプトファイルに渡されます。

于 2012-05-01T03:28:45.070 に答える
1

開いたターミナルで

mate-terminalgnome-terminal、またはkonsoleを使用すると、ドラッグアンドドロップを使用してウィンドウを表示できます。

これにより、URLがチップとして送信され、スペースが追加されますが、エンドラインは送信されませ

このために、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
  • 最初に読み取ると、何かが発生しているかどうか、またはループが終了しているかどうかが判断されます。
  • タイムアウトが非常に短い2番目のループは、ドロップされたURLを単一の文字列として読み取ります
  • read -a req文字列を分割して最初の部分のみを考慮します
于 2020-08-08T17:19:05.537 に答える