1. 程式人生 > >學習筆記第二十三節課

學習筆記第二十三節課

作業

管道符和作業控制

技術分享圖片

  • 管道符表示把一個文件的輸出的內容, 傳遞給後面的命令。
  • 比如wc-l 的用法 可以統計ls 下有多少個目錄 文件。
  • 技術分享圖片
  • 還有之前用的find命令。可以列出當前目錄下所有文件, 也可以用管道符。
  • 技術分享圖片
  • 以後會經常用管道符。
  • ctrl+z 可以暫停一個任務。, 可以用fg 恢復任務。(fg+暫停任務的id號 可以恢復指定的暫停任務。)
  • 技術分享圖片
  • 技術分享圖片
  • jobs 命令 可以把已經停止的任務給列出來。
  • 技術分享圖片
  • bg可以把任務放在後臺。
  • 技術分享圖片
  • vim的命令 可能顯示的不夠明顯, 可以用 vmstat來做實驗。
  • 技術分享圖片
  • 可以用bg把它放在後臺, 雖然他還在顯示。 因為用jobs 它還在運行。
  • 技術分享圖片
  • 在後臺可以用命令 只是會很影響操作, fg 可以把它調到前臺,區別就是 沒辦法敲命令 了。
  • 也可以直接把任務放在後臺 +&
  • 比如 技術分享圖片
  • 在另一個終端是發現不了 別的終端的任務的。
  • 技術分享圖片
  • 但是可以查看別的終端任務的進程。
  • 技術分享圖片

shell變量

  • 技術分享圖片
  • 系統的變量一般都是大寫的英文字母。
  • 變量的值可以是一些數字 ,也可以是一串字符串。
  • 系統有很多配置文件, env 可以查看系統常用的環境變量。
  • 技術分享圖片
  • 還有set 也可以查看變量 還可以看到自己設定的變量。
  • 技術分享圖片
  • 我們可以定義一個自定義的變量(這個和系統的環境變量不一樣)
  • 技術分享圖片
  • 自己定義的變量可以在set裏查看到 (set |grep 123)
  • 技術分享圖片
  • 也可以用 less (set |less)
  • 技術分享圖片
  • 系統的環境變量是內置的,沒有權限去幹涉它,但是可以自己定義一些變量, 寫shell腳本經常要用變量。
  • 變量名的規則 變量名可以是字母 數字 下劃線,但是首位 不能是數字。
  • 技術分享圖片
  • 變量的值如果有特殊符號 要用單引號括起來。
  • 技術分享圖片
  • 也可以用雙引號 但是建議用單引號,因為可以脫譯。
  • 比如 用雙引號 變量的值如果有 特殊符號,用雙引號,系統會識別的不是你想要的效果。
  • 技術分享圖片
  • 技術分享圖片
  • 變量的累加。連起來顯示就是變量的累加。
  • 技術分享圖片
  • 想要特殊符號 在變量值中起作用 可以把特殊符號單獨雙引號引起來。
  • 技術分享圖片

  • 查看自己在那個終端。
  • w查看有兩個用戶登錄了系統。
  • 技術分享圖片
  • echo $SSH_TTY 查看自己在那個終端。
  • 技術分享圖片
  • 技術分享圖片
  • 在pts/0 定義一個變量 yingxin=linux 但是在pts/1 上是沒有這個變量的。
  • 技術分享圖片
  • 技術分享圖片
  • 而且還可以進入一個子shell shell其實就是一個進程。等於進入了一個新的終端,雖然也在pds/0下。 可以用pstree看一下,我們遠程登錄sshd 獲得了一個bash 然後又在終端上運行了一個bash 。
  • 技術分享圖片
  • 現在去運行 echo $yingxin 也沒有出現剛才的定義。
  • 技術分享圖片
  • 退出這個終端, 然後去pstree 可以看到 我們是在pds/0 下了。
  • 技術分享圖片
  • 這個叫做非全局,或者叫本地的變量 僅僅在終端下生效。
  • 可以變成全局的 就是 export 進入了新的終端 依然可以顯示這個變量。 這就是全局環境變量。
  • 技術分享圖片
  • 但是在另一個 pds/1 是沒有生效的。因為這兩個終端沒有任何的交互,所以不會在另一臺終端生效。
  • 技術分享圖片
  • 我們再定義個全局變量 ,然後退出 新的終端,回到上一層終端,會發現 全局變量也沒生效,因為全局變量是一層一層向下的,無法向上生效。
  • 技術分享圖片
  • 這裏的export 是以後寫腳本的時候 會出現 腳本1裏面有腳本2 腳本2會用到腳本1的變量的。
  • 變量可以賦值 也可以取消 就是unset +變量名。
  • 技術分享圖片

環境變量配置文件。

  • 技術分享圖片
  • 環境變量配置文件分兩個緯度 一個是系統層次,一個是用戶層次。
  • etc下屬於系統層次(這兩個文件不要動它,除非以後知道這是怎麽回事了。)
  • 技術分享圖片
  • .bash 屬於用戶層次
  • 技術分享圖片
  • 可以把profile 歸為一個類型 是用戶或者系統在登錄的時候會加載到。
  • bashrc歸為一個類型。是用戶或者系統在執行一個腳本的時候會加載到。
  • 當遇到一些需求 需要去編輯的時候 可以在用戶的家目錄下去編輯它。比如之前的編輯命令顯示的行數改為5000 就可以在這裏添加編輯,要是想全局都變量 需要到etc下去配置。圖中的. 和source是同一個作用。 就是加載配置文件裏的一些配置。
  • 技術分享圖片
  • .bash_profile會z自動調用bashrc bashrc會自動調用etc/bashrc
  • 技術分享圖片
  • .bash_logout 用來定義用戶退出的時候的一些操作。比如每次退出終端 想把命令歷史刪除,就可以把刪除命令歷史的命令放在這個文件裏面。

這裏再說一個變量是 PS1=[033[01;32m]\u@\h[033[00m\033[01;36m\w\033[00m\$‘
這個是在etc bashrc裏面定義的。

  • 我們最開始登錄系統的時候 的命令行 最左側是root 用戶名 然後@ 後面跟的主機名。然後是所在的目錄。
  • 技術分享圖片
  • ps1 就是這個命令行的變量配置文件。
  • echo $ PS1 u 就是用戶名, h 就是主機名。 w就是所在目錄。$在用戶下是$ 在root下是#
  • 這裏是一個大寫的w 也可以改為小寫。
  • 技術分享圖片
  • 修改後就是一個全局路徑。
  • 用戶名,主機名都是可以修改的, 方括號也可以取消掉。
  • 技術分享圖片
  • 我們也可以讓他帶顏色。
  • 技術分享圖片
  • PS2 是用在另外一個環境裏面的。

學習筆記第二十三節課