以下介绍两种方式进行一次设置,以后可以直接操作无需密码。
如果下载仓库的时候用的 git@git 的形式,代表是 ssh 方式下载的。在登录的时候需要使用 ssh key代替账号密码。
关于 ssh key 参考官方介绍:
https://help.github.com/en/articles/generating-an-ssh-key
如果下载仓库的时候用的是 https ,则需要配置一个 credential helper 来告诉 git 记住账户密码。
终端执行如下代码,将证书存储到本地:
git config --global credential.helper wincred
运行后操作一次 git push 如果提示输入密码,则输入一次,以后就不会再提示了。
Mac 下需要使用到 osxkeychain 来存储证书。
首先检查是否已经安装了 osxkeychain:
git credential-osxkeychain
如果没有安装,系统会自动提示下载包含credential-osxkeychain 的 Xcode Command Line Tools。
或者使用 homebrew 来安装 Git 和 the osxkeychain helper:
brew install git
终端执行如下代码,将证书安装到本地:
git config --global credential.helper osxkeychain
运行后操作一次 git push 如果提示输入密码,则输入一次,以后就不会再提示了。
Linux 下打开 credential helper 将账户密码存储在本地或缓存中。
使用 cache 选项保存到缓存,默认将会缓存 15 分钟:
git config --global credential.helper cache
修改缓存时间可以使用如下指令,单位:秒:
git config --global credential.helper 'cache --timeout=3600'
使用 store 存储在本地,默认存储在 ~/.git-credentials:
git config --global credential.helper store
如果开启了账户二次验证,则需要生成一个 Personal access token 来代替密码输入:
在 github 账户设置中,进入 settings - Developer settings,点击 generate new token,在里面选择 repo 复选框,会生成一串字符,在命令行中输入账户密码时用它代替密码。
如果第一次使用命令行需要做如下设置用户信息:
git config --global user.email "you@example.com"
git config --global user.name "Your Name"
git config --global push.default simple
]]>可以用来运行终端命令:
import os
os.system('date')
-----------------------
The current date is: 10/17/2019 Thu 用来将匹配的文件放入数组:
import glob
import os
CWD = os.getcwd()#当前目录路径
for name in glob.glob(CWD+'/*'):
print(name)以上输出当前目录下所有文件的文件名。
for name in glob.glob(CWD+'/file?.txt'):
print(name)以上输出 filea.txt, fileb.txt filec.txt 等文件名。
可以使用类似正则表达式的方式匹配文件名:
glob.glob(CWD+'/*[12].*')
从python3.5开始,支持使用一下方法进行递归搜索目录内文件及文件夹:
for name in glob.glob(CWD+'/**/*', recursive=True):
print(name)以上会输出目录内文件及子文件夹内文件。
字符串分割:
按空格分割,注意两个部分之间的空格可以是1个或多个,不影响分割效果:
txt = "welcome to the jungle"
x = txt.split()将 txt 字符串按空格来分成4个部分,x 是数组。
分割成设定的个数:
txt = "welcome to the jungle"
x = txt.split(' ', 1)输出结果:x = ['welcome', 'to the jungle']
按特定字符分割:
txt = "apple#banana#cherry#orange"
x = txt.split("#", 1)输出结果:x = ['apple', 'banana#cherry#orange']
用于 iterator 的顺序提取。
mylist = iter(["apple", "banana", "cherry"])
x = next(mylist)
print(x)
y = next(mylist)
print(x)
z = next(mylist)
print(x)输出结果:x = 'apple' y = 'banana' z = 'cherry'
用于字符串内的赋值:
print ("{}, A computer science portal for geeks".format("GeeksforGeeks"))输出:GeeksforGeeks, A computer science portal for geeks
多个输入参数:
print ("Hi ! My name is {} and I am {} years old"
.format("User", 19)) 带索引的多参数输入:
print("Every {3} should know the use of {2} {1} programming and {0}"
.format("programmer", "Open", "Source", "Operating Systems")) 输出结果:Every Operating Systems should know the use of Source Open programming and programmer
删除字符串前和后的空格:
txt = " banana "
x = txt.strip()输出:x = 'banana'
删除字符串前和后的自定义字符:
txt = ",,,,,rrttgg.....banana....rrr"
x = txt.strip(",.grt")输出: x = 'banana'
]]>将每个文件分割成指定行数的文件:-l
split -l200 tuxlap.txt
每个文件后缀会加上 aa ab ac...
将每个文件分割成指定大小:-b
有 4 中写法,对应按 byte kb mb gb 来分割:
split -b{bytes} {file_name}
split -b nK {file_name}
split -b nM {file_name}
split -b nG {file_name}
split -b 50M tuxlap.txt
给分割后的文件指定文件名:split {file_name} {prefix_name}
split -b 1M tuxlap.txt split_file.txt
分割后的文件是:
split_file.txtaa
split_file.txtab
split_file.txtac
将文件分割成指定个数:-n
split -n5 linux-lite.iso
以上指令将文件分割为5个文件。
防止分割后的文件大小为0,可加上指令 "-e",对于小文件适用:
split -n60 -e tuxlap.txt
将分割后的文件进行合并可使用 cat 命令:
cat file.mp4* > file.mp4
注意使用 split 命令分割后的媒体文件无法被打开,需要合并后才能正常发开播放。
]]>查看当前所有后台进程:
ps -aux
查看某个脚本进程:
ps -aux | grep "test.sh"
关闭进程,通过ps命令查看进程号PID,然后执行:
kill %PID
查看当前端口是否被某个进程占用:
lsof -i:8000
Windows 查看端口占用参考:https://niekun.net/index.php/archives/922.html
]]>我是用的是 python3.4,使用系统包管理器安装:
apt-get install python3.4
如果系统内安装了多个版本的 python,修改 /usr/bin/python 的默认链接,具体修改方法查看此教程:
https://niekun.net/index.php/archives/413.html
安装或升级:
pip install python-telegram-bot --upgrade
GitHub:https://github.com/ytdl-org/youtube-dl
安装最新版库:
sudo curl -L -k https://yt-dl.org/downloads/latest/youtube-dl -o /usr/local/bin/youtube-dl
sudo chmod a+rx /usr/local/bin/youtube-dl如果运行 youtube-dl 报错,可以新建链接到系统程序目录:
ln -s /usr/local/bin/youtube-dl /usr/bin/youtube-dl
升级 youtube-dl 也可以使用 pip 完成:
pip install --upgrade youtube-dl
升级后的可执行文件默认在 pip 目录下,如果使用的 python 是自己编译安装的那需要手动去 python 的 bin 目录下找到 youtube-dl 文件创建软连接到 /usr/local/bin 目录。
from tornado.httpserver import HTTPServer from tornado.httpserver import HTTPServer
syntaxError: invalid syntax可能是 tornado 版本过高,需要进行降级:
pip install tornado==4.5.3
首先在 telegram 客户端内添加 BotFather
Creating a new bot
Use the /newbot command to create a new bot. The BotFather will ask you for a name and username, then generate an authorization token for your new bot.
The name of your bot is displayed in contact details and elsewhere.
The Username is a short name, to be used in mentions and telegram.me links. Usernames are 5-32 characters long and are case insensitive, but may only include Latin characters, numbers, and underscores. Your bot's username must end in ‘bot’, e.g. ‘tetris_bot’ or ‘TetrisBot’.
The token is a string along the lines of 110201543:AAHdqTcvCH1vGWJxfSeofSAs0K5PALDsaw that is required to authorize the bot and send requests to the Bot API. Keep your token secure and store it safely, it can be used by anyone to control your bot.
Generating an authorization token
If your existing token is compromised or you lost it for some reason, use the /token command to generate a new one.
https://github.com/nie11kun/telegram-bot-youtube-downloader
较新的 Linux 发行版可以使用 systemd 来实现自动启动,参考:https://blog.niekun.net/archives/1334.html
以下方式适合 Ubuntu 14.04 以下。
打开 rc.local
vim /etc/init.d/rc.local
在最后添加:
sudo python /your/script/path.py &
最后使用 "&" 符号功能是让脚本在后台运行,如果要停止脚本需要kill 它的 PID。
查看当前脚本的 PID:
ps -aux |grep "your.py"
然后停止脚本:
kill %PID
打开 cmd,输入命令:bash,即可打开Linux系统。
访问Windows路径:/mnt/your/folder/path
注意如果文件夹有空格 " " 在命令行中需要在空格前加转义符 "\"
]]>ln -s source_filename symbolic_filename
-s:软连接
]]>vim /etc/init.d/rc.local
在 rc.local 后加入启动命令:
sudo python /your/path/script.py &
&符号为让脚本后台运行,不在命令行显示结果.
]]>搜索 path 点击系统环境变量:
打开环境变量设置:
系统变量里找到 path 点击编辑:
将想要默认版本的 python 路径移动到其他版本前:
注意有两个目录,一个是python 程序目录,还有一个 pip 目录。
也可以使用命令切换使用不同版本的 python。
python 2.x 版:
py -2 xxx.py
py -2 -m pip install xxxxpython 3.x 版:
py -3 xxx.py
py -3 -m pip install xxxx
先查看系统中有那些Python版本:
ls /usr/bin/python*
再查看系统默认的Python版本:
python --version
Python 2.7.12
先删除默认的Python软链接:
rm /usr/bin/python
然后创建一个新的软链接指向需要的Python版本:
ln -s /usr/bin/python3.4 /usr/bin/python
]]>
新建 black & witer 图层,混合模式设置为 luminosity,将如下参数保存为预设到本地方便下次使用,这套默认参数不会改变原图像亮度:
调节每个颜色的亮度到合适位置,增加图片细节:
新建曲线图层,使用手抓工具调节局部亮暗对比,可用蒙版选择影响范围:
选择性建立 solid color 图层,给图片整体一个色调,混合模式为 soft light,调整不透明度:
当想表示一个IP段的时候可以使用 IP-CIDR 来处理。
CIDR主要是一个按位的、基于前缀的,用于解释IP地址的标准。它通过把多个地址块组合到一个路由表表项而使得路由更加方便。这些地址块叫做CIDR地址块。当用二进制表示这些地址时,它们有着在开头部分的一系列相同的位。IPv4的CIDR地址块的表示方法和IPv4地址的表示方法是相似的:由四部分组成的点分十进制地址,后跟一个斜线,最后是范围在0到32之间的一个数字:A.B.C.D/N。

点分十进制的部分和IPv4地址一样是一个被分成四个八位位组的32位二进制数。斜线后面的数字就是前缀长度,也就是从左到右,被地址块里的地址所共享的位的数目。
当只需说明大概时,十进制部分有时会被省略,因此,/20就表示一个前缀长度是20的CIDR地址块。
如果一个IP地址的前N位与一个CIDR地址块的前缀是相同的话,那么就说这个地址属于这个CIDR地址块,也可以说是与CIDR地址块的前缀匹配。
所以,要理解CIDR,就要把地址写成二进制的形式。因为IPv4地址的长度总是32位,N位长的CIDR前缀就意味着地址里32-N位不匹配。这些位有 2^(32-N) 种不同的组合,即 2^{(32-N) 个IPv4地址与CIDR地址块的前缀匹配。
前缀越短就能匹配越多的地址,越长就匹配得越少。