bash基本命令
環境變量通常是大寫字符。
變量賦值,=兩邊不能有空格!
雙引號內的特殊字符如$,保持原來的意思。
單引號內的特殊字符都是一般字符。
name=test
echo "$name" # test
echo '$name' # $name
unset取消變量。
環境變量中PATH表示爲執行文件查找的路徑,目錄與目錄之間用:分割。目錄的順序是很重要的。
變量的設置方式
${變量#關鍵字}: 從頭開始匹配關鍵字,將符合的最短的關鍵字刪除
${變量##關鍵字}:將符合的最長的關鍵字刪除
${變量%關鍵字}: 從頭開始匹配關鍵字,將符合的最短的關鍵字刪除
${變量%%關鍵字}:將符合的最長的關鍵字刪除
${變量/舊字符/新字符}:替換,將第一個舊字符替換
${變量//舊字符/新字符}:替換,全部替換
history
描述最近運行的命令。
!number: 執行第幾條命令
!command: 從最近的指令開始找,第一個滿足command開頭的命令
!!:上一條指令
組合按鍵
Ctrl+U:刪除整行命令
Ctrl+Z: 暫停當前命令
特殊符號
>: 輸出導向,替換
>>: 輸出導向,累加
<: 輸入導向
&& 與 ||
遵循短路規則。
cmd1 && cmd2:如果cmd1執行完畢且正確($?=0),則執行cmd2,否則不執行cmd2
cmd1 || cmd2:如果cmd1執行完畢且正確,則不執行cmd2,否則執行cmd2
基本命令
cut
-d:後面接分割符
-f:取出第幾段
-c: 以字符的單位取出固定字符區間
cut -d ':' -f 3, 4
sort
-f:忽略大小寫
-b:忽略最前面的空白
-M:以月份的名字排序,例如JAN,DEC等的排序方法
-n:使用純數字排序
-r:反向排序
-u:uniq,相同數據只出現一次
-t:分割符
-k:以某個區間進行排序
uniq
去重。
-i:忽略大小寫
-c:進行計數
scripts ls | uniq -c
1 1234_2017060
1 1234_20170604
1 1234_20170606
1 file_20170604
1 file_20170606
1 script.sh
1 test.txt
wc
計數。
-l:進列出行
-w:僅列出多少字
-m:多少字符
tee
雙向重定向
-a,累加的方式加入file當中
tr
切割。
tr -ds set1
-d,刪除信息中set1字符串
-s:取重複字符
col
-x: 將tab鍵轉換爲對等的空格鍵
join
將兩個文件當中有相同數據的那一行加在一起。
a.txt: 123213 123
b.txt: 123213 1234
join a.txt b.txt
123213 123 1234
-t: 分隔符,默認爲空格,默認比較第一個字段
-i:忽略大小寫差異
-1 x:第一個文件以第x字段比較
-2 x:第二個文件以第x字段比較
join -t ' ' -1 1 -2 1 a.txt b.txt
123213 1234 134 1234 42151
paste
-d:後面接分割符,默認tab
-:來自standard input
a.txt
123213 1234 134
123213 1234 134
b.txt
123213 1234 42151
123213 1234 42151
123213 1234 42151
123213 1234 42151
paste -d ' ' a.txt b.txt
123213 1234 134 123213 1234 42151
123213 1234 134 123213 1234 42151
123213 1234 42151
123213 1234 42151
expand
將tab轉換爲空格。
-t:一個tab對應多少個空格
split
切割文件
split -b [] -l [] file prefix
-b:切割文件的帶下,可加單位b,k,m
-l:以行數切割
prefix:切割後文件前綴,默認以a a,ab等排序。
split -b 1 file files
可以用cat復原