Загрузите исполняемый сценарий с GitHub, сохраняющего +x полномочия

Я хочу сделать репозиторий GitHub всех соответствующих сценариев, которые я отправил здесь как ответы.

Но сохранять его в конечном счете простым для пользователей, я хотел бы дать им единственную команду для загрузки файла сценария с моего репозитория непосредственно, не имея необходимость устанавливать git сначала к git clone весь репозиторий.

Я знаю, что могу использовать wget для загрузки единственного файла, но когда я буду использовать "Необработанную" ссылку файла (например, https://github.com/AskUbuntu-Answers/dupe-check/raw/master/dupe-check), файл получит значение по умолчанию umask полномочия и поэтому не имеют никакого набора битов выполнения. Но я не хочу это, пользователь все еще должен работать chmod +x.

Файлы сценария фиксируются продвинутые репозиторию с корректными битами выполнения, они также сохраняются, когда я использую git clone получить весь репозиторий.

Что самый простой путь состоит в том, чтобы получить (и иногда автоматически выполнить), единственный файл от GitHub, сохраняющего его разрешение выполнения, не имея необходимость устанавливать git и клонирование всего репозитория?

1
задан 5 March 2016 в 20:01

2 ответа

Я предложил бы, чтобы Вы использовали суть вместо репозитория мерзавца. Репозиторий по своей природе, как предполагается, является набором файлов. Суть, с другой стороны, является единственными файлами. Что-то вроде этого

wget https://gist.githubusercontent.com/SergKolo/d77dd46e9d936b5871e1829a2afd79c3/raw/726f39be5e0a939e06ed89239d2c350451b81316/get_unity_viewports.sh \
&& chmod +x ./get_unity_viewports.sh

, Но если Вы настаиваете на том, чтобы использовать репозиторий вместо 1 команды, объединяется 2 в 1. Rememeber, что мы можем указать интерпретатор для кода.

curl https://raw.githubusercontent.com/au-answers/dupe-check/master/dupe-check  > dupe-check && python3 dupe-check

И это - то, как это работает

$ curl https://raw.githubusercontent.com/au-answers/dupe-check/master/dupe-check\                                          
>   > dupe-check && python3 dupe-check
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  7580  100  7580    0     0   6484      0  0:00:01  0:00:01 --:--:--  6489
Checked 1 files in total, 0 of them are duplicates by content.

То же с wget

$ wget https://raw.githubusercontent.com/au-answers/dupe-check/master/dupe-check && python3 dupe-check                     
--2016-04-24 21:17:35--  https://raw.githubusercontent.com/au-answers/dupe-check/master/dupe-check
Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 23.235.44.133
Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|23.235.44.133|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 7580 (7.4K) [text/plain]
Saving to: ‘dupe-check.1’

100%[==================================================================================>] 7,580       --.-K/s   in 0s      

2016-04-24 21:17:36 (470 MB/s) - ‘dupe-check.1’ saved [7580/7580]

Checked 2 files in total, 2 of them are duplicates by content.
Here's a list of all duplicate files:

'dupe-check' (./dupe-check)
'dupe-check.1' (./dupe-check.1)

, Вариация на тему

Получает URL необработанного файла путем щелчка правой кнопкой по raw кнопка в github

wget https://github.com/au-answers/dupe-check/raw/master/dupe-check
2
ответ дан 3 December 2019 в 06:59

Получите tarballs!

Даже при том, что GitHub не выставляет это в сайте (по-видимому, они сделали давным-давно), они обеспечивают tar.gz файлы репозиториев.

wget -qO - https://github.com/<user>/repo>/archive/master.tar.gz | tar zx --strip-components=1 <repo>-master/<filename>

<user>, <repo>, <filename> то, чем Вы ожидали бы, что они будут. --strip-components использование должно предотвратить tar от создания каталога, названного в честь repo.

Поэтому:

$ wget -O - https://github.com/au-answers/dupe-check/archive/master.tar.gz | tar zx --strip-components=1 dupe-check-master/dupe-check
--2016-04-25 08:28:50--  https://github.com/au-answers/dupe-check/archive/master.tar.gz
Resolving github.com (github.com)... 192.30.252.128
Connecting to github.com (github.com)|192.30.252.128|:443... connected.
HTTP request sent, awaiting response... 302 Found
Location: https://codeload.github.com/au-answers/dupe-check/tar.gz/master [following]
--2016-04-25 08:28:51--  https://codeload.github.com/au-answers/dupe-check/tar.gz/master
Resolving codeload.github.com (codeload.github.com)... 192.30.252.160
Connecting to codeload.github.com (codeload.github.com)|192.30.252.160|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 2470 (2.4K) [application/x-gzip]
Saving to: ‘STDOUT’

-                                                           100%[========================================================================================================================================>]   2.41K  --.-KB/s    in 0s      

2016-04-25 08:28:52 (21.5 MB/s) - written to stdout [2470/2470]

$ ll dupe-check 
-rwxr-xr-x 1 muru muru 7.5K Mar  5 21:46 dupe-check

Я не убежден, что это - особенно дружественный путь. Дополнительное chmod +x IMO, бесконечно предпочтительный.

Неудачные попытки

Получите zip!

Можно обработать замену относительно zsh для извлечения zip, связанных на GitHub repo страница. GitHub, к счастью, добавляет дополнительные метаданные к zip так, чтобы полномочия были сохранены. unzip на Ubuntu может использовать это для восстановления полномочий. Так:

unzip -j =(wget -O - https://github.com/au-answers/dupe-check/archive/master.zip) dupe-check-master/dupe-check

К сожалению, =() zsh вещь. Это создает надлежащий файл вместо FIFO. Bash не имеет эквивалента. <() всегда FIFO.

Мерзавец единственные файлы

Можно получить единственный файл от использования repo git. Однако GitHub не поддерживает это.

2
ответ дан 3 December 2019 в 06:59

Другие вопросы по тегам:

Похожие вопросы: