當(dāng)前位置:首頁 > IT技術(shù) > 系統(tǒng)服務(wù) > 正文

Linux中重定向、管道符與環(huán)境變量學(xué)習(xí)筆記
2021-08-10 18:55:44

  • 重定向 

 輸入重定向是指把文件導(dǎo)入到命令中,而輸出重定向則是指把原本要輸出到屏幕的數(shù)據(jù)信息寫入到指定文件中。在日常的學(xué)習(xí)和工作中,相較于輸入重定向,我們使用輸出重定向的頻率更高,所以又將輸出重定向分為了標(biāo)準(zhǔn)輸出重定向和錯誤輸出重定向兩種不同的技術(shù),以及清空寫入追加寫入兩種模式。

  

? ?輸入重定向中用到的符號及其作用

符號 作用
命令 < 文件 將文件作為命令的標(biāo)準(zhǔn)輸入
命令 << 分界符 從標(biāo)準(zhǔn)輸入中讀入,直到遇見分界符才停止
命令 < 文件1 > 文件2 將文件1作為命令的標(biāo)準(zhǔn)輸入并將標(biāo)準(zhǔn)輸出到文件2

? ? 輸出重定向中用到的符號及其作用

符號 作用
命令 > 文件 將標(biāo)準(zhǔn)輸出重定向到一個文件中(清空原有文件的數(shù)據(jù))
命令 2> 文件 將錯誤輸出重定向到一個文件中(清空原有文件的數(shù)據(jù))
命令 >> 文件 將標(biāo)準(zhǔn)輸出重定向到一個文件中(追加到原有內(nèi)容的后面)
命令 2>> 文件 將錯誤輸出重定向到一個文件中(追加到原有內(nèi)容的后面)
命令 >> 文件 2>&1

命令 &>> 文件
將標(biāo)準(zhǔn)輸出與錯誤輸出共同寫入到文件中(追加到原有內(nèi)容的后面)
  • ?管道符

  其執(zhí)行格式為“命令A(yù) | 命令B”。管道命令符的作用也可以用一句話來概括“把前一個命令原本要輸出到屏幕的信息當(dāng)作是后一個命令的標(biāo)準(zhǔn)輸入”?! ?/p>

  # grep /sbin/nologin /etc/passwd | wc -l
  # echo "newpasswd" | passwd --stdin root  (一句語句修改root密碼)
 例子經(jīng)典:把管道符比喻成流水線作業(yè),跟吃了頓燒烤是一個道理,第一個人負(fù)責(zé)切肉,第二個人負(fù)責(zé)串肉,第三個人負(fù)責(zé)燒烤,最后的處理結(jié)果交付給用戶。

重定向:連接的命令和文件

管道符:連接的命令和命令

  • 通配符

顧名思義,通配符就是通用的匹配信息的符號,比如星號(*)代表匹配零個或多個字符,問號(?)代表匹配單個字符,中括號內(nèi)加上數(shù)字[0-9]代表匹配0~9之間的單個數(shù)字的字符,而中括號內(nèi)加上字母[abc]則是代表匹配a、b、c三個字符中的任意一個字符。Linux系統(tǒng)中的通配符及含義如表所示:

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?Linux系統(tǒng)中的通配符及含義

通配符 含義
* 任意字符
? 單個任意字符
[a-z] 單個小寫字母
[A-Z] 單個大寫字母
[a-Z] 單個字母
[0-9] 單個數(shù)字
[[:alpha:]] 任意字母
[[:upper:]] 任意大寫字母
[[:lower:]] 任意小寫字母
[[:digit:]] 所有數(shù)字
[[:alnum:]] 任意字母加數(shù)字
[[:punct:]] 標(biāo)點(diǎn)符號
# ls -l /dev/sda*
# ls -l /dev/sda?
# ls -l /etc/*.conf
  • 轉(zhuǎn)義字符

  4個最常用的轉(zhuǎn)義字符如下所示。

反斜杠():使反斜杠后面的一個變量變?yōu)閱渭兊淖址?/p>

單引號(''):轉(zhuǎn)義其中所有的變量為單純的字符串。

雙引號(""):保留其中的變量屬性,不進(jìn)行轉(zhuǎn)義處理。

反引號(``):把其中的命令執(zhí)行后返回結(jié)果。

  • 環(huán)境變量

命令在Linux中的執(zhí)行分為四個步驟。

第1步:判斷用戶是否以絕對路徑或相對路徑的方式輸入命令(如/bin/ls),如果是的話則直接執(zhí)行。

第2步:Linux系統(tǒng)檢查用戶輸入的命令是否為“別名命令”,即用一個自定義的命令名稱來替換原本的命令名稱。

第3步:Bash解釋器判斷用戶輸入的是內(nèi)部命令還是外部命令。內(nèi)部命令是解釋器內(nèi)部的指令,會被直接執(zhí)行;而用戶在絕大部分時間輸入的是外部命令,這些命令交由步驟4繼續(xù)處理??梢允褂谩皌ype 命令名稱”來判斷用戶輸入的命令是內(nèi)部命令還是外部命令

第4步:系統(tǒng)在多個路徑中查找用戶輸入的命令文件,而定義這些路徑的變量叫作PATH,可以簡單地把它理解成是“解釋器的小助手”,作用是告訴Bash解釋器待執(zhí)行的命令可能存放的位置,然后Bash解釋器就會乖乖地在這些位置中逐個查找。PATH是由多個路徑值組成的變量,每個路徑值之間用冒號間隔,對這些路徑的增加和刪除操作將影響到Bash解釋器對Linux命令的查找。

Linux系統(tǒng)中最重要的10個環(huán)境變量

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

變量是由固定的變量名與用戶或系統(tǒng)設(shè)置的變量值兩部分組成的,完全可以自行創(chuàng)建變量,來滿足工作需求。例如設(shè)置一個名稱為WORKDIR的變量,方便用戶更輕松地進(jìn)入一個層次較深的目錄:

# mkdir /home/workdir
# WORKDIR=/home/workdir
# cd $WORKDIR

但是,這樣的變量不具有全局性,作用范圍也有限,默認(rèn)情況下不能被其他用戶使用:可以使用export命令將其提升為全局變量,這樣其他用戶也就可以使用它了:
# export?WORKDIR

unset命令取消設(shè)置的變量
# unset WORKDIR

?

書本筆記截圖:

?

Linux中重定向、管道符與環(huán)境變量學(xué)習(xí)筆記_重定向Linux中重定向、管道符與環(huán)境變量學(xué)習(xí)筆記_重定向_02

?

?
?
?
?

本文摘自 :https://blog.51cto.com/u

開通會員,享受整站包年服務(wù)立即開通 >