- 重定向
輸入重定向是指把文件導(dǎo)入到命令中,而輸出重定向則是指把原本要輸出到屏幕的數(shù)據(jù)信息寫入到指定文件中。在日常的學(xué)習(xí)和工作中,相較于輸入重定向,我們使用輸出重定向的頻率更高,所以又將輸出重定向分為了標(biāo)準(zhǔn)輸出重定向和錯(cuò)誤輸出重定向兩種不同的技術(shù),以及清空寫入與追加寫入兩種模式。
? ?輸入重定向中用到的符號(hào)及其作用
符號(hào) | 作用 |
命令 < 文件 | 將文件作為命令的標(biāo)準(zhǔn)輸入 |
命令 << 分界符 | 從標(biāo)準(zhǔn)輸入中讀入,直到遇見分界符才停止 |
命令 < 文件1 > 文件2 | 將文件1作為命令的標(biāo)準(zhǔn)輸入并將標(biāo)準(zhǔn)輸出到文件2 |
? ? 輸出重定向中用到的符號(hào)及其作用
符號(hào) | 作用 |
命令 > 文件 | 將標(biāo)準(zhǔn)輸出重定向到一個(gè)文件中(清空原有文件的數(shù)據(jù)) |
命令 2> 文件 | 將錯(cuò)誤輸出重定向到一個(gè)文件中(清空原有文件的數(shù)據(jù)) |
命令 >> 文件 | 將標(biāo)準(zhǔn)輸出重定向到一個(gè)文件中(追加到原有內(nèi)容的后面) |
命令 2>> 文件 | 將錯(cuò)誤輸出重定向到一個(gè)文件中(追加到原有內(nèi)容的后面) |
命令 >> 文件 2>&1 或 命令 &>> 文件 |
將標(biāo)準(zhǔn)輸出與錯(cuò)誤輸出共同寫入到文件中(追加到原有內(nèi)容的后面) |
- ?管道符
其執(zhí)行格式為“命令A(yù) | 命令B”。管道命令符的作用也可以用一句話來概括“把前一個(gè)命令原本要輸出到屏幕的信息當(dāng)作是后一個(gè)命令的標(biāo)準(zhǔn)輸入”?! ?/p>
# grep /sbin/nologin /etc/passwd | wc -l
# echo "newpasswd" | passwd --stdin root (一句語(yǔ)句修改root密碼)
例子經(jīng)典:把管道符比喻成流水線作業(yè),跟吃了頓燒烤是一個(gè)道理,第一個(gè)人負(fù)責(zé)切肉,第二個(gè)人負(fù)責(zé)串肉,第三個(gè)人負(fù)責(zé)燒烤,最后的處理結(jié)果交付給用戶。
重定向:連接的命令和文件
管道符:連接的命令和命令
- 通配符
顧名思義,通配符就是通用的匹配信息的符號(hào),比如星號(hào)(*)代表匹配零個(gè)或多個(gè)字符,問號(hào)(?)代表匹配單個(gè)字符,中括號(hào)內(nèi)加上數(shù)字[0-9]代表匹配0~9之間的單個(gè)數(shù)字的字符,而中括號(hào)內(nèi)加上字母[abc]則是代表匹配a、b、c三個(gè)字符中的任意一個(gè)字符。Linux系統(tǒng)中的通配符及含義如表所示:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?Linux系統(tǒng)中的通配符及含義
通配符 | 含義 |
* | 任意字符 |
? | 單個(gè)任意字符 |
[a-z] | 單個(gè)小寫字母 |
[A-Z] | 單個(gè)大寫字母 |
[a-Z] | 單個(gè)字母 |
[0-9] | 單個(gè)數(shù)字 |
[[:alpha:]] | 任意字母 |
[[:upper:]] | 任意大寫字母 |
[[:lower:]] | 任意小寫字母 |
[[:digit:]] | 所有數(shù)字 |
[[:alnum:]] | 任意字母加數(shù)字 |
[[:punct:]] | 標(biāo)點(diǎn)符號(hào) |
# ls -l /dev/sda*
# ls -l /dev/sda?
# ls -l /etc/*.conf
-
轉(zhuǎn)義字符
4個(gè)最常用的轉(zhuǎn)義字符如下所示。
反斜杠():使反斜杠后面的一個(gè)變量變?yōu)閱渭兊淖址?/p>
單引號(hào)(''):轉(zhuǎn)義其中所有的變量為單純的字符串。
雙引號(hào)(""):保留其中的變量屬性,不進(jìn)行轉(zhuǎn)義處理。
反引號(hào)(``):把其中的命令執(zhí)行后返回結(jié)果。
-
環(huán)境變量
命令在Linux中的執(zhí)行分為四個(gè)步驟。
第1步:判斷用戶是否以絕對(duì)路徑或相對(duì)路徑的方式輸入命令(如/bin/ls),如果是的話則直接執(zhí)行。
第2步:Linux系統(tǒng)檢查用戶輸入的命令是否為“別名命令”,即用一個(gè)自定義的命令名稱來替換原本的命令名稱。
第3步:Bash解釋器判斷用戶輸入的是內(nèi)部命令還是外部命令。內(nèi)部命令是解釋器內(nèi)部的指令,會(huì)被直接執(zhí)行;而用戶在絕大部分時(shí)間輸入的是外部命令,這些命令交由步驟4繼續(xù)處理??梢允褂谩皌ype 命令名稱”來判斷用戶輸入的命令是內(nèi)部命令還是外部命令
第4步:系統(tǒng)在多個(gè)路徑中查找用戶輸入的命令文件,而定義這些路徑的變量叫作PATH,可以簡(jiǎn)單地把它理解成是“解釋器的小助手”,作用是告訴Bash解釋器待執(zhí)行的命令可能存放的位置,然后Bash解釋器就會(huì)乖乖地在這些位置中逐個(gè)查找。PATH是由多個(gè)路徑值組成的變量,每個(gè)路徑值之間用冒號(hào)間隔,對(duì)這些路徑的增加和刪除操作將影響到Bash解釋器對(duì)Linux命令的查找。
Linux系統(tǒng)中最重要的10個(gè)環(huán)境變量
變量名稱 | 作用 |
HOME | 用戶的主目錄(即家目錄) |
SHELL | 用戶在使用的Shell解釋器名稱 |
HISTSIZE | 輸出的歷史命令記錄條數(shù) |
HISTFILESIZE | 保存的歷史命令記錄條數(shù) |
郵件保存路徑 | |
LANG | 系統(tǒng)語(yǔ)言、語(yǔ)系名稱 |
RANDOM | 生成一個(gè)隨機(jī)數(shù)字 |
PS1 | Bash解釋器的提示符 |
PATH | 定義解釋器搜索用戶執(zhí)行命令的路徑 |
EDITOR | 用戶默認(rèn)的文本編輯器 |
變量是由固定的變量名與用戶或系統(tǒng)設(shè)置的變量值兩部分組成的,完全可以自行創(chuàng)建變量,來滿足工作需求。例如設(shè)置一個(gè)名稱為WORKDIR的變量,方便用戶更輕松地進(jìn)入一個(gè)層次較深的目錄:
# mkdir /home/workdir
# WORKDIR=/home/workdir
# cd $WORKDIR
但是,這樣的變量不具有全局性,作用范圍也有限,默認(rèn)情況下不能被其他用戶使用:可以使用export命令將其提升為全局變量,這樣其他用戶也就可以使用它了:
# export?WORKDIR
unset命令取消設(shè)置的變量
# unset WORKDIR
?
書本筆記截圖:
?
?
本文摘自 :https://blog.51cto.com/u