Jestem pewien, że dostanę dupę za to pytanie, ale wydaje mi się, że nie potrafię tego rozgryźć. Jestem nowy w skryptowaniu bashów, więc nie przejmuj się ...
Chcę mieć możliwość przeciągania i upuszczania pliku na aplikację komputerową, która następnie wywołuje skrypt bash, który przeniesie ten plik do lokalizacji wskazanej w skrypcie bash. Oto co do tej pory.
Skrypt Bash
#! /bin/bash
mv $file /path/to/new/directory
Jednak nie mogę wymyślić, jak wprowadzić $file
zmienną, gdy przeciągam ją i upuszczam na aplikację komputerową. W jaki sposób mogę to zrobić?
Powód: Mam dokumenty, które muszę przeczytać w jednym folderze, a gdy je przeczytam, umieszczam je w innym folderze. Zasadniczo chcę to po prostu ułatwić.
Dzięki, Paul
command-line
bash
scripts
PaulFrater
źródło
źródło
Odpowiedzi:
Utwórz plik skryptu bash z następującą zawartością:
Utwórz plik .desktop z następującą zawartością:
Zmień PATH_TO_NEW_DIRECTORY i PATH_TO_SCRIPT_FILE według własnych upodobań.
Zrobić
chmod +x script_name
Przeciągnij pliki do pliku .desktop.
Gotowy!.
źródło
$file
zamiast"$file"
(lub"${file}"
) może sprawić kłopoty.bash
tutaj używać ;#!/bin/sh
wystarczy zrobić to samo (chociaż i tak może to być powiązane zbash
wieloma systemami).Nie potrzebujesz skryptu. Utwórz link do PATH_TO_NEW_DIRECTORY tam, gdzie jest potrzebny. Następnie przeciągnij plik do łącza
źródło
To, co powiedział @ Slug45, jest całkowicie poprawne. Brakuje jednak wyjaśnienia.
Podczas przeciągania i upuszczania pliku na plik wykonywalny (lub łącze do jednego), plik wykonywalny jest uruchamiany ze ścieżką do przeciąganego pliku jako argumentem. To jest dokładnie to samo w systemie Windows (nie to, że naprawdę ma to znaczenie tutaj).
Bash ma prosty sposób radzenia sobie z argumentami. Użyj
"$@"
(z cudzysłowami), aby uzyskać tablicę wszystkich argumentów (przydatne na przykład w pętli for..in).$@
,"$*"
I$*
robić podobne rzeczy, ale prawie zawsze chcą"$@"
. Zobacz tutaj, aby uzyskać więcej informacji na temat szczegółów.Ponadto można bezpośrednio uzyskać dostęp do określonych argumentów, ponieważ
$X
gdzie X jest liczbą argumentów. Na przykład:W dużych skryptach lepiej przypisać je do nazwanych zmiennych:
źródło