日常开发中的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的操作,所以我今天 ...
随机推荐
- Matlab代理模式
代理模式(Proxy)就是给一个对象提供一个代理对象,并有代理对象来控制对原有对象的引用.代理模式和装饰模式非常类似,但最主要的区别是代理模式中,代理类对被代理的对象有控制权,决定其执行或者不执行.本 ...
- WebStorm eslint插件报错解决 - TypeError: this.CliEngine is not a constructor
将eslint更新版本后,出现TypeError: this.CliEngine is not a constructor的错误. 解决办法: 1.编辑 X:\WebStorm\plugins\Jav ...
- OSPF 多区域配置
通过配置OSPF协议使网络互通. 实验拓扑 如图所示连接,地址规划如下: 名称 接口 IP地址 R1 f1/0 192.168.10.1/24 R1 f0/0 192.168.20.1/24 R1 f ...
- 浅谈原子操作、volatile、CPU执行顺序
浅谈原子操作.volatile.CPU执行顺序 在计算机发展的鸿蒙年代,程序都是顺序执行,编译器也只是简单地翻译指令,随着硬件和软件的飞速增长,原来的工具和硬件渐渐地力不从心,也逐渐涌现出各路大神在原 ...
- Linux Swap故障之 swapoff failed: Cannot allocate memory
目录swap分区关闭方法1:释放内存缓存方法2:允许内存overcommit swap分区关闭准备调整Linux下的swap分区的使用率.在Linux下执行 swapoff -a -v报如下错误:sw ...
- Httpd服务入门知识-https(http over ssl)安全配置
Httpd服务入门知识-https(http over ssl)安全配置 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.SSL会话的简化过程 ()客户端发送可供选择的加密方式, ...
- Beta冲刺第2次
二.Scrum部分 1. 各成员情况 翟仕佶 学号:201731103226 今日进展 优化了文件IO 存在问题 无 明日安排 同小小组另两人协商功能改进 截图 曾中杰 学号:201731062517 ...
- Linux学习26-linux查看某个时间段的日志(sed -n)-史上最详细
前言 在linux上查找日志的时候,如果我想找出某个时间段的日志,比如查找今天早上8点到下午2点的日志. 用grep不太方便直接过滤出来,可以使用sed根据时间去查找 sed -n '/开始时间日期/ ...
- bat echo输出内容指定颜色
bat echo 输出内容为不同的颜色 先看代码: @echo off SETLOCAL EnableDelayedExpansion for /F "tokens=1,2 delims=# ...
- 2019牛客暑期多校训练营(第五场)B:generator 1 (10进制快速幂)
题意:给定x0,x1,a,b,满足xi=a*xi-1+b*xi-2: 求xn,n<10^(10^6): 思路:10进制快速幂裸题.降幂来写好像也是可以的,但是循环节不是phi(mod),所以数学 ...