shell基礎知識(3.16)

shell

  1. 記錄歷史記錄
  • !! :表示執行上一條命令
  • !n(n爲數字):表示執行第n條命令
  • !字符串(字符串大於1):如!pw,表示執行命令歷史中最近一次以pw開頭的命令
  1. tab鍵:補全命令和文件名,2下則會把所有的命令或者文件名都列出來
  2. 別名
  • alias:把常用並且很長的指令領取名爲一個簡單易記的指令
  • unalias:解除別名
  • 自定義別名:alias (命令別名)=('具體的命令')

#alias aming=‘pwd’
#awing
/root
#unalias aming
#aming
bash:aming:未找到命令…

  1. 通配符
  • “*”:匹配0個或多個字符
  • “?”:匹配1個字符

#ls -d /tmp/4_6/test*
/tmp/4_6/test1 /tmp/4_6/test4 /tmp/4_6/test5
#touch /tmp/4_6/test111
#ls -d /tmp/4_6/test?
/tmp/4_6/test1 /tmp/4_6/test4 /tmp/4_6/test5

  1. 輸入/輸出重定向
  • “<”(輸入重定向):用於改變命令的輸入
  • “>”(輸出重定向):用於將命令的結果輸入到文件中,而不是屏幕上

#mkdir /tmp/10
#cd /tmp/10
#echo "123" > 1.txt
#echo "123" >> 1.txt
#cat 1.txt
123
123

  1. |:管道符
  2. 作業控制
  • Ctrl+Z:暫停運行進程
  • fg:恢復進程
  • bg:後臺進行
  • Ctrl+C:終止進程

變量

  1. env:列出系統預設的全部系統環境變量。登錄不同的用戶,環境變量的值也不同(只能顯示環境變量)
    root賬戶的環境變量
  • HOSTNAME:主機的名稱
  • SHELL:當前用戶的shell類型
  • HISTSIZE:歷史記錄數
  • MAIL:當前用戶的郵件存放目錄
  • PATH:該變量決定了shell將到哪些目錄中尋找命令或程序
  • PWD:當前目錄
  • LANG:這是與語言相關的環境變量,多語言環境可以修改此環境變量
  • HOME:當前用戶的家目錄
  • LOGNAME:當前用戶的登錄名
  1. set:把系統預設的全部變量都顯示出來,也可以顯示用戶自定義的變量,自定義變量只能在黨前shell中生效
  • 允許系統內所有用戶登錄後都能使用該變量,方法如下:

#echo "export myname=Aming" >> /etc/profile//把echo "export myname=Aming加入到 /etc/profile中
#source /etc/profile//使之生效
#su - test//查看效果

  • 僅允許當前用戶使用該變量,方法如下:

#echo "export myname=Aming" >> .bashrc//把echo "export myname=Aming加入到 .bashrc中
#source .bashrc//使之生效

  • 自定義變量

規定:
(1)格式:a=b,a爲變量名,b爲變量內容,等號兩邊不能有空格
(2)變量名:只能由字母、數字以及下劃線組成,而且不能以數字開頭
(3)當變量內容帶有特殊字符(如空格)時,需加上單引號
(4)若變量內容本身帶有單引號,則需雙引號
(5)若變量內容中需要用到其他命令,運行結果則可以使用反引號
#myname='pwd'
echo $myname
/root
(6)變量內容可以累加其他變量的內容,但需要加雙引號

  1. pstree:把Linux系統中所有進程以樹狀結構顯示出來
  • 若沒有pstree這個命令,yum install psmisc安裝

系統環境變量與個人環境變量的配置文件

  • /ect/profile:這個文件預設了幾個重要的變量,如PATH、USER、MAIL等
  • /ect/bashre:主要預設umask以及PS1(PS1的值:\u指用戶、\h指主機名、\w指當前目錄、$指字符)
  • .bash_profile:定義了用戶的個人化路徑與環境變量的文件名稱
  • .bashre:該文件包含專屬於自己的shell的bash信息
  • .bash_history:用於記錄歷史記錄
  • .bash_logout:當退出shell時,會執行該文件。可將一些清理工作放進去

