1. 程式人生 > >Day9-1 shell基礎

Day9-1 shell基礎

統計 命令歷史 連續 輸出 day 逆序 默認 設置 需要

shell是一個命令解釋器,提供用戶和機器之前的交互

  1. 命令歷史
    按向上的方向鍵一個個出現之前命令歷史
    history 查看之前的命令
    技術分享圖片
    命令歷史存在文件.bash_history
    技術分享圖片
    文件最大行數由變量HISTSIZE決定,默認1000
    技術分享圖片
    變量HISTSIZE可在/etc/profile中修改
    HISTTIMEFORMAT="%Y/%m/%d %H:%M:%S "
    設置時間顯示,非永久有效,若要一直有效,需要在/etc/profile中增加
    技術分享圖片
    chattr +a ~/.bash_history 永久保存命令(chattr +a只能增加不能刪除)
    !! 上一條命令
    ![char] 最近char開頭的命令
    !n 前第n條命令

  2. 命令補全
    當命令開頭打出一部分,如‘mk‘,tab鍵補全命令和文件目錄名,若結果不唯一,需要連續按兩下,會列出所有以mk開頭的命令

  3. 通配符

    • 任意數量任意字符
      ? 1個任意字符
      [0-9] 任意一個數字 [2345] 2345任一
      [a-z] a-z任意一個
      [A-Z] A-Z任意一個
      [0-9a-zA-Z]任一數字或字母
      {1,3,t,y,H} 枚舉式選一個,中間用逗號隔開
  4. 輸入輸出重定向
    [contents or cmd] > [file] 將左邊內容(正確)重定向到右邊文件,覆蓋文件原有內容
    [contents or cmd] >> [file] 將左邊內容(正確)重定向到右邊文件,不覆蓋文件原有內容,追加
    [contents or cmd] 2> [file] 將左邊內容(錯誤)重定向到右邊文件,覆蓋文件原有內容
    [contents or cmd] 2>> [file] 將左邊內容(錯誤)重定向到右邊文件,不覆蓋文件原有內容,追加
    [contents or cmd] &> [file] 將左邊所有內容重定向到右邊文件,覆蓋文件原有內容
    [contents or cmd] &>> [file] 將左邊所有內容重定向到右邊文件,不覆蓋文件原有內容,追加
    [contents or cmd] > [file1] 2>[file2] 正確和錯誤內容分別輸出到不同文件

[cmd] < [file] 將文件內容輸入到命令裏(左邊不能是文件)

  1. 管道符
    管道符: [cmd] | [cmd] 將左邊命令結果輸出到右邊
    cut 截取字符
    -d ‘[xx]‘ 以xx為分隔符
    -f n,m 截取第n和m位
    -c 指定第幾個字符
    技術分享圖片
    sort 排序
    -n 以數字排序(其他符號識別為0)
    -r 逆序
    技術分享圖片
    wc 統計字符
    -l 行數
    -m 字符數
    -w 詞數(根據空格來分隔,不是真的認單詞)
    技術分享圖片
    uniq 去重(要先排序使相同行相鄰才能去重)
    -c 統計重復次數
    技術分享圖片
    tee 相當於>,但是要加上|管道符,以及會顯示出來
    -a 追加
    技術分享圖片
    tr 替換字符
    技術分享圖片
    split 切割
    -b 大小(默認單位字節)
    -l 行數

  2. 作業控制
    ctrl + z 暫停任務
    fg n 回到(第n個)暫停命令
    jobs 查看停止或後臺運行的任務
    bg 把任務放到後臺運行(暫停後可以用)
    命令後加‘ &‘ 直接把命令放到後臺運行

  3. 變量
    env 查看系統變量
    技術分享圖片
    自定義變量,c未定義,因此無內容
    技術分享圖片
    unset [變量名] 撤銷變量定義
    變量命名:由數字、字母、下劃線組成,首位不能是數字
    變量值中有特殊符號時,要用單引號括起來
    技術分享圖片
    單引號、雙引號和反引號的區別,在另一塊看到的http://blog.csdn.net/iamlaosong/article/details/54728393

bash 進入子shell
技術分享圖片
進入子shell後 exit退出此shell
一般定義變量不跨shell
export [變量名]=[變量值] 此定義可以用在當前shell的子shell

環境變量配置文件
/etc/profile 登錄後加載
/etc/bashrc執行shell加載
用戶目錄下的是:
~/.bashrc
~/.bash_profile
~/.bash_history
~/.bash_logout 定義用戶退出時要進行的操作
變量PS1,在/etc/profile中定義,表示命令前字符串格式
技術分享圖片
W的大小寫對應當前路徑顯示完整與否
技術分享圖片

  1. 特殊符號
    $ 變量前綴
    ; 多條命令寫在一行用分號分隔
    ~ 用戶家目錄
    & 放在命令後面,表示把命令放到後臺
    [] 指定字符中的一個
    || 兩條命令間,第一條命令執行失敗,才執行後面命令
    && 兩條命令間,第一條命令執行成功,才執行後面命令

Day9-1 shell基礎