是否有一种方式可以从命令行上传文件到您的Gist账户中的新Gist?
同时,为要上传的文件创建一个临时git存储库也会有所帮助,然后我可以在脚本中自动化这个过程。
最终,我希望通过一个bash脚本自动发布我的编程项目的调试信息到Github。
这里是一个适用于Bash/Dash的解决方案,可以创建匿名的Gist(很可能不是百分之百可靠):
# 0. Your file name
FNAME=some.file
# 1. Somehow sanitize the file content
# Remove \r (from Windows end-of-lines),
# Replace tabs by \t
# Replace " by \"
# Replace EOL by \n
CONTENT=$(sed -e 's/\r//' -e's/\t/\\t/g' -e 's/"/\\"/g' "${FNAME}" | awk '{ printf($0 "\\n") }')
# 2. Build the JSON request
read -r -d '' DESC <<EOF
{
"description": "some description",
"public": true,
"files": {
"${FNAME}": {
"content": "${CONTENT}"
}
}
}
EOF
# 3. Use curl to send a POST request
curl -X POST -d "${DESC}" "https://api.github.com/gists"
curl -u "${GITHUB_USERNAME}" -X POST -d "${DESC}" "https://api.github.com/gists"
如需更高级的身份验证方案,请参阅https://developer.github.com/v3/#authentication
%
字符,似乎会在那一点上出现问题:我尝试上传一个包含以下内容的文件:UNIX_TIMESTAMP=$(date +%s%3N --date='TZ="UTC+2" '"$TIME")
- rubo77一个用Python实现的命令行工具:
pip install python-gist
gist create "example description" foo.txt bar.txt
请查看https://github.com/jdowner/gist
如果您喜欢Ruby gem,请查看https://github.com/defunkt/gist
apt install gist
会安装这个宝石。如果您喜欢,也可以使用Ruby进行安装。它像宝石一样工作 :) - Thufir使用 GitHub CLI 工具:
gh gist create yourfile
gh gist create --public yourfile
要添加描述,请使用--desc
/-d
标志,要直接在Web浏览器中打开,请使用--web
/-w
。
请参阅GitHub CLI的手册查看gh gist create
的参考手册。
在Sylvain Leroux的回答基础上,我们可以使用命令行工具jq来替换清理和json构建步骤:
$ jq -Rs '{"description": "some description", "public": true, "files": {"'$FNAME'": {"content": .}}}' $FNAME | curl -X POST -d @- "https://api.github.com/gists"
$ jq -Rs '{"description": "some description", "public": true, "files": {"'$FNAME'": {"content": .}}}' $FNAME | curl -u "${GITHUB_USERNAME}" -X POST -d @- "https://api.github.com/gists"
gifc get 5
gifc create create.md -d "如何从cli创建gist" -i nano
gifc create create.md -d "如何从cli创建gist" -m '''如果您想从现有文件创建gist,则执行以下操作- `gifc create create.md -d "如何从cli创建gist" -f file.md`'''
gifc create create.md -d "如何从cli创建gist" -f file.md
迭代地编辑所有(或一些)文件
gifc update ffd2f4a482684f56bf33c8726cc6ae63 -i vi
get
方法中获取gist id更改描述
gifc update ffd2f4a482684f56bf33c8726cc6ae63 -cd "新描述"
get
方法中获取gist id在像nano、vim或gedit这样的编辑器中交互式地编辑文件内容
gifc update ffd2f4a482684f56bf33c8726cc6ae63 -f file_to_update.md
gifc update ffd2f4a482684f56bf33c8726cc6ae63 -f file_to_update.md -cd "新描述"
gifc remove ffd2f4a482684f56bf33c8726cc6ae63 -r file1.md script.py readme.txt
您可以从之前的get
方法中获取gist id
gifc delete ffd2f4a482684f56bf33c8726cc6ae63
您可以从之前的get
方法中获取gist id
对于具有受限制的busybox ash shells路由器,我创建了这个shell脚本post和patch gister。用法:$ pgist my_file_to_post_or_patch_to_gist.extension
无需记住长长的gist ID。这个gister被编码为自动查找相应的gist ID。限制如下:
curl -O https://gist.githubusercontent.com/ProBackup-nl/3971a45b21749cfff6c0069d3dad1dde/raw/pgist.sh && chmod 755 pgist.sh && mv pgist.sh /opt/usr/sbin/pgist
jq
sed
awk
curl
和ca-certificates
用于创建有效的证书链,而不是(60) SSL证书问题:无法获取本地颁发者证书