平常开发中的shell小技巧

工具推荐

  • 命令行中很方便的代码统计工具---cloc

模拟生成熵(避免暴力手搓键盘)

计算机自己是可预测的系统(好比开始的过程),所以,计算机算法不可能产生真正的随机数。可是机器的环境中充满了各类各样的随机性的噪声,如硬件设备发生中断的时间,用户点击鼠标的时间间隔等,这些事件是彻底随机的,事先没法预测。而Linux内核实现的随机数产生器正是利用系统中的这些随机噪声来产生高质量随机数序列。 linux内核维护了一个熵池用来收集来自设备驱动程序和其它来源的环境噪音。能够输入以下命令查看系统熵值:php

cat /proc/sys/kernel/random/entropy_avail

有一些须要高质量的系统随机数的命令,例如gpg生成密钥,须要系统熵池维持一个比较高的值,从而生成安全性更高的密码。暴力按键盘确定是行不通的,这时就要在命令行中输入以下命令来作到快速提升熵值html

sudo rngd -r /dev/urandom  -o /dev/random  -f

/dev/urandom和/dev/random是内核提供的输出随机数的字符设备, rngd是与内核随机数生成相关的一种工具,具体信息能够参见:传送门linux

git提交时不用输入密码的方法

git是平常开发三大利器之一,可是对于git的配置还有不少细节,好比每次提交时要输入密码,若是你有一大堆操做,那么每次都输入帐号和密码真实头痛,一个思路是配置ssh密钥,可是对于http方式就行不通了,这时咱们能够输入以下命令:git

git config --global credential.helper store

这条命令的做用是在本地创建一个证书文件,会自动帮咱们保存输入正确的用户名和密码,只须要输入一次,git就会帮咱们自动保存,以后的操做就不须要再输入密码了。具体的文档连接:传送门github

自动输密码的脚本,基于expect

上文说到了经过保存一个证书来使得git操做不须要输入密码,可是若是在其余的命令中,没有这样方便的命令自带的设置,那咱们又该如何操做呢。且若是须要连续输入屡次密码,好比给当下文件夹下的全部deb文件进行加密,若是要手动一遍一遍输入,这是个超级痛苦的过程,这是咱们就须要去模拟shell中的交互,而except系列命令就是一个很好的工具,示例脚本以下:算法

#!/usr/bin/expect
set password "xxxxxx"  # 定义具体密码的值
set files [glob -nocomplain -- ./*.deb]  # 列出当前目录下全部deb文件
puts "[llength $files]"  # 输出总文件数量
for {set i 0} {$i<[llength $files]} {incr i 1} {  # 遍历每一个deb文件
    set fileName [lindex $files $i]
    spawn sudo dpkg-sig --sign builder $fileName  # 启动一个进程进行加密
    expect "*Enter passphrase:*"   # 监测收到的输入密码的提示信息
    send "$password\n"  # 输入密码
    puts "$fileName"
}
interact

expect的语法是基于tcl的,与bash中的脚本写法有一些不一样。
这是tcl语法教程的连接:传送门
这是expect教程的连接:传送门shell

相关文章
相关标签/搜索