Bash基本功能

  • 別名
    別名最大的好處就是省去一大堆寫法,例如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  //更改歷史命令默認保存數量

  • 輸出重定向
    1. 命令 >(>>) 文件 2>&1 覆蓋(追加)方式把命令的正確輸出 輸出到指定文件或設備中
    2. 命令 &>(&>>)文件 覆蓋(追加)方式把命令的正確輸出 輸出到指定文件或設備中
    3. 命令 >>文件1 2>>文件2 把正確的輸出追加到文件1中,把錯誤的輸出追加到文件2中
    4. 命令 &> /dev/null 將命令的結果丟入null(作用類似於垃圾箱)中 只執行,不顯示
解釋:命令1和命令2的實現的效果是一樣的。 >代表覆蓋 >>代表追加

  • 管道符 “|”
    1. 鋪墊:
      a. “;”連接命令 順序執行
      b. “&&”連接命令 邏輯與 執行 第一條執行 第二條執行 第一條錯誤 第二條不執行
      c. “||”連接命令 邏輯或 執行 第一條執行 第二條不執行 第一條錯誤 第二條執行
      小技巧:腳本中的應用:命令 && echo yes || echo no 命令正確yes 錯誤no
    2. more [文件名] “分頁顯示文件內容”
    3. “|” 管道符: 命令1|命令2 命令1正確的結果 作爲命令2的操作對象
    4. “|” 管道符 命令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的方式得到變量的值

\ 轉義符,跟在\之後的特殊符號將失去特殊含義,變爲普通字符。如\$將輸出"$"符號
發佈了57 篇原創文章 · 獲贊 6 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章