Bash Script per trascinare e rilasciare un file in una nuova posizione

8

Sono sicuro che mi prenderò il culo per questa domanda, ma non riesco a capirlo. Sono nuovo nello scripting di bash, quindi non esagerare con me ...

Voglio poter trascinare e rilasciare un file su un'applicazione desktop, che richiama quindi uno script bash che sposta tale file in una posizione designata all'interno dello script bash. Ecco cosa c'è finora.

Script di Bash

#! /bin/bash

mv $file /path/to/new/directory

Tuttavia, non riesco a capire come inserire $file come variabile quando lo trascino su un'applicazione desktop. Come posso fare questo?

Motivo: ho dei documenti che devo leggere in una cartella e, una volta letti, li metto in un'altra cartella. Fondamentalmente voglio solo renderlo facile farlo.

Grazie, Paul

    
posta PaulFrater 04.04.2016 - 12:54

3 risposte

24
  1. Crea uno script di bash con i seguenti contenuti:

    #!/bin/bash
    mv "" "PATH_TO_NEW_DIRECTORY"
    
  2. Crea un file .desktop con i seguenti contenuti:

    [Desktop Entry]
    Name=Document Mover
    Exec=PATH_TO_SCRIPT_FILE %U
    Type=Application
    
  3. Modifica PATH_TO_NEW_DIRECTORY e PATH_TO_SCRIPT_FILE a tuo piacimento.

  4. Fai chmod +x script_name

  5. Trascina i file nel file .desktop.

  6. Fatto!.

risposta data Slug45 04.04.2016 - 13:07
14

Non c'è bisogno di uno script. Crea un collegamento a PATH_TO_NEW_DIRECTORY dove ti serve. Quindi trascina il file sul link

    
risposta data Jean-Marie 04.04.2016 - 15:29
2

Che cosa dice @ Slug45 è completamente corretto. Tuttavia, manca una spiegazione.

Quando si trascina e rilascia un file su un file eseguibile (o su un collegamento a uno), tale eseguibile viene eseguito con il percorso del file trascinato come argomento. Questo è esattamente lo stesso su Windows (non che sia davvero importante qui).

Bash ha un modo semplice di trattare argomenti. Usa "[email protected]" (con le virgolette) per ottenere un array di tutti gli argomenti (utile ad esempio in un ciclo for..in). [email protected] , "$*" e $* fanno cose simili, ma quasi sempre vuoi "[email protected]" . Vedi qui per ulteriori informazioni sulle specifiche.

Inoltre, puoi accedere direttamente ad argomenti specifici come $X dove X è il numero di arg. Ad esempio:

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

Negli script di grandi dimensioni, è meglio assegnare quelli alle variabili nominate:

$ 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
    
risposta data Duncan X Simpson 07.04.2016 - 20:14

Leggi altre domande sui tag