某同學遇到個需求:
開發乙個指令碼
可以統計出最長用的10個命令
輸出有4列, 序號(1~10), 數量(大~小), 佔比(大~小), 命令
效果如下
改寫後的指令碼
#!/bin/bash
cat ~/.bash_history | awk '
end
for(k in list)
}' | sort -nrk 1 | head -n 10 | awk ''
history
可以顯示所有的歷史命令, 直接在終端中輸入history
命令即可
查詢最新的n條命令, 返回的是不重複的n條件, 重複的不計算在內
history -n
$ history -3
2543 whatis history
2544 history
2545* history 2
2546* history -n 2
2547* history -2
2548* history -10
2549* history -3
2550* history -10
2551* history -20
2552* history -3
2553 hisgory -3
雖然返回的數量超過了3, 但是標*的表示為重複命令, 不重複的有3條
使用者在終端中操作的命令, 在關閉終端時會自動儲存到檔案中, 一般是.bash_history檔案, 最多儲存1000條
可以通過環境變數修改儲存檔案與儲存的最大條數
histfile
: 表示命令儲存的檔名, 可以通過export histfile=~/.cmd_file
修改
histfilesize
: 表示最大儲存的數量, 可以通過export histfilesize=2000
修改
$ echo $histfile
/users/zhouweixin/.bash_history
$ echo $histfilesize
1000
查詢檔案的內容有許多命令, 功能描述如下表所述
命令功能
備註cat
cat(英文全拼:concatenate)命令用於連線檔案並列印到標準輸出裝置上(如terminal)
more
與cat功能相同, 區別在於可以一頁一頁的輸出, 空格翻頁
less
less 與 more 類似, 使用 less 可以隨意瀏覽檔案, 而且 less 在檢視之前不會載入整個檔案
head
head命令可用於檢視檔案的開頭部分的內容
tail
tail 命令可用於檢視檔案尾部的內容
指令碼中用到了管理命令|
, 其功能是將左邊命令的輸出作為右邊命令的輸入
例如: 有乙個檔名為go.mod, 內容如下
)經過前面的了解我們知道命令cat go.mod
可以把該檔案的內容列印到終端, 如下所示
)假如我們並不想列印所有的內容, 僅想列印包含indirect行的內容, 則可以利用管道|
, 如下所示
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect管道|
把左側命令cat
的輸出重定向作為右側命令grep
的輸入(grep命令逐行判斷是否包含indirect內容)
類似連線多個命令符號有許多, 一定來看幾個
命令功能備註;
連線多個命令, 順序執行, 成功失敗互不影響
示例: mkdir mydir; cd mydir
>
輸出重定向, 將左側命令的輸出重定向到右側檔案
示例: cat a.txt > b.txt
<
輸入重定向, 將右側檔案的內容作為左側命令的輸入
&用於命令後, 表示後台執行命令
&&邏輯與, 只有左側命令為true, 右側命令才會執行
||邏輯或, 只有左側命令為false, 右側才會執行
awk 是一種處理文字檔案的語言,是乙個強大的文字分析工具。
之所以叫 awk 是因為其取了三位創始人 alfred aho,peter weinberger, 和 brian kernighan 的 family name 的首字元。
使用詳情可參考
linux awk 命令
sort命令用於將文字檔案內容加以排序, 以行為單位來排序
相關引數
統計本機最常用的10個命令
找出最常用的10條history命令的shell指令碼
history命令
linux下有趣的命令
linux sort命令
linux awk 命令
10個最常用的CSS className
很多做前端開發的在為頁面元素定class的時候經常會拿不定主意,導致隨意使用class,乙個好的class要能夠描述出某個特定元素的表現,在符合團隊開發流程 規範的情況下也要注意在工作中形成一套自己的風格,下面是我最經常使用的個人認為命名比較恰當和有一定作用的10個class。1.class fix...
10組最常用Git命令
10組最常用git命令 更多 一般來說,日常使用只要記住下圖6個命令,就可以了。但是熟練使用,恐怕要記住60 100個命令。下面是我整理的常用 git 命令清單。幾個專用名詞的譯名如下。workspace 工作區 index stage 暫存區 repository 倉庫區 或本地倉庫 remote...
Shell生產最常用的命令和指令碼 二
目錄 shell生產最常用的命令和指令碼 bin bash 位址hostname 123456 port 123456 username 123456 password 123456 datanode 1 2 3 dbname dspcbdb dsanddb dsiosdb dsiobdb dsan...