【魔德科技】【Linux學習筆記】第8章 Linux shell基礎知識

本筆記由魔德科技(http://modekeji.cn)提供


8.1shell介紹
shell是一個命令解釋器,提供人機交互。
支持特定語法。
每個用戶都可以有自己特定的shell(bash)。
CentOS7默認bash(Bourne Agin Shell)。
其他還有zsh、ksh等。


8.2命令歷史
命令歷史存放於~/.bash_history文件下。
history 查看之前用過的命令,默認保存最近1000條,由變量HISTSIZE設定條數,HISTSIZE可以到配置文件/etc/profile中去配置,配置後需要source纔會生效。
history -c 清空當前內存中的命令歷史,不能清除~/.bash_history中的命令。
當前的命令,存放於內存中,在退出終端的時候,纔會保存到.bash_history文件中。
HISTTIMEFORMAT=”%Y/%m/%d %H:%M:%S” 設定顯示時間格式,可在/etc/profile中配置永久生效。配置後,history將顯示命令執行的時間。
chattr +a ~/.bashhistory 加a權限,只能追加,不能刪除,使命令歷史永久保存。
若不正常退出終端,命令歷史保存將存在差錯。
!! 執行上一條命令。
!n n爲數字,執行命令歷史中的第n條命令。
!word 執行最近的以word開頭的命令。


8.3命令補全和別名
Tab鍵,敲一下(唯一自動補全),敲兩下(多個列出列表)。
CentOS7支持自動補全命令參數。需安裝相關包:yum install -y bash-completion,然後reboot重啓系統才生效。
命令別名alias command=’comand blablabla’
alias 可查看系統中的命令別名。
~/.bashrc和/etc/profile.d/目錄下的文件中,可以配置命令別名。
unalias command 取消自定義的command命令別名。


8.4通配符

  • 匹配任意多個任意字符。
    ? 匹配一個任意字符。
    [0-3]或[0123] 匹配方括號中的任意一個字符。[0-9a-zA-Z]
    {1,2,3,a} 匹配花括號中的任意一個。

8.5輸入輸出重定向
\> 輸出重定向。
command >FILE 將command的正確輸出,寫到FILE中。
command >>FILE 將command的正確輸出,追加到FILE中。
command 2>FILE 將command運行輸出的錯誤信息,寫到FILE中。
command 2>>FILE 將command運行輸出的錯誤信息,追加到FILE中。
正確+錯誤:>+2>用&>表示。
command &>FILE 將command運行輸出的正確和錯誤信息,寫到FILE中,同樣支持追加command &>>FILE
command >FILE1 2>FILE2 可將正確和錯誤的信息分開保存,多用於寫Shell腳本中。如:
ls 1.txt 2.txt >t.txt 2>e.txt
< 輸入重定向(幾乎用不到)。
command <FILE 將FILE文件內容,輸入到command命令中。如:
wc -l <1.txt 查看1.txt中內容的行數。
wc -l >1.txt 是把wc -l得到的正確輸出,寫到1.txt中。


8.6管道符和作業控制
| 管道符。
command1 |command2command1輸出的內容,交給command2
作業控制:
Ctrl+Z 暫停一個任務。
fg 將後臺的任務調到前臺。如果後臺有多個任務,可用跟編號fg 1,fg 2……來將相應任務調到前臺,若多個後臺任務,不加編號時,調出最後一個。
bg 將前臺任務調到後臺。
對於fgbg命令,一個終端查不到另一個終端的任務,但是可以ps aux查到進程,如:ps aux |grep sleep 查看sleep任務的進程。
jobs 列出所有停止的任務,可查看到命令編號。
vmstate t(間隔時間) n(刷新次數) 監控系統狀態。
sleep N 系統暫停N秒,什麼也不做。
命令後加&符號,直接將命令丟到後臺執行。如:sleep 100 &


8.7shell變量(上)
env 查看系統變量。變量名通常爲大寫。
set 查看變量,包括用戶自定義變量。
自定義變量:
變量名=變量值 設置變量。
echo $變量名 顯示變量。
變量名規則:字母、數字、下劃線,首位不能爲數字。
變量值有特殊符號時需要用單引號括起來,單引號可以對特殊符號脫義。雙引號不能脫義。


8.8shell變量(下)
全局變量(向下生效,pstree可查看):
export 變量名=變量值 設置全局變量。
unset 變量名 取消變量。


8.9環境變量配置文件
系統層次:/etc/profile、/etc/bashrc 一般不更改其內容。
用戶層次:~/.bashrc、~/.bash_profile、~/.bash_history、~/.bash_logout(定義退出系統時的操作)
profile在用戶登錄時自動加載;bashrc不需要登錄,在執行shell的時候自動調用。
變量PS1可設定命令前的顯示。PS2設定進入另一個命令中的顯示。


8.10shell特殊符_cut命令
* 匹配任意個任意字符。
? 匹配任意一個字符。
# 註釋字符。
\ 脫義字符(設置變量時,對特殊字符,可用\取代單引號)。
| 管道符。
cut 分割內容。
-d 指定分割符。
-f 指定段號。
-c 指定第幾個字符。
應用示例:cat /etc/passwd |head -5 |cut -d “:” -f 1,2 讀取/etc/passwd,顯示前5行,以“:”爲分割符,截取1,2段。


8.11sort_wc_uniq命令
sort FILENAME 對文件內容排序(按ASCⅡ碼)。
-n 以數字排序(字母全都認爲是0)。
-r 反序。
-t 分隔符 -kn1/-kn1,n2。
wc 統計。
-l 統計行數。
-m 統計字符數,包括每行後面隱藏的換行符($)。
-w 統計詞。
uniq 去重(只會對相鄰行去重,所以需要先排序再去重)。
-c 統計行數(每行重複的次數)。


8.12teetrsplit命令
tee與輸出重定向>類似,重定向的同時還在屏幕顯示,前面需要加管道符|。
>FILENAME 可清空文件內容。
tr 替換字符,
tr ‘a’ ‘b’ 將a替換爲b。
tr ‘[ab]’ ‘[AB]’ 小a替換爲A,小b替換爲B。
tr ‘[a-z]’ ‘[A-Z]’ 大小寫替換。
split 切割,
-b 指定大小(默認單位爲字節),可加單位:K,M等。
-l 指定行數。


8.13shell特殊符號(下)
$ 變量前綴。
!$ 正則裏面表示行尾。
; 多條命令寫到一行,用分號;分隔。
~ 用戶家目錄,正則表達式中表示匹配符。
& 放到命令末尾,將命令丟到後臺運行。
\> 輸出重定向;
\>> 追加重定向。
2>錯誤輸出重定向;
2>> 錯誤追加重定向。
&> 正確+錯誤輸出重定向。
&>> 正確+錯誤追加重定向。
[] 指定字符中的一個,[0-9],[a-z,A-Z],[abc]。
|| 正則中表示或,用於命令之間。
COMMAND1 || COMMNAD2 表示若第一條命令執行不成功,則執行第二條命令;若第一條命令執行成功,則不再執行第二條命令。
&& 正則中表示與,用於命令之間。
COMMAND1 && COMMNAD2 表示只有第一條命令執行成功之後,才執行第二條命令。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章