平常開發中的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

相關文章
相關標籤/搜索