日常开发中的shell小技巧
工具推荐
- 命令行中很方便的代码统计工具---cloc
- 强大的分屏工具---tmux
- 最舒服的markdown书写工具---typora
- markdown图床推荐--七牛云
模拟生成熵(避免暴力手搓键盘)
计算机本身是可预测的系统(比如开始的过程),因此,计算机算法不可能产生真正的随机数。但是机器的环境中充满了各种各样的随机性的噪声,如硬件设备发生中断的时间,用户点击鼠标的时间间隔等,这些事件是完全随机的,事先无法预测。而Linux内核实现的随机数产生器正是利用系统中的这些随机噪声来产生高质量随机数序列。 linux内核维护了一个熵池用来收集来自设备驱动程序和其它来源的环境噪音。可以输入如下命令查看系统熵值:
cat /proc/sys/kernel/random/entropy_avail
有一些需要高质量的系统随机数的命令,例如gpg生成密钥,需要系统熵池维持一个比较高的值,从而生成安全性更高的密码。暴力按键盘肯定是行不通的,这时就要在命令行中输入如下命令来做到快速提高熵值
sudo rngd -r /dev/urandom -o /dev/random -f
/dev/urandom和/dev/random是内核提供的输出随机数的字符设备, rngd是与内核随机数生成相关的一种工具,具体信息可以参见:传送门
git提交时不用输入密码的方法
git是日常开发三大利器之一,但是对于git的配置还有很多细节,比如每次提交时要输入密码,如果你有一大堆操作,那么每次都输入账号和密码真实头痛,一个思路是配置ssh密钥,但是对于http方式就行不通了,这时我们可以输入如下命令:
git config --global credential.helper store
这条命令的作用是在本地建立一个证书文件,会自动帮我们保存输入正确的用户名和密码,只需要输入一次,git就会帮我们自动保存,之后的操作就不需要再输入密码了。具体的文档链接:传送门
自动输密码的脚本,基于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小技巧的更多相关文章
- RS开发中的一些小技巧[不定期更新]
从9月份一直忙到了现在,项目整体的改版工作也完成了十有八九了,有些事情只有你自己真正的做了,你才能明白:哦,原来还可以这个样子,这样做真的好了很多呢,接下来我就分享一些最近遇到的RS开发的一些小技巧, ...
- Java开发中的一些小技巧
原文:http://www.cnblogs.com/xdp-gacl/p/3490276.html 一. Java获取URL地址中传递的参数 /** * 获取URL中的参数名和参数值的Map集合 * ...
- iOS开发中的那些小技巧
前言:今天在写代码的过程中遇到一个需要修改系统navigationBar的背景色,我起初用的是barTintColor去修改但是防不住系统点击按钮的时候会有一个渲染高亮的效果,调了好久没有达到自己想要 ...
- JS开发中常用的小技巧
1.获取指定范围内的随机数 1 2 3 function getRadomNum(min,max){ return Math.floor(Math.random() * (max - min ...
- ios开发中的一些小技巧
1.如果在程序中想对某张图片进行处理的话(得到某张图片的一部分)可一用以下代码: UIImage *image = [UIImage imageNamed:filename]; CGImageRe ...
- JS开发中的一些小技巧和方法
生成指定范围内的随机数 当我们需要获取指定范围(min,max)内的整数的时候,下面的代码非常适合:这段代码用的还挺多的. function setRadomNum(min,max){ return ...
- Cocos2d-JS开发中的一些小技巧
1.获取URL中的请求参数的值----此方法接收参数名 function getQueryString(name) { var reg = new RegExp("(^|&)&quo ...
- 前端开发中的JS调试技巧
前言:调试技巧,在任何一项技术研发中都可谓是必不可少的技能.掌握各种调试技巧,必定能在工作中起到事半功倍的效果.譬如,快速定位问题.降低故障概率.帮助分析逻辑错误等等.而在互联网前端开发越来越重要的今 ...
- Maven在Eclipse中的实用小技巧
前言 我们在开发的工程中很多都是Maven项目,这样更加便于我们jar包的管理.而我们一般使用的IDE都是Eclipse,由于我们在日常的开发过程中会经常要用到一些Maven的操作,所以我今天 ...
随机推荐
- 【MySQL】MySQL高可用架构之MHA
一.关于MHA MHA(Master HA)是一款开源的MySQL的高可用程序,它为MySQL主从复制架构提供了automating master failover 功能.MHA在监控到master节 ...
- 英语hecatolite月长石hecatolite月光石
月长石英文名字为hecatolite即月光石.当白色的光照到宝石上因宝石内特殊的结构而产生干涉颜色,在宝石表面可见到白至淡蓝色的闪光,犹如朦胧月光.这是由于正长石出溶有钠长石,钠长石在正长石晶体内定向 ...
- 你与BAT只差这一套面试题
1.Linux如何挂载windows下的共享目录?mount.cifs //IP地址/server /mnt/server -o user=administrator,password=123456l ...
- 网络文件系统-NFS
1. 什么是NFS NFS是 Network File System 的缩写,即网络文件系统.一种使用于分散式文件系统的协议,有Sun公司开发,于1984年向外公布.功能是通过网络让不同的机器.不同的 ...
- ubuntu坑(持续更新~)
0.you should not install packages from any repository that represents a different system version to ...
- ArcGIS Server 注册托管数据库
需要已经安装好ArcGIS for Desktop.ArcGIS for Server和ArcSDE,并且已经创建了地理数据库 我试了用管理网站添加,总是不成功,后来用ArcCatalog添加成功.这 ...
- 实验十四 团队项目评审&课程学习总结(葛进花201671010413)
实验十四 团队项目评审&课程学习总结 项目 内容 这个作业属于哪个课程 软件工程 这个作业的要求在哪里 实验十四 作业学习目标 1)掌握软件编码实现的工程要求 2) 反思总结课程学习内容 任务 ...
- OSX Homebrew 安装 Spring Boot CLI
OSX Homebrew 安装 Spring Boot CLI 如果您使用的是Mac并使用Homebrew,则可以使用以下命令安装Spring Boot CLI: $ brew tap pivotal ...
- wordpress导航当前页面菜单高亮显示如何操作
我们在制作wordpress主题时有些客户要求导航在访问某个菜单时,这个菜单项会高亮显示,让用户知道自己正在访问的是哪个菜单下的内容,这个要如何实现呢?wordpress早就为你想好了,.curren ...
- hive中删除表的错误Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. MetaException
hive使用drop table 表名删除表时报错,return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. MetaException 刚 ...