別名
別名最大的好處就是省去一大堆寫法,例如mac中沒有”ll”的寫法,alias ll 'ls -l'
這樣的話,以後敲”ll”就可以得到當前目錄文件的長格式顯示而不必打”ls -l”修改別名使用alias進行快速修改,但是重啓系統後就會失效,這是臨時修改。
如果想要永久修改,需要修改配置文件~/.bashrc,在裏面對應處添加alias命令。
想要讓剛修改的.bashrc文件生效,執行source .bashrc
將配置文件重新加載一遍就可以了。unalias ll
刪除別名命令生效順序
如果你alias ls 'ls -ah'
,那麼當你執行ls的時候是執行別名還是bash的基本命令呢?這裏有一個執行優先級順序:
第一順位執行絕對路徑或者相對路徑的命令
第二順位執行別名
第三順位執行Bash的內部命令
第四順位執行按照$PATH環境變量設置定義的目錄順序的第一個命令快捷鍵
ctrl + c 強制終止
ctrl + l 清屏相當於clear
ctrl + a 光標快速回到行首(命令敲了一長串發現第一個字母打錯了,光標瞬間回到最前面)
ctrl + e 光標快速去到行尾(光標回到最後面)
ctrl + u 從光標所在位置刪除到行首(把當前一長串輸入的命令清空)
ctrl + z 把命令放入後臺–這個命令很謹慎使用
ctrl + r 歷史命令搜索
- 歷史命令
history [選項] [歷史命令保存文件]
-c 清空歷史命令(一般不清空)
-w 把緩存中的歷史命令寫入歷史命令保存文件 ~/.bash_history
基本調用:
上下箭頭來重複調用
!n 來執行第n條歷史命令(命令`history`顯示歷史命令,前面有個序號n)
!! 重複執行上一條命令
!字符串 重複執行後一個該串開頭的命令(例如執行了`ls -a` `ls -ah`, 當你執行`!ls`,就是執行最近的一條即`ls -ah`)
# 直接cat ~./history時, 該文件下記錄的命令是上次登錄, 正確註銷之後保存的
# 使用history 命令查看的, 不止有之前保存下來的, 還有本次登錄後新操作的命令, 這些命令只有本次正確退出之後纔會寫入 ~./bash_history
#默認保存1000條
#vi /etc/profile 環境變量配置文件
HISTSIZE=1000 //更改歷史命令默認保存數量
- 輸出重定向
- 命令 >(>>) 文件 2>&1 覆蓋(追加)方式把命令的正確輸出 輸出到指定文件或設備中
- 命令 &>(&>>)文件 覆蓋(追加)方式把命令的正確輸出 輸出到指定文件或設備中
- 命令 >>文件1 2>>文件2 把正確的輸出追加到文件1中,把錯誤的輸出追加到文件2中
- 命令 &> /dev/null 將命令的結果丟入null(作用類似於垃圾箱)中 只執行,不顯示
解釋:命令1和命令2的實現的效果是一樣的。 >代表覆蓋 >>代表追加
- 管道符 “|”
- 鋪墊:
a. “;”連接命令 順序執行
b. “&&”連接命令 邏輯與 執行 第一條執行 第二條執行 第一條錯誤 第二條不執行
c. “||”連接命令 邏輯或 執行 第一條執行 第二條不執行 第一條錯誤 第二條執行
小技巧:腳本中的應用:命令 && echo yes || echo no 命令正確yes 錯誤no - more [文件名] “分頁顯示文件內容”
- “|” 管道符:
命令1|命令2
命令1正確的結果 作爲命令2的操作對象 - “|” 管道符 命令1|命令2 命令1正確的結果 作爲命令2的操作對象
例如ls -l > /etc/ | more
用於分頁顯示命令執行結果
netstat -an | grep ESTABLISHED | wc -l
用於查看當前連接本機的客戶端 並 統計客戶端數量”
- 鋪墊:
-通配符
主要針對的是文件名或目錄名的搜索
1.? 匹配任意一個字符
2.* 匹配0個或任意多個字符
3.[] 匹配括號中任意一個字符
4.[-]匹配括號中任意一個字符,-代表一個範圍
5.[^]匹配不是括號中任意一個字符
例如:ls abc*
查找以abc開頭的文件或目錄
- Bash中其他特殊符號
'' 單引號,在單引號中左右的特殊符號,如$,&都沒有特殊含義
"" 雙引號,在雙引號中左右的特殊符號都沒有特殊含義,但是“$”,"`","\"是例外。擁有“調用變量的值”,“引用命令”和“轉義符”的特殊含義。
例如:`aa = 123 && echo "$aa"`
`` 反引號,反引號括起來的內容是系統命令,在Bash中會先執行它。和$()作用一樣。
例如:`aa=`ls` && echo "$aa"`
$() 用來引用系統命令
例如:`aa=$(ls) && echo "$aa"`
# 在Shell腳本中,#開頭的行代表註釋
$ 用於調用變量的值,如需要調用變量name的值時,需要用$name的方式得到變量的值
\ 轉義符,跟在\之後的特殊符號將失去特殊含義,變爲普通字符。如\$將輸出"$"符號