Вы можете использовать инструмент командной строки Linux / Unix с открытым исходным кодомgdrive
.
Для установки:
Загрузите двоичный файл. Выберите тот, который соответствует вашей архитектуре, например gdrive-linux-x64
.
Скопируйте его на свой путь.
sudo cp gdrive-linux-x64 /usr/local/bin/gdrive;
sudo chmod a+x /usr/local/bin/gdrive;
Чтобы использовать:
Определите идентификатор папки Google Диска. Для этого перейдите в папку для загрузки с помощью веб-клиента drive.google.com. Теперь посмотрите на URL-адрес в адресной строке браузера, он покажет что-то вроде https://drive.google.com/drive/folders/0B7_OwkDsUIgFWXA1B2FPQfV5S8H
. Получите строку после последнего /
и скопируйте ее в буфер обмена. Это идентификатор папки.
Загрузите папку. Конечно, вместо этого используйте ID вашей папки в следующей команде.
gdrive download --recursive 0B7_OwkDsUIgFWXA1B2FPQfV5S8H
При первом использовании инструмент должен получить права доступа к API Google Диска. Для этого он покажет вам ссылку, которую вы должны посетить в браузере, а затем вы получите код подтверждения, который нужно скопировать и вставить обратно в инструмент. После этого загрузка начнется автоматически. Индикатора прогресса нет, но вы можете наблюдать за прогрессом в файловом менеджере или втором терминале.
Источник:Комментарий Тоби к вопросу stackoverflow.com. Ответ адаптирован из моего аналогичного ответа .
На самом деле подстановка команд удаляет завершающие символы новой строки, а не добавляет их. Но если вы используете echo
для печати переменной позже, она добавляет ее по умолчанию.
Добавление завершающего символа x
или чего-то подобного действительно несколько хакерское, но это, вероятно, самый простой способ, и он работает во всех оболочках. Вы можете сделать его немного короче, используя echo x
вместо printf '%s' 'x'
.
Поскольку вы упомянули read
, вы могли бы использовать что-то подобное (и в Bash ):
IFS= read -rd '' var < <(newlinetest with)
Я оставлю вам решать, красивее ли это, чем это:
var=$(newlinetest with; echo x)
var=${var%x}
Хотя существует потенциальная разница в производительности между ними. В первом подстановка процесса создает канал, который read
считывает из по одному байту за раз , чтобы избежать переполнения разделителя (Здесь это не имеет значения, но оболочка не знает, что. )Подстановка команд будет считываться большими блоками и, следовательно, будет выполняться быстрее при больших выходных данных.