標籤:history export profile 基礎知識 source
1、Shell特性
命令曆史 history !! !$ !n !字元
Tab鍵可以補全檔案路徑或者命令
alias a="b" unalias a
萬用字元 *匹配零個或多個字元 ?匹配一個字元
輸入輸出重新導向>,>>,<,2>,2>>
管道符
作業控制 ctrl+z jobs fg bg
2、變數
系統變數名都是大寫,echo可以查看變數名
env 可以列出目前使用者的所有環境變數以及使用者自訂全域變數
set 命令可以把所有變數列出來包括系統的和自訂的全域變數以及當前shell自訂變數
linux下設定自訂變數規則:(1)格式為“a=b”,其中a為變數名,b為變數的內容,等號兩邊不能有空格;(2)變數名只能由英、數字以及底線組成,而且不能數字開頭;(3)當變數內容帶有特殊字元(如空格)時,需要加上單引號;(4)如果變數內容中需要用到其他命令運行結果則可以使用反引號;(5)變數內容可以累加其他變數的內容,需要加雙引號。
系統所有使用者使用變數:export myname=Aming 全域變數,加入/etc/profile並source /etc/profile永 久生效
系統某個使用者使用變數:export myname=Aming加入目前使用者家目錄下的.bashrc中並source .bashrc
export myname=Aming 全域變數,export不加任何選項表示,聲明所有的環境變數以及使用者自訂變數
使用者自訂變數,可以使用unset 變數名 進行解除變數設定
3、系統和個人環境變數的設定檔
/etc/profile PATH,USER,LOGNAME,MAIL,INPUTRC,HOSTNAME,HISTSIZE,umask等
/etc/bashrc $PS1 umask 以後如果設定umask修改/etc/profile,不要改這個檔案
.bash_profile 使用者自己的環境變數
.bashrc 當使用者登入時以及每次開啟新的shell時,執行該檔案
.bashrc_history 記錄命令曆史用的
.bash_logout 當退出shell時,會執行該檔案
4、shell中的特殊符號
* 匹配符號,0個或多個任一字元
?匹配字元,1個任意的字元
# 注釋說明用的,使後面的內容失去原本的意義
\ 脫義字元,將特殊字元還原為一般字元
| 將符號前面命令的結果丟給符號後面的命令,一般針對文檔操作的命令比較常用,如cat,less,head
cut,sort,wc,uniq,tee,tr,split,sed,awk等等
$ 引用變數,還有!$
; 分號,多條命令寫一行時,分隔命令
~ 使用者家目錄
& 放到命令最後面,讓命令在後台運行
>,>>,2>,2>> [錯誤]重新導向,追加[錯誤]重新導向
[]中括弧,中間為字元組合,代表中間字元中的任意一個 ls 1[23a].txt
5、常用命令:
1)cut
文法:cut -d ‘分隔字元‘ [-cf] n 這裡的n是正整數
-d 後面指定分隔字元,用單引號括起來,-f指定第幾段 cut -d ‘:‘ -f 1 /etc/passwd |head -n 5
-c 後面只有一個數字表示截取第幾個字元 head -n2 /etc/passwd|cut -c2
-c 後面跟一個數字地區,表示截取從幾到幾 head -n2 /etc/passwd|cut -c2-5
2)sort
文法:sort [-t 分隔字元] [-kn1,n2] [-nru] (n1<n2)
不加選項,從首字元向後,一次按ASCII碼值進行升序sort /etc/passwd
-t 後指定分隔字元,-kn1,n2表示在指定的區間中排序,-k後面只跟一個數字表示對第N個字元排序,-n表示使用純數字排序 sort -t: -k3 -n /etc/passwd
-r表示以降序的形式排序 sort -t: -k3,5 -r /etc/passwd
-u去重 cut -d: -f4 /etc/passwd |sort -n -u
3)wc
用於統計文檔的行數、字元數、詞數
不加任何選項,會顯示行數、詞數以及字元數
-l 統計行數 -m 統計字元數 -w統計詞數
4)uniq
uniq去重複,最常用就一個-c用來統計重複的行數,去重前要先排序sort testb.txt|uniq -c
5)tee
後跟檔案名稱,類似於>,比重新導向多一個功能,在把檔案寫入後面所跟的檔案中的同時,還顯示在螢幕
6)tr用來替換字元
最常用的就是大小寫轉換 head -n2 /etc/passwd |tr ‘[a-z]‘‘[A-Z]‘
tr也可以替換一個字元 grep ‘root‘ /etc/passwd |tr ‘r‘‘R‘
7)split切割大檔案
-b 按大小來分割單位為byte split -b50 1.txt
預設會以xaa,xab,...這樣的形式定義分隔後的檔案名稱,也可以指定檔案名稱split -b50 1.txt 123
-l 按行數分隔,split -110 file
6 &&和||
command1;command2前面命令是否執行完成都會執行後面的命令
command1&&command2隻有前面命令執行成功才會執行後面命令
command1||command2隻有前面命令不成功再去執行後面命令
本文出自 “Rhythm” 部落格,請務必保留此出處http://rhythm.blog.51cto.com/2800158/1652266
2015.4.8 Shell基礎知識