Как загрузить репозиторий GitHub как .zip с помощью командной строки

Ваш файл не начинается с #!/bin/bash, он начинается с трехбайтовой последовательности 357 273 277 (где каждый байт выводится в восьмеричном, то есть ef bb bf в более обычном шестнадцатеричном формате) является UTF-8 кодирование символа Unicode U + FEFF ZERO WIDTH NO-BREAK SPACE. Обратите внимание на различие между кодированием символов (соответствие между символами или последовательностью символов и последовательностей байтов, таких как UTF-8) и набор символов (соответствие между символами и их представлением, например Unicode), потому что это важно здесь. [ ! d0]

Символ U + FEFF также называется символьным кодированием . Этот символ используется в начале текстовых файлов, закодированных в UTF-16. UTF-16 использует представление на основе единиц из двух байтов, а байты внутри каждого блока могут быть в любом порядке: набор символов (он должен быть согласован внутри одного текстового файла). Символ BOM используется для указания конечности файла, закодированного в UTF-16 (симметричный символ U + FFFE целенаправленно не назначен, поэтому первые два байта могут быть действительны только в одной из двух возможных конформаций).

Интерпретация спецификации U + FEFF имеет смысл только в кодировках, которые имеют порядок байтов, например UTF-16. Кодировка UTF-8 не имеет понятия байтового порядка, так как символы кодируются в последовательности байтов (с переменным размером) с четко определенным порядком. Поэтому в UTF-8 последовательность байтов ef bb bf является только символом U + FEFF, который является еще одним символом Unicode, отличным от ASCII.

Bash, как и многие другие программы, рассматривает все не- UTF -16 символов как обычные символы, которые могут отображаться в строках. Для bash строки содержат голые слова. Это имеет то преимущество, что bash может работать с вводом любой кодировки, если эта кодировка является надмножеством ASCII, то есть символы в наборе ASCII кодируются как один байт с их значением кодировки ASCII. UTF-8 является такой кодировкой. U + FEFF - это пространство с нулевой шириной и поэтому невидимо для людей, но оно очевидно для программ. Программы, которые интерпретируют их ввод в Юникоде, могут рассматривать его как символ пробела, но программы, которые интерпретируют их ввод как ASCII плюс бессмысленные символы, отличные от ASCII, не имеют.

В вашем файле bash видит начальную последовательность 14 байтов, которые он анализирует как обычные символы: ef bb bf 23 21 2f 62 69 6e 2f 62 61 73 68. Первые три кодируют U + FEFF в кодировке UTF-8; Анализатор bash не заботится о кодировании и рассматривает их как три обычных персонажа. Четвертый символ # не является символом начала комментария, потому что он не находится в начале слова. Полученное 14-символьное слово интерпретируется как имя команды, и команда не имеет этого имени.

Скрипты оболочки, как и большинство других программных текстов, должны быть записаны в кодировке, совместимой с ASCII. Убедитесь, что ваш редактор не добавляет ложных символов, таких как возврат каретки перед новыми символами (кодировка Windows окончаний строк, но программы Unix обрабатывают возврат каретки как обычный символ) или U + FEFF в начале. U + FEFF - это знак байтового порядка только в начале файла, закодированного в UTF-16; когда он используется в начале файла, закодированного в UTF-8, это просто бесполезное пространство в начале. Если редактор добавляет U + FEFF в начале файла в UTF-8, это ошибка.

В дополнение ко всему этому, строка shebang не полезна в верх .bashrc. Хотя это не наносит никакого вреда (вред здесь был, потому что у вас фактически не было действующей линии shebang), это ложно и потенциально запутывает. Этот файл никогда не выполняется как отдельный сценарий.

2
задан 26 July 2017 в 09:27

3 ответа

Из комментариев, которые я видел, вы действительно говорите о GitHub.

Это не будет работать так, потому что:

Загрузка проекта на GitHub заставляет сервер GitHub сначала упаковать ваши проект как zip, а затем перенаправляет вам временную ссылку, в которой вы получаете свой zip ..

эта ссылка будет работать только в течение определенного времени, а GitHub удалит ваш zip-файл со своих серверов .. [!d5 ]

Итак, что вы получаете с wget - это просто страница html, которая будет перенаправлять вас, как только будет создан ваш zip-файл.

Как предлагается использовать

git clone http://github.com/<yourRepoLink> <optional local path where to store>

для загрузки git repo ... Если по какой-либо причине (например, для передачи его другим) вам нужно это явно как zip, вы все равно можете упаковать его после завершения клонирования.

3
ответ дан 22 May 2018 в 20:10
  • 1
    После клонирования сделайте git archive -o output.zip, если zip-файл по-прежнему необходим – Ferrybig 30 July 2017 в 12:14

Из комментариев, которые я видел, вы действительно говорите о GitHub.

Это не будет работать так, потому что:

Загрузка проекта на GitHub заставляет сервер GitHub сначала упаковать ваши проект как zip, а затем перенаправляет вам временную ссылку, в которой вы получаете свой zip ..

эта ссылка будет работать только в течение определенного времени, а GitHub удалит ваш zip-файл со своих серверов ..

Итак, что вы получаете с wget - это просто страница html, которая будет перенаправлять вас, как только будет создан ваш zip-файл.

Как предлагается использовать

git clone http://github.com/<yourRepoLink> <optional local path where to store>

для загрузки git repo ... Если по какой-либо причине (например, для передачи его другим) вам нужно это явно как zip, вы все равно можете упаковать его после завершения клонирования.

4
ответ дан 18 July 2018 в 09:39

Из комментариев, которые я видел, вы действительно говорите о GitHub.

Это не будет работать так, потому что:

Загрузка проекта на GitHub заставляет сервер GitHub сначала упаковать ваши проект как zip, а затем перенаправляет вам временную ссылку, в которой вы получаете свой zip ..

эта ссылка будет работать только в течение определенного времени, а GitHub удалит ваш zip-файл со своих серверов ..

Итак, что вы получаете с wget - это просто страница html, которая будет перенаправлять вас, как только будет создан ваш zip-файл.

Как предлагается использовать

git clone http://github.com/<yourRepoLink> <optional local path where to store>

для загрузки git repo ... Если по какой-либо причине (например, для передачи его другим) вам нужно это явно как zip, вы все равно можете упаковать его после завершения клонирования.

4
ответ дан 24 July 2018 в 19:23

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

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