shell中的特殊符號

  1. 通配符:上面有介紹(shell的第4點)
  2. #:此爲註釋符,即#好後面的內容都會被忽略
  3. \:脫義字符,會將後面的特殊符號還原爲普通字符
  4. cut:用來截取某個字段,格式爲cut -d ‘分隔字符’ (-cf) n//n爲數字,用法:

#cat /etc/passwd|cut -d ':' -f 1 |head -5//:爲分隔符;-f 1表示截取第一段
root
bin
daemon
adm
lp

  • -d:後+分隔字符,分隔字符 要用單括號括起來
  • -c:後+第幾個字符

#head -n2 /etc/passwd|cut -c1,3,10//c後可以是1個數字n,也可以區間n1-n2,還可以n1,n2,n3
ro0
bn

  • -f:後+第幾個區塊
  1. sort:用作排序,格式爲sore (-t 分隔符) (-kn1,n2) (-nru),n1和n2爲數字

-t:後+分隔符,作用跟cut -d一樣
-n:表示使用純數字排序
-r:表示反向排序
-u:表示去重複
-kn1,n2:表示由n1區間排序到n2區間,可以只寫-kn1,雞對n1字段排序

  1. wc:用於統計文檔行數、字符數、詞數,選項-l(統計行數)、-m(統計字符數)、-w(統計詞數),格式爲wc (-lmw)
  2. uniq:用來刪除重複的行,-c比較常用,表示統計重複的行
  • 使用uniq前,必須先給文件排序

#vi xxx。txt
111
222
111
333
#sort xxx.txt |uniq
111
222
333
#sort xxx.txt |uniq -c
2 111
1 222
1 333

  1. tee:類似於重定向“>”,比重定向多一個功能,即把文件寫入後面所跟的文件時,還顯示在屏幕上。用於“|”後

#echo “aaaaaa” |tee xxx.txt
aaaaaa
#cat xxx.txt
aaaaaa

  1. tr:替換字符,常用於處理文檔中出現的特殊符號,如DOS文檔中出現^M。
  • -d:表示刪除某個字符,後+刪除字符
  • -s :表示刪除重複字符

(1)常用於把小寫字母變成大寫字母:

#head -n2 /etc/passwd |tr '[a-z]' '[A-Z]'

(2)替換一個字符:

#grep 'root' /etc/passwd |tr 'r' 'R'

  1. split:用於切割文檔,常用-b和-l
  • -b:表示依據大小來分割文檔,單位爲byte

#mkdir split_dir
#cd !$
cd split_dir
#cp /etc/passwd ./
#split -b 500 passwd
#ls
passwd xaa xab xac xad xae //若不指定目標文件名,就會這麼命名

指定目標文件名

#rm -f xa*
#split -b 500 passwd 123
#ls
123aa 123ab 123ac 123ad 123ae passwd

  • -l:表示依據行數來分割文檔

#rm -f 123a
#split -l 10 passwd
#wc -l *
45 passwd
10 xaa
10 xab
10 xac
10 xad
5 xae
90 總用量

11.“ $”:用作變量前的標識符,還可以結合!來用:

  • !$:表示上一條命令中的最後一個變量
  1. “;”:若想在一行內運行兩個或兩個以上的命令,需要在命令之間加“;”
  2. “~”:表示用戶的家目錄
  3. “&”:若想把一條命令放到後臺執行,則需加上“&”,他通常用於命令運行時間較長的情況,可用在sleep後
  4. 重定向>、>>、2>、2>>
  • “>、>>”:表示取代和追加
  • “2>、2>>”表示錯誤重定向和錯誤追加重定向
  1. "[]":括號內爲字符組合,代表字符組合中的任意一個,可以是一個範圍(1-3,a-z)
  2. “&&”和“||”:命令分隔符
  • command1 ; command2:不管 command1是否成功, command2都會執行
  • command1 && command2:只有 command1執行成功後, command2纔會執行
  • command1 || command2: command1執行成功後則 command2不執行,否則執行 command2,即 command1和 command2中總有一條命令會執行
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章