Bash-Skript zum Ziehen und Ablegen einer Datei an einen neuen Ort

8

Ich bin mir sicher, dass ich für diese Frage meinen Hintern bekommen werde, aber ich kann es einfach nicht herausfinden. Ich bin neu im Bash-Scripting, also geh einfach zu mir ...

Ich möchte eine Datei per Drag & Drop auf eine Desktop-Anwendung ziehen können, die dann ein Bash-Skript aufruft, das diese Datei an einen Ort verschiebt, der im bash-Skript angegeben ist. Hier ist was bisher.

Bash-Skript

#! /bin/bash

mv $file /path/to/new/directory

Ich kann jedoch nicht herausfinden, wie $file als Variable eingegeben wird, wenn ich es auf eine Desktop-Anwendung ziehe und dort ablege. Wie kann ich das tun?

Grund: Ich habe Papiere, die ich in einem Ordner lesen muss, und nachdem ich sie gelesen habe, lege ich sie in einen anderen Ordner. Ich möchte es im Grunde einfach machen.

Danke, Paul

    
PaulFrater 04.04.2016, 12:54

3 Antworten

24
  1. Erstellen Sie eine Bash-Skriptdatei mit folgendem Inhalt:

    #!/bin/bash
    mv "" "PATH_TO_NEW_DIRECTORY"
    
  2. Erstellen Sie eine .desktop-Datei mit folgendem Inhalt:

    [Desktop Entry]
    Name=Document Mover
    Exec=PATH_TO_SCRIPT_FILE %U
    Type=Application
    
  3. Ändern Sie PATH_TO_NEW_DIRECTORY und PATH_TO_SCRIPT_FILE nach Ihren Wünschen.

  4. Machen Sie chmod +x script_name

  5. Ziehen Sie Dateien in die .desktop-Datei.

  6. Fertig!.

Slug45 04.04.2016, 13:07
14

Keine Notwendigkeit für ein Skript. Erstellen Sie eine Verknüpfung zu PATH_TO_NEW_DIRECTORY, wo Sie sie benötigen. Ziehen Sie die Datei dann auf den Link

    
Jean-Marie 04.04.2016 15:29
2

Was @ Slug45 gesagt hat, ist völlig richtig. Es fehlt jedoch eine Erklärung.

Wenn Sie eine Datei in eine ausführbare Datei (oder einen Link zu einer Datei) ziehen und ablegen, wird diese ausführbare Datei mit dem Pfad zur gezogenen Datei als Argument ausgeführt. Das ist unter Windows genau so (nicht dass es hier wirklich wichtig ist).

Bash hat einen einfachen Weg, mit Argumenten umzugehen. Verwenden Sie "[email protected]" (mit den Anführungszeichen) , um ein Array aller Argumente zu erhalten (nützlich z. B. in einer for..in-Schleife). [email protected] , "$*" und $* machen ähnliche Dinge, aber Sie wollen fast immer "[email protected]" . Weitere Informationen zu den Einzelheiten finden Sie hier .

Außerdem können Sie direkt auf bestimmte Argumente als $X zugreifen, wobei X die Arg-Nummer ist. Zum Beispiel:

$ cat ./args.sh
echo 
echo 
echo 
$ ./args.sh foo bar baz
foo
bar
baz
$

In großen Skripten ist es besser, diese den benannten Variablen zuzuordnen:

$ cat music.sh
#!/bin/bash
# Usage: ./music.sh Artist Album Song
ARTIST=
ALBUM=
SONG=

if [ $ARTIST -eq "Nickelback" ]; then exit; fi

mplayer ~/Music/$ARTIST/$ALBUM/$SONG.mp3
    
Duncan X Simpson 07.04.2016 20:14

Tags und Links