工具推荐

  • 命令行中很方便的代码统计工具---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小技巧的更多相关文章

  1. RS开发中的一些小技巧[不定期更新]

    从9月份一直忙到了现在,项目整体的改版工作也完成了十有八九了,有些事情只有你自己真正的做了,你才能明白:哦,原来还可以这个样子,这样做真的好了很多呢,接下来我就分享一些最近遇到的RS开发的一些小技巧, ...

  2. Java开发中的一些小技巧

    原文:http://www.cnblogs.com/xdp-gacl/p/3490276.html 一. Java获取URL地址中传递的参数 /** * 获取URL中的参数名和参数值的Map集合 * ...

  3. iOS开发中的那些小技巧

    前言:今天在写代码的过程中遇到一个需要修改系统navigationBar的背景色,我起初用的是barTintColor去修改但是防不住系统点击按钮的时候会有一个渲染高亮的效果,调了好久没有达到自己想要 ...

  4. JS开发中常用的小技巧

    1.获取指定范围内的随机数 1 2 3 function getRadomNum(min,max){     return  Math.floor(Math.random() * (max - min ...

  5. ios开发中的一些小技巧

    1.如果在程序中想对某张图片进行处理的话(得到某张图片的一部分)可一用以下代码:   UIImage *image = [UIImage imageNamed:filename]; CGImageRe ...

  6. JS开发中的一些小技巧和方法

    生成指定范围内的随机数 当我们需要获取指定范围(min,max)内的整数的时候,下面的代码非常适合:这段代码用的还挺多的. function setRadomNum(min,max){ return ...

  7. Cocos2d-JS开发中的一些小技巧

    1.获取URL中的请求参数的值----此方法接收参数名 function getQueryString(name) { var reg = new RegExp("(^|&)&quo ...

  8. 前端开发中的JS调试技巧

    前言:调试技巧,在任何一项技术研发中都可谓是必不可少的技能.掌握各种调试技巧,必定能在工作中起到事半功倍的效果.譬如,快速定位问题.降低故障概率.帮助分析逻辑错误等等.而在互联网前端开发越来越重要的今 ...

  9. Maven在Eclipse中的实用小技巧

    前言     我们在开发的工程中很多都是Maven项目,这样更加便于我们jar包的管理.而我们一般使用的IDE都是Eclipse,由于我们在日常的开发过程中会经常要用到一些Maven的操作,所以我今天 ...

随机推荐

  1. .Net Core 程序集管理说明(加载)

    .NET CORE 的程序集加载管理和以前的 .NET 发生了很大的变化, 在 .NET CORE 里, 程序集的加载, 依赖了 xx.deps.json 文件, deps.json 文件里,定义了程 ...

  2. 数据库-如何创建SQL Server身份验证用户

    1.简介 默认安装SQL Server数据库后,SQL Server通过工具SQL Server Management Studio(SSMS)采用“Windows身份验证”方式登录,需要设置相应用户 ...

  3. Java 面向对象(九)内部类

    一.概述 1.引入 类的成员包括: 1.属性:成员变量2.方法:成员方法3.构造器4.代码块5.内部类:成员内部类 其中 1.2是代表这类事物的特征   其中3.4是初始化类和对象用的   其中5协助 ...

  4. Spring Cloud Sleuth 整合

    引入Maven依赖 org.springframework.cloud spring-cloud-starter-sleuth 日志发生的变化 当应用ClassPath下存在org.springfre ...

  5. 使用jmeter 设计流程发起测试

    业务场景 需要实现用户在登录后,能够持续的发起流程. 需要注意的点: 1.使用不同的用户登录. 2.登录后发起可以持续的发起流程. 实现步骤 1.先使用badboy 录制脚本. 2.使用jmeter ...

  6. linux设备驱动程序--sysfs用户接口的使用

    linux sysfs文件系统 本文部分内容参考自官方文档 自2.6版本开始,linux内核开始使用sysfs文件系统,它的作用是将设备和驱动程序的信息导出到用户空间,方便了用户读取设备信息,同时支持 ...

  7. nginx 页面加载不全的问题

    在nginx的server中添加: proxy_buffer_size 2m; proxy_buffers 8 1m; proxy_busy_buffers_size 2m; 这是由于页面内容过长,默 ...

  8. Mirai 通过弱密码爆破摄像头 形成僵尸网络——尼玛值得深思的是作者居然是做安全研究的

    Mirai(日语:ミライ[1],中文直译“未来”[2][3])是一款恶意软件,它可以使运行Linux的计算系统成为被远程操控的“僵尸”,以达到通过僵尸网络进行大规模网络攻击的目的.Mirai的主要感染 ...

  9. which had no Root Element. This likely means the XML is malformed or missing

    今天按照古月老师的步骤,想在RViz中配置插件. 按步骤做下来后,一运行,出现如下错误: [E[ERROR] [1523370744.057263390]: Skipping XML Document ...

  10. 配置VScode c语言环境

    vscode 提示 <sys/socket.h>找不到, 原来是不同平台上,头文件不一样. 参考:https://blog.csdn.net/qq_28581077/article/det ...