Linux學習之管道符、重定向、通配符、轉義符、環境變量
1. 輸入輸出重定向
輸入重定向是指把文件導入命令中。
輸出重定向是指把原本要輸出到屏幕的數據信息寫入指定文件中。
a 標准輸入重定向(STDIN,文件描述符0):默認從鍵盤輸入,也可從其他文件或命令中輸入。
b 標准輸出重定向(STDOUT,文件描述符1):默認輸出到屏幕,一般省略。
c 錯誤輸出重定向(STDERR,文件描述符2):默認輸出到屏幕,文件描述符必須寫上。
輸入重定向中用到的符號及作用:
命令 < 文件 將文件作為命令的標准輸入
命令 << 分界符 從標准輸入中讀入,直到遇見分界符停止
1 1 %mail -s "Readme" root@gmail.com << over #over為分界符,用戶輸入內容直到over結束
命令 < 文件1 > 文件2 將文件1作為命令的標准輸入並將標准輸出到文件2
輸出重定向中用到的符號及其作用:
命令 > 文件 將標准輸出重定向到一個文件中(重寫,清空原有數據)
命令 2> 文件 將錯誤輸出重定向到一個文件中(重寫,清空原有數據)
命令 >> 文件 將標准輸出重定向到一個文件中(追加,至原文件內容后面)
命令 2>> 文件 將錯誤輸出重定向到一個文件中(追加,至原文件內容后面)
命令 >> 文件 2>&1 將標准輸出與錯誤輸出共同寫入到文件中(追加,至原文件內容后面)
或 命令 &>> 文件
標准輸出與錯誤輸出的區別:
若命令沒有錯誤輸出,錯誤輸出時把信息輸出到屏幕上;若命令有錯誤輸出,則寫入文件中,無返回值。標准輸出相反
例 若ss文件存在
%ls -l ss > /root/stderr.txt #沒報錯,信息寫入文件
%ls -l ss 2> /root/stderr.txt #沒報錯,將信息輸出到屏幕(不寫入)
2 管道符
作用:將前一命令原本要輸出到屏幕的標准正常數據當作后一命令的標准輸入。
%grep "/sbin/nologin" /etc/passwd | wc -l
例:用一條命令完成密碼重置操作(修改密碼需輸入2次密碼確認)
%echo "linux" | passwd --stdin root
用一條命令打包內容和標題並發送郵件
1 %echo "Content" | mail -s "Subject" linux 2 %su - linux 3 %$ mail
管道符也可以用於多個命令,如:命令1 | 命令2 | 命令3
3 命令行的通配符
* 代表匹配0個或多個
? 代表匹配單個字符
[0-9] 代表匹配0-9之間的單個數字字符
[135][abc] 代表匹配1、3或5(a、b、c)中的單個字符
4 常用轉義字符
反斜杠(\) 使反斜杠后面的一個變量變為單純的字符串
單引號('') 轉義其中所有的變量為單純的字符串
雙引號("") 保留其中的變量屬性,不進行轉義處理
反引號(``) 把其中的命令執行后返回結果
1 %PRICE=5 2 %echo "Price is \$$PRICE" #$$作用是顯示當前程序的ID號,需用\使$變為一個單純的字符串
輸出結果為:
1 Price is $5
5 環境變量
變量是計算機系統用於保存可變值得數據類型,在Linux系統中,變量名稱一般是大寫。環境變量是用來定義系統運行環境的一些參數。
命令在Linux系統中執行共有4步:
第一步: 判斷用戶是否以絕對路徑或相對路徑方式輸入命令(如/bin/ls),如果是則直接執行。
第二步: Linux系統檢查用戶輸入的命令是否為“別名命令”,即用一個自定義的命令名稱來替換原本的命令名稱。
第三步: Bash解釋器判斷用戶輸入的是內部命令還是外部命令。內部命令是解釋器內部的指令,會被直接執行;而用戶在絕大部分時間輸入的是外部命令,這些命令交由第四步繼續處理。
第四步: 系統在多個路徑中查找用戶輸入的命令文件,而定義這些路徑的變量叫做PATH,Bash解釋器會在PATH中逐個查找。
其他知識點:
alias、unalias命令
用來創建或取消一個屬於自己的命令別名,格式為“alias [別名]”或“unalias [別名]”,rm命令刪除文件需用戶確認即是為防止誤刪而設置的別名命令
取消rm刪除時的用戶確認:
%unalias rm #刪除rm的別名命令,即刪除用戶確認
設置rm刪除時的用戶確認:
%alias rm='rm -i' #-i參數為用戶確認
添加PATH路徑
PATH是由多個路徑值組成的變量,每個路徑值之間用:間隔,添加刪除命令影響Bash解釋器對Linux命令的查找
%PATH=$PATH:/root/bin
注:將當前目錄(.)添加到PATH可以讓用戶在某些情況下省去輸入命令所在路徑的麻煩,但如果黑客在比較常用的目錄/tmp中存放了一個與ls或cd命令相同的木馬文件,而用戶在公共目錄中執行了這些命令就會中招,接手一台Linux系統后一定首先要在執行命令前檢查PATH變量中是否有可疑的目錄。
env命令
用於查看Linux系統中的所有環境變量
Linux系統最重要的10個環境變量
HOME 用戶的主目錄(即家目錄)
SHELL 用戶在使用的SHELL解釋器名稱
HISTSIZE 輸出的歷史命令記錄條數
HISTFILESIZE 保存的歷史命令記錄條數
MAIL 郵件保存路徑
LANG 系統語言、語系名稱
RANDOM 生成一個隨機數字
PS1 Bash解釋器的提示符
PATH 定義解釋器搜索用戶執行命令的路徑
EDITOR 用戶默認的文本編輯器
su命令
用於切換用戶身份,格式為“su - [其他用戶名]”
%su - liang
export命令
將變量提升為全局變量
例:設置一個變量,方便用戶更輕松地進入一個較深層次目錄:
1 %mkdir /home/workdir
2 %WORKDIR=/home/workdir
3 %export WORKDIR #提升為全局變量,即所有用戶均可使用此變量