日常开发中的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的操作,所以我今天 ...
随机推荐
- 【转载】C#通过遍历DataTable的列获取所有列名
在C#中的Datatable数据变量的操作过程中,可以通过遍历DataTable的所有列对象Columns属性,来获取DataTable中的所有列名信息,DataTable中所有列的对象信息都存储在D ...
- vue使用vue-cli创建项目
安装运行环境(node和npm) 安装vue-cli(查看是否安装成功vue -V) 安装webpack 新建项目 1.vue init webpack 项目名称 2.配置项目有关的信息(项目名称,开 ...
- JavaScript之变量(声明、解析、作用域)
声明(创建) JavaScript 变量 在 JavaScript 中创建变量通常称为"声明"变量. 一.我们使用 var 关键词来声明变量: var carname; 变量声明之 ...
- 英语Barklyite红宝石barklyite单词
红宝石的英文名称为barklyite或Ruby,源于拉丁文 Ruber,意思是红色.红宝石的日文名称为ルビー.红宝石的矿物名称为刚玉.(注:除红宝石外,其他颜色的刚玉都属于蓝宝石.如粉红色刚玉被称为粉 ...
- 通过windowmanager在camera界面上显示内容
Window与WindowManager机制https://www.jastrelax.com/android/2018-03-08-android-window/ [Android开发艺术探索阅读笔 ...
- Django 之 restframework 版本控制的使用以及源码分析
Django rest_framework 之 版本控制 一.何为版本控制: 用于版本的控制 二.内置的版本控制类: from rest_framework.versioning import Q ...
- VUE router-view key 属性解释
router-view 作用, 你可以 router-view 当做是一个容器,它渲染的组件是你使用 vue-router 指定的. <template> <section clas ...
- ROS学习(更新中~)
1.一次把ROS环境变量都自动配置好(即添加到bash会话中)echo "source /opt/ros/indigo/setup.bash" >> ~/.bashrc ...
- ssm批量删除
ssm批量删除 批量删除:顾名思义就是一次性删除多个.删除是根据前台传给后台的id,那么所谓批量删除,就是将多个id传给后台,那么如何传过去呢,前后台的交互该如何实现? 1.jsp页面,先选中所有的要 ...
- param动作
param动作通常与forword一起使用 <jsp:forword page="目标页面" > <jsp:param value="参数值" ...