git,bash - 从一个远端git库只下载一个文件的方法
文章目录
- git,bash - 从一个远端git库只下载一个文件的方法
- 概述
- 笔记
- 写一个bash脚本来自动下载
- get_github_raw_file_from_url.sh
- reanme_file.sh
- find_key_value.sh
- 执行命令
- END
git,bash - 从一个远端git库只下载一个文件的方法
概述
github上有很多大佬上传了电子书库,如果只相中一本书,也要去迁出整个库,急死个人。
试了 Git稀疏检出 的方法,不现实,因为对于一个巨大的库,那也下载好久啊(git库的元数据就很大)。
只能是用git库页面的下载raw文件的方法,只是说,是用工具来下载,还是手工点击用浏览器来下载的区别。
笔记
有的库,是卖书的人上传的,将书对应的pdf都删了,所以也没法下载raw文件。
所以只要浏览到库中的书,确实存在,就可以用下载raw文件。

如果想用bash脚本来下载,只是收集url, 可以F12来找raw file url.
开始没明白,直接下载网页上的url, 实际下载的是html.

下载后,发现.pdf尺寸不对,才200K+,打开一看,原来是这个页面的html.
在html中找raw file url
"rawBlobUrl":"https://github.com/weaiken/ebook/raw/refs/heads/master/03_operating_system/UNIX%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F%E8%AE%BE%E8%AE%A1.pdf
在git bash窗口中,按照自己找到的实际raw file url来下载就Ok了。
curl -L -o UNIX操作系统设计1.pdf https://github.com/weaiken/ebook/raw/refs/heads/master/03_operating_system/UNIX%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F%E8%AE%BE%E8%AE%A1.pdf

