Я уверен, что мне дадут мне задницу за этот вопрос, но я просто не могу понять это. Я новичок в написании сценариев bash, так что будьте спокойны со мной ...
Я хочу иметь возможность перетаскивать файл в настольное приложение, которое затем вызывает скрипт bash, который переместит этот файл в место, обозначенное в скрипте bash. Вот то, что есть до сих пор.
Скрипт Bash
#! /bin/bash
mv $file /path/to/new/directory
Однако я не могу понять, как ввести $file
в качестве переменной, когда перетаскиваю ее в настольное приложение. Как я могу это сделать?
Причина: у меня есть документы, которые мне нужно прочитать в одной папке, и после прочтения я помещаю их в другую папку. Я просто хочу, чтобы это было легко сделать.
Спасибо, Пол.
Создают удар scriptfile со следующим содержанием:
#!/bin/bash
mv "$1" "PATH_TO_NEW_DIRECTORY"
Создают .desktop файл со следующим содержанием:
[Desktop Entry]
Name=Document Mover
Exec=PATH_TO_SCRIPT_FILE %U
Type=Application
Изменение PATH_TO_NEW_DIRECTORY и PATH_TO_SCRIPT_FILE к Вашей симпатии.
Делают chmod +x script_name
, Перетаскивают файлы в .desktop файл.
Сделанный!.
Никакая потребность в сценарии. Создайте ссылку на PATH_TO_NEW_DIRECTORY, где Вам нужен он. Затем перетащите файл к ссылке
Какой сказанный @Slug45 абсолютно корректен. Однако это испытывает недостаток в объяснении.
, Когда Вы перетаскиваете файл на исполняемый файл (или ссылка на одну), тот исполняемый файл выполняется с путем к перетащенному файлу как аргумент. Это - точно то же в Windows (не, что это действительно имеет значение здесь).
Bash имеет простой способ иметь дело с аргументами. Используйте "$@"
(с кавычками) для получения массива всех аргументов (полезный, например, в для.. в цикле). $@
, "$*"
, и $*
делают подобные вещи, но Вы почти всегда хотите "$@"
. См. здесь для получения дополнительной информации о специфических особенностях.
, Кроме того, можно непосредственно получить доступ к определенному args как $X
, где X число аргумента. Например:
$ cat ./args.sh
echo $1
echo $2
echo $3
$ ./args.sh foo bar baz
foo
bar
baz
$
В больших сценариях, лучше присвоить сценарии к именованным переменным:
$ cat music.sh
#!/bin/bash
# Usage: ./music.sh Artist Album Song
ARTIST=$1
ALBUM=$2
SONG=$3
if [ $ARTIST -eq "Nickelback" ]; then exit; fi
mplayer ~/Music/$ARTIST/$ALBUM/$SONG.mp3
file.txt
, чтобы проверить, соответствует ли это тому, что Вы видите в браузере? Кроме того, страницы могут содержать динамично сгенерированное содержание с помощью JavaScript и т.д. и Вас won' t видят что когдаcurl
луг страница. – Olorin 12 August 2017 в 18:21