1. 程式人生 > >管道符、重定向與環境變量

管道符、重定向與環境變量

alias 標準 翻頁 重要 防止 grep 反斜杠 信息 9.png

1.輸入輸出重定向

1.輸入重定向:把文件導入到命令中。

符號及作用:

  • 命令 < 文件 : 將文件作為命令的標準輸入
  • 命令 << 分界符 : 從標準輸入中讀入,直到遇到分界符才停止
  • 命令 < 文件1 > 文件2 : 將文件1作為命令的標準輸入並將標準輸出到文件2

技術分享圖片

使用輸入重定向把readme.txt文件導入給wc -l 命令,統計文件中的內容行數。

2.輸出重定向:把原本要輸出到屏幕的數據信息寫入到指定文件中。

符號及作用:

  • 命令 > 文件 : 將標準輸出重定向到一個文件中(清空文件原有數據)
  • 命令 2> 文件 : 將錯誤輸出重定向到一個文件中(清空文件原有數據)
  • 命令 >> 文件 : 將標準輸出重定向到一個文件中(追加到原有內容的後面)
  • 命令 2>> 文件 : 將錯誤輸出重定向到一個文件中(追加到原有內容的後面)
  • 命令 &>> 文件 :將標準輸出與錯誤輸出共同寫入到文件中(追加到原有內容的後面)
  • 命令 >> 文件 2>&1 :將標準輸出與錯誤輸出共同寫入到文件中(追加到原有內容的後面)

技術分享圖片

技術分享圖片

技術分享圖片

錯誤的輸出重定向依然把信息輸出到了屏幕上。

技術分享圖片

把命令的錯誤信息寫入到文件中。

2.管道命令符

按下鍵盤上的Shift+ 即可輸入管道符,執行格式為 “命令A | 命令B”。命令符的作用可以用一句話概括:“把前一個命令原本要輸出到屏幕的數據當做後一個命令的標準輸入

”。

通過管道命令符,可以合並命令,如:

① 找出被限制登陸的命令是 grep "/sbin/nologin" /etc/passwd
② 統計文本行數的命令是 wc -l

技術分享圖片

即找到了限制登陸的用戶數為35,再如:

技術分享圖片

以翻頁形式查看/etc文件中的文件列表及屬性信息,避免了信息一股腦的顯示在屏幕上,根本看不清楚。

技術分享圖片

用戶修改密碼時需要二次確認,這在編寫自動化腳本時成為一個致命缺陷。上圖則是通過管道符以一條命令的形式完成密碼重置。

管道命令符可以在一行命令中使用多次。

3.命令行的通配符

通配符就是通用的匹配信息的符號,如 * 代表匹配零個或多個字符, ? 代表匹配單個字符, 中括號內加上數字[0-9]代表匹配0~9中的單個數字的字符,中括號內加上字母[abc]代表

匹配abc三個字符中的任意一個。

技術分享圖片

匹配以sda開頭的文件。

技術分享圖片

匹配以sda開頭並且後面跟一個數字的文件。

技術分享圖片

匹配sda1,sda3或sda5。

4.常用的轉義字符

4個最常用的轉義字符:

  • 反斜杠():使反斜杠後面的一個變量變為單純的字符串。
  • 單引號(‘ ‘):轉義其中所有的變量為單純的字符串。
  • 雙引號(" "):保留其中的變量屬性,不進行轉義處理。
  • 反引號(` `):把其中的命令執行後返回結果。

技術分享圖片

定義變量PRICE

如果希望輸出內容為 PRICE is $5,則需要添加轉義字符

技術分享圖片

$ 即輸出為$ , $PRICE輸出為5.

技術分享圖片

上圖展示了反引號的使用。通過反引號執行 uname -a 命令,並通過 echo 輸出命令執行結果。

5.重要的環境變量

變量是計算機系統用於保存可變值的數據類型。在Linux系統中,變量名稱一般都是大寫的,這是一種約定俗成的規範。我們可以直接通過變量名稱來提取到對應的變量值。Linux系統中的環境變量是用來定義系統運行環境的一些參數,比如每個用戶不同的家目錄、郵件存放位置等。

命令在Linux中的執行分為4個步驟:
第1步:判斷用戶是否以絕對路徑或相對路徑的方式輸入命令(如/bin/ls),如果是的話則直接執行。
第2步:Linux系統檢查用戶輸入的命令是否為“別名命令”,即用一個自定義的命令名稱來替換原本的命令名稱。可以用alias命令來創建一個屬於自己的命令別名,格式為“alias 別名=
命令”。若要取消一個命令別名,則是用unalias命令,格式為“unalias 別名”。我們在使用rm命令刪除文件時,Linux系統都會要求我們再確認是否執行刪除操作,其實這就是Linux系> 統為了防止用戶誤刪除文件而特意設置的rm別名命令,接下來我們把它取消掉:

技術分享圖片

第3步:Bash解釋器判斷用戶輸入的是內部命令還是外部命令。內部命令是解釋器內部的指令,會被直接執行;而用戶在絕大部分時間輸入的是外部命令,這些命令交由步驟4繼續> 處理。可以使用“type命令名稱”來判斷用戶輸入的命令是內部命令還是外部命令。
第4步:系統在多個路徑中查找用戶輸入的命令文件,而定義這些路徑的變量叫作PATH,可以簡單地把它理解成是“解釋器的小助手”,作用是告訴Bash解釋器待執行的命令可能存
放的位置,然後Bash解釋器就會乖乖地在這些位置中逐個查找。PATH是由多個路徑值組成的變量,每個路徑值之間用冒號間隔,對這些路徑的增加和刪除操作將影響到Bash解釋
器對Linux命令的查找。

技術分享圖片

Linux系統中最重要的10個環境變量

變量名稱 作用
HOME 用戶的主目錄(即家目錄)
SHELL 用戶在使用的Shell解釋器名稱
HISTSIZE 輸出的歷史命令記錄條數
HISTFILESIZE 保存的歷史命令記錄條數
MAIL 郵件保存路徑
LANG 系統語言、語系名稱
RANDOM 生成一個隨機數字
PS1 Bash解釋器的提示符
PATH 定義解釋器搜索用戶執行命令的路徑
EDITOR 用戶默認的文本編輯器

管道符、重定向與環境變量