写一个bash脚本来自动下载
get_github_raw_file_from_url.sh
#!/bin/bash# @file get_github_raw_file_from_url.sh
# @brief 从url中提取文件名(包括后缀)
# e.g. get_github_raw_file_from_url.sh https://github.com/weaiken/ebook/blob/master/03_operating_system/UNIX%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F%E8%AE%BE%E8%AE%A1.pdfclear# 参数检查
if [ $# -ne 1 ]; thenecho "错误:需要且只能输入一个URL参数" >&2exit 1
fi# 提取URL中的文件名部分
encoded_file=$(basename "$1") # 或使用:encoded_file=${1##*/}# URL解码函数
urldecode() {local encoded=$1printf '%b' "${encoded//%/\\x}" 2>/dev/null | sed 's/+/ /g'
}# 执行解码并输出结果
decoded_file=$(urldecode "$encoded_file")
echo "原始文件为: $encoded_file"
echo "提取的中文文件名:$decoded_file"curl -L -o $decoded_file $1 ./rename_file.sh $decoded_file $decoded_file htmlhtml_file="$decoded_file.html"
echo "html file = $html_file"raw_url=$(./find_key_value.sh $html_file "rawBlobUrl")
echo "raw_url = $raw_url"curl -L -o $decoded_file $raw_urlecho "file download over : $decoded_file"
reanme_file.sh
#!/bin/bash# @file reanme_file.sh
# @brief 将参数1的文件名 改名为 参数2.参数3
# e.g. rename_file.sh a.pdf a.pdf html
# a.pdf => a.pdf.html
set -euo pipefail# 参数校验
if [ $# -ne 3 ]; thenecho "错误:需要3个参数,用法:$0 原文件名 前缀 后缀" >&2exit 1
fioriginal_file="$1"
new_name="$2.$3"# 文件存在性检查
if [ ! -f "$original_file" ]; thenecho "错误:文件 '$original_file' 不存在" >&2exit 1
fi# 执行重命名
mv -v "$original_file" "$new_name"
echo "重命名成功:$original_file -> $new_name"
find_key_value.sh
#!/bin/bash# find_key_value.sh
# 用法:./a.sh <html文件> <键名>html_file=$1
key_name=$2# 使用正则表达式匹配JSON格式的键值对
value=$(grep -oP "\"$key_name\"\s*:\s*\"\K[^\"]+" "$html_file" | head -1)# 验证结果并输出
if [ -z "$value" ]; thenecho "未找到 $key_name 对应的值" >&2exit 1
elseecho "$value"exit 0
fi
执行命令
git库文件的html url, 可以从浏览器url标题栏拷贝https://www.github.com/weaiken/ebook/blob/master/03_operating_system/UNIX操作系统设计.pdf
在git bash命令行窗口中执行命令
脚本写的粗糙,必须保证网络正常。
./get_github_raw_file_from_url.sh https://github.com/weaiken/ebook/blob/master/03_operating_system/UNIX%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F%E8%AE%BE%E8%AE%A1.pdf

这个工具脚本已经实现了从库文件浏览到的实际html用户页面下载实际的库文件对应的raw原始文件。
END
相关文章:
git,bash - 从一个远端git库只下载一个文件的方法
文章目录 git,bash - 从一个远端git库只下载一个文件的方法概述笔记写一个bash脚本来自动下载get_github_raw_file_from_url.shreanme_file.shfind_key_value.sh执行命令 END git,bash - 从一个远端git库只下载一个文件的方法 概述 github上有很多大佬上传了电子书库…...
python生成的exe文件防止反编译(pyinstaller加密)
python生成的exe文件可以轻松的被破解,为了防止反编译,知乎友友们给出了很多不同的见解,其中主流的回答是pyinstaller加密和niutka打包python,本篇介绍的方法是第一种,pyinstaller打包的时候进行加密,防破解…...
Android移动应用开发实践-1-下载安装和简单使用Android Studio 3.5.2版本(频频出错)
一、下载安装 1.Android Studio3.5.2下载地址:Android Studio3.5.2下载地址 其他版本下载地址:其他版本下载地址 2.安装教程(可以多找几个看看) 安装 | 手把手教你Android studio 3.5.2安装(安装教程)_a…...
Android Audio实战——音频相关基础概念(附)
Android Audio 开发其实就是媒体源数字化的过程,通过将声波波形信号通过 ADC 转换成计算机支持的二进制的过程叫做音频采样 (Audio Sampling)。采样 (Sampling) 的核心是把连续的模拟信号转换成离散的数字信号。 一、声音的属性 1、响度 (Loudness) 响度是指人类可以感知到的…...
5分钟使用Docker部署Paint Board快速打造专属在线画板应用
文章目录 前言1.关于Paint Board2.本地部署paint-board3.使用Paint Board4.cpolar内网穿透工具安装5.创建远程连接公网地址6.固定Paint Board公网地址 💡 推荐 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住…...
vue实现根据点击或滑动展示对应高亮
页面需求: 点击左侧版本号,右侧展示对应版本内容并置于顶部右侧某一内容滚动到顶部时,左侧需要展示高亮 实现效果: 实现代码: <template><div><div class"historyBox pd-20 bg-white">…...
java练习(41)
ps:题目来自力扣 最接近的三数之和 给你一个长度为 n 的整数数组 nums 和 一个目标值 target。请你从 nums 中选出三个整数,使它们的和与 target 最接近。 返回这三个数的和。 假定每组输入只存在恰好一个解。 import java.util.Arrays;class Solut…...
【二分查找 图论】P8794 [蓝桥杯 2022 国 A] 环境治理|普及
本文涉及的基础知识点 本博文代码打包下载 C二分查找 C图论 [蓝桥杯 2022 国 A] 环境治理 题目描述 LQ 国拥有 n n n 个城市,从 0 0 0 到 n − 1 n - 1 n−1 编号,这 n n n 个城市两两之间都有且仅有一条双向道路连接,这意味着任意两…...
Docker镜像面试题及参考答案
目录 Docker 镜像与容器的关系是什么?如何理解 “镜像为静态定义,容器为运行时实体”? 解释 Docker 镜像的联合文件系统(UnionFS)分层机制,为何这种设计能优化存储效率? Docker 镜像的 LABEL 标签有什么作用?如何通过标签管理多版本镜像? 镜像的 latest 标签有哪些…...
浅显易懂HashMap的数据结构
HashMap 就像一个大仓库,里面有很多小柜子(数组),每个小柜子可以挂一串链条(链表),链条太长的时候会变成更高级的架子(红黑树)。下面用超简单的例子解释: 壹…...
Fisher信息矩阵与Hessian矩阵:区别与联系全解析
Fisher信息矩阵与Hessian矩阵:区别与联系全解析 在统计学和机器学习中,Fisher信息矩阵(FIM)和Hessian矩阵是两个经常出现的概念,它们都与“二阶信息”有关,常用来描述函数的曲率或参数的敏感性。你可能听说…...
【HTML— 快速入门】HTML 基础
准备工作 vscode下载 百度网盘 Subline Text 下载 Sublime Text下载 百度网盘 vscode 下载 Sublime Text 是一款轻量好用的文本编辑器,我们在写前端代码时,使用 Sublime Text 打开比使用记事本打开,得到的代码体验更好,比 vscode…...
Docker 与 Serverless(无服务器架构)
Serverless(无服务器架构) 是一种新的云计算架构,它通过让开发者专注于业务逻辑而无需管理服务器基础设施,来简化应用的开发和部署。Serverless 模型通常由云服务提供商管理基础设施的所有方面,而开发者只需提供代码和…...
DMA 定制固件教程:小白跟做即得单人固件,超详细纯喂饭教程,100% 成功秘籍!FPGA仿真1:1、中断逻辑和TLP核心都在。
DMA 定制固件教程 小白跟着操作做可以做出的单人固件 图文教程 链接:https://docs.qq.com/doc/DQ01lVGtHelROVHNv 本图文教程包含内容: 一、DMA仿真技术采集真实单人固件 二、网卡TLP仿真固件生成 三、DMA仿真技术io、中断逻辑,从零仿真 四、…...
嵌入式开发:傅里叶变换(4):在 STM32上面实现FFT(基于STM32L071KZT6 HAL库+DSP库)
目录 步骤 1:准备工作 步骤 2:创建 Keil 项目,并配置工程 步骤 3:在MDK工程上添加 CMSIS-DSP 库 步骤 5:编写代码 步骤 6:配置时钟和优化 步骤 7:调试与验证 步骤 8:优化和调…...
飞鱼科技游戏策划岗内推
协助策划完成相关工作,包括但不仅限于策划配置,资料搜集,游戏体验; 游戏策划相关作品;游戏大赛经历;游戏demo制作经历;游戏公司策划岗位实习经历优先 内推码 DSZP7YFU...
前端如何进行性能优化
1. 减少HTTP请求 合并文件:将多个CSS或JavaScript文件合并为一个,减少请求次数。 使用CSS Sprites:将多个小图标合并为一张大图,通过背景定位显示。 内联小资源:将小的CSS或JavaScript直接嵌入HTML中,减少…...
大白话Vuex 核心概念(state、mutations、actions)的使用案例与原理
大白话Vuex 核心概念(state、mutations、actions)的使用案例与原理 Vuex是Vue.js应用程序中专门用来管理状态的工具,就好像是一个大管家,帮你把项目里一些重要的数据和操作管理得井井有条。下面用大白话结合案例来介绍Vuex核心概…...
阿里云ack的创建与实战应用案例
阿里云ack的创建与应用案例 创建前开通ack相关服务:开始创建简单的魔方游戏,熟悉sv与clb自动注册创建部署一个nginx 服务示例:走不同域名访问不同svc资源:为什么需要 Ingress ?创建第一个域名的 Deployment和Service。…...
鸿蒙开发深入浅出01(基本环境搭建、页面模板与TabBar)
鸿蒙开发深入浅出01(基本环境搭建、页面模板与TabBar) 1、效果展示2、下载 DevEco Studio3、创建项目4、新建页面模板5、更改应用信息6、新建以下页面7、Index.ets8、真机运行9、图片资源文件 1、效果展示 2、下载 DevEco Studio 访问官网根据自己的版本…...
Windows 10/11 免费获取 macOS 风格鼠标指针:完整配置指南
Windows 10/11 免费获取 macOS 风格鼠标指针:完整配置指南 【免费下载链接】macOS-cursors-for-Windows Tested in Windows 10 & 11, 4K (125%, 150%, 200%). With 2 versions, 2 types and 3 different sizes! 项目地址: https://gitcode.com/gh_mirrors/ma/…...
三步找回消失的OBS多路推流窗口:新手必看指南
三步找回消失的OBS多路推流窗口:新手必看指南 【免费下载链接】obs-multi-rtmp OBS複数サイト同時配信プラグイン 项目地址: https://gitcode.com/gh_mirrors/ob/obs-multi-rtmp 问题三部曲:你的插件窗口去哪了? "明明安装好了o…...
RevokeMsgPatcher终极指南:Windows平台消息防撤回与多开完整解决方案
RevokeMsgPatcher终极指南:Windows平台消息防撤回与多开完整解决方案 【免费下载链接】RevokeMsgPatcher :trollface: A hex editor for WeChat/QQ/TIM - PC版微信/QQ/TIM防撤回补丁(我已经看到了,撤回也没用了) 项目地址: http…...
Rust Trait 泛型与编译优化策略
Rust作为一门现代系统编程语言,凭借其独特的所有权机制和零成本抽象特性,在性能与安全性之间取得了卓越平衡。其中,Trait泛型系统与编译优化策略的结合,更是Rust高效运行的核心支柱。本文将深入探讨这一技术组合的底层原理与实践价…...
电子电路中的“心脏”:电源谎
前言 Kubernetes 本身并不复杂,是我们把它搞复杂的。无论是刻意为之还是那种虽然出于好意却将优雅的原语堆砌成 鲁布戈德堡机械 的狂热。平台最初提供的 ReplicaSets、Services、ConfigMaps,这些基础组件简单直接,甚至显得有些枯燥。但后来我…...
接口测试——pytest框架续集怀
智能体时代的代码范式转移与 C# 的战略转型 传统的 C# 开发模式,即所谓的“工程导向型”开发,要求开发者创建一个复杂的项目结构,包括项目文件(.csproj)、解决方案文件(.sln)、属性设置以及依赖…...
SPI接口AT25xxx EEPROM驱动开发实战:从硬件描述到应用验证
1. AT25xxx系列EEPROM基础认知 第一次接触SPI接口的存储芯片时,我被AT25xxx系列惊艳到了。相比常见的I2C接口EEPROM,这种芯片就像高速公路换成了八车道——传输速度直接翻倍。记得去年做智能家居网关项目时,需要存储大量设备配置信息…...
保姆级教程:用薛定谔Schrödinger Maestro搞定共价对接,从蛋白配体预处理到实战筛选
从零开始掌握薛定谔Maestro共价对接:药物化学家的实战指南 药物发现领域正在经历一场静默的革命——共价抑制剂重新成为研究热点。与传统的非共价结合药物不同,共价抑制剂能够与靶蛋白形成持久的化学键,往往表现出更高的效力和选择性。但如何…...
Spring Boot 缓存注解的实现原理
Spring Boot缓存注解的实现原理 在现代Web应用中,缓存是提升系统性能的重要手段之一。Spring Boot通过简洁的注解方式,为开发者提供了便捷的缓存功能,其底层实现原理既高效又灵活。本文将深入探讨Spring Boot缓存注解的核心机制,…...
闲鱼自动回复软件工具闪电鱼助手如何下载?
做闲鱼的人都知道,真正消耗精力的,往往不是上架商品,而是每天重复不断的咨询、议价、催发货和售后回复。这款软件支持在win系统上可以直接使用的软件工具,针对的是闲鱼卖家的“自动客服自动交付”效率工具。 闪电鱼软件 地址&…...
