標籤:shell bash
變數 variableName=value
- 等號左右不能有空格
- 變數內容有空格需要用"或者‘括起來,但是 v="hello $name" $保持原有功能,單引號則不行,v="hello ‘$name‘"純文字
- 可用轉義符\將特殊字元轉成普通文本 `命令`,$(命令) ,在文本中提供命令執行資訊
- 變數累加, name=xiaoyi ; name=$name:‘welcome to hz‘
- 子進程能夠繼承父進程的環境變數但是不能夠繼承父進程的自訂變數,export 變數名;將自訂變數變成環境變數
從鍵盤讀入資料: read -p ‘提示‘ -t num v # num 時間,v 變數名數組的申明和使用: v[1]=‘hello‘;v[2]=‘xiao‘ echo ${v[1]}
路徑與命令的尋找順序
- 以相對/絕對路徑執行命令,如/bin/ls
- 由alias找到該命令來執行
- 由bash內建的命令執行
- 通過$PATH這個變數的順序找到第一個命令來執行
讀取shell設定檔的命令source 或者就是一個點 . , 由於.bashrc只能在登陸的時候才會被讀,如果中途修改了想立即生效的話,我們就需要調用source命令讀取當前修改的相應設定檔eg: source ~/.bashrc equals . ~/.bashrc
管道命令情境: 當資料需要經過幾次處理之後才能到我們想要的格式的時候管道之後第一個資料一定是可以接受standard input的命令
選取命令:cut,grep
cut 按行為單位切出來 cut -d ‘分割字元‘ -f fields ,主要是用於行資料的分割顯示
cut -c 字元範圍
eg:
echo $PATH | cut -d ‘:‘ -f 5 //選取path中以:分割的第五個路徑
grep 將一行資訊中我們想要的資料分析出來
grep [-acinv] [--color=auto] ‘尋找字串‘ filename
-a 將binary檔案以 text的方式尋找資料
-c 統計匹配到的資料個數
-i 忽略大小寫
-n 輸出行號
-v 輸出沒有匹配內容的那一行 grep可以結合正則表達使用
排序與統計命令 sort ,wc ,uniq
- sort
sort [-fbMnrtuk] [file or stdin]
-f 忽略大小寫
-b 忽略最前面的空格
-M 以月份的名字排序
-n 使用純數字排序
-r 反向排序
-u 相同的資料項目僅出現一項
-t 分隔字元
-k 以以那個區間進行排序
eg:
cat /etc/passwd | sort -t ‘:‘ -k 1 //對以: 分割的第一列排序
- wc 統計字, 行或者字元數
wc [-lwm]
-l 行數
-w 字數
-m 字元數
eg:
cat /etc/profile | wc -lwm
- uniq 重複的資料竟出現一次即可
uniq [-ic]
-i 忽略大小寫
-c 進行計數
eg:
last | cut -d ‘ ‘ -f1 | grep ‘^xiaoyi‘ | uniq -c
字元轉換指令 tr, col, join, paste, expand
- tr : tr [-ds] set1
-d 刪除資訊當中的set1欄位
-s 替換掉重複的字元
eg : 小寫換大寫 last | tr ‘a-z‘ ‘A-Z‘
find ./ -name "*.java" | xargs wc -l
find grep 講的比較好的連結: http://www.cnblogs.com/skynet/archive/2010/12/25/1916873.html
特殊符號:
鳥書shell 學習筆記(一) shell中的重點概念以及命令