Ich bin mir sicher, dass ich meinen Arsch für diese Frage bekommen werde, aber ich kann es einfach nicht herausfinden. Ich bin neu im Bash-Scripting, also schont mich ...
Ich möchte in der Lage sein, eine Datei per Drag & Drop auf eine Desktop-Anwendung zu ziehen, die dann ein Bash-Skript aufruft, das diese Datei an einen im Bash-Skript angegebenen Speicherort verschiebt. Hier ist was für ein bisher.
Bash-Skript
#! /bin/bash
mv $file /path/to/new/directory
Ich kann jedoch nicht herausfinden, wie $file
ich die Variable als Variable eingeben und ablegen kann, wenn ich sie auf eine Desktop-Anwendung ziehe und dort ablege. Wie kann ich das machen?
Grund: Ich habe Papiere, die ich in einem Ordner lesen muss, und sobald ich sie gelesen habe, lege ich sie in einen anderen Ordner. Ich möchte es im Grunde nur einfach machen, dies zu tun.
Danke, Paul
quelle
Antworten:
Erstellen Sie eine Bash-Skriptdatei mit den folgenden Inhalten:
Erstellen Sie eine .desktop-Datei mit den folgenden Inhalten:
Ändern Sie PATH_TO_NEW_DIRECTORY und PATH_TO_SCRIPT_FILE nach Ihren Wünschen.
Tun
chmod +x script_name
Ziehen Sie Dateien in die .desktop-Datei.
Erledigt!.
quelle
$file
anstelle von"$file"
(oder"${file}"
) kann zu Problemen führen.bash
;#!/bin/sh
ist ausreichend, um dasselbe zu tun (obwohl esbash
auf vielen Systemen ohnehin damit verbunden sein kann).Kein Skript erforderlich. Erstellen Sie einen Link zu PATH_TO_NEW_DIRECTORY, wo Sie ihn benötigen. Ziehen Sie dann die Datei auf den Link
quelle
Was @ Slug45 gesagt hat, ist völlig richtig. Es fehlt jedoch eine Erklärung.
Wenn Sie eine Datei per Drag & Drop auf eine ausführbare Datei (oder einen Link zu einer) ziehen, wird diese ausführbare Datei mit dem Pfad zur gezogenen Datei als Argument ausgeführt. Dies ist genau das gleiche unter Windows (nicht, dass es hier wirklich wichtig ist).
Bash hat eine einfache Möglichkeit, mit Argumenten umzugehen. Verwenden Sie
"$@"
(mit den Anführungszeichen) , um ein Array aller Argumente abzurufen (nützlich zum Beispiel in einer for..in-Schleife).$@
,,"$*"
und$*
mache ähnliche Dinge, aber du willst fast immer"$@"
. Sehen Sie hier für weitere Informationen über die Besonderheiten.Darüber hinaus können Sie direkt auf bestimmte Argumente zugreifen,
$X
wobei X die Argumentnummer ist. Zum Beispiel:In großen Skripten ist es besser, diese benannten Variablen zuzuweisen:
quelle