Bash スクリプトでドラッグ アンド ドロップして複数のファイルを選択できるようにする方法

Bash スクリプトでドラッグ アンド ドロップして複数のファイルを選択できるようにする方法

私は KDE Plasma 5 デスクトップ環境で Dolphin を使用しています。ここでは、Dolphin からファイルをドラッグしてアイコン付きの ".desktop" 定義スクリプトにドロップすると、たとえば次のように実行される、正確に 1 つのファイルを処理できる bash スクリプトを作成しました/home/user/scripts/list_all_drags.sh %f

これは、1 つのファイルで機能します。次に、Dolphin から選択した複数のファイルをスクリプトにドラッグし、スクリプトで各ファイル エントリの手順を詳しく説明したいと思います。1 つのファイルではなく%F複数のファイルに対して使用しましたが、これは機能しません。%f

何が起こるかというと、ファイル エントリごとに 1 つずつ、複数のターミナル ウィンドウが開かれます。必要なのは、ドロップされたファイル エントリごとに、複数のターミナル ウィンドウを開かずに最初の 1 つのターミナル ウィンドウだけを 1 つのスクリプトで実行するコードです。つまり、キーを押さずに、ドロップされたファイルでコマンドを開始または実行する「ループ」です。

%Fスクリプト内のパラメータ値をどのように処理すればよいかわかりません。

答え1

特に、%F を使用して複数のパラメータを処理する方法など、正しい答えを見つけたと思います。

まず、ファイルマネージャでエントリ (ファイル) を選択します。次に、マークされたすべてのファイルをスクリプト アイコンにドラッグし、そのアイコンにドロップします。「/home/user/scripts/myscript.sh %F」で実行されるこのスクリプト内には、選択されたすべてのファイル エントリを詳細化するルーチンがあります。

どのくらい多くのパラメータ (ファイル) を一括選択して詳細化できるかはわかりませんが、このルーチンを使用すると、0 より大きいすべての単一パラメータ (選択したマークされたファイル) をカウントできます。

while (( $# > 0 )) # or [ $# -gt 0 ] do echo "$1" shift done

「echo $1」の代わりにこう言うことができます

file = $1

そして$fileを操作するサブルーチンを呼び出します

この投稿に特別な感謝を申し上げます: シェルで10を超えるパラメータを処理する方法

関連情報