輸入輸出重定向
? ? 輸入重定向:將文件內容導入到命令中;輸出重定向:將命令執行后顯示到屏幕上的內容導入到文件中,不在屏幕中顯示。共分為:標準輸入重定向(文件描述符為0)、標準覆蓋輸出(1)、標準追加輸出(1)、錯誤覆蓋輸出(2)、錯誤追加輸出(2)。0,1可省略不寫,2必須要寫。 ?
? ? 標準輸入:wc -l < zsx.txt ?等效于 cat zsx.txt | wc -l ? ?也可以直接: wc -l zsx.txt? ? ?命令 << 截止符 直到輸入內容為截止符(再確認)為止,將輸入內容作為命令的輸入 ?如 wc -l << over
? ? 標準輸出: 命令 > 文件 覆蓋,即清空原文件內容 ? 命令 >> 文件 ?追加 ? 如果命令執行后顯示的是出錯信息,如 ls -l xxx(xxx為不存在的文件),則依然會在屏幕上顯示信息,不會寫入到文件中 ??
? ? 錯誤輸出: 命令 2> 文件 覆蓋 ?命令 2>> 文件 追加 ? ?標準與錯誤信息都輸出: ?命令 >> 文件 2>&1 追加 或者 ?命令 &>> 文件 追加 ? 命令 &> 文件 覆蓋
管道命令符
? ? 命令A | 命令B 前一個命令的輸出(不會在屏幕上顯示)作為后一個命令的輸入。?
? ? grep "/sbin/nologin" /etc/passwd | wc -l? ? ? ? ? ? ? ls -l /etc | more
? ? 命令A | 命令B | 命令C ······
通配符 * ? [] {} (也叫正則表達式)
? ? *匹配零個或多個字符; ?匹配單個字符; [0-9]匹配數字0至9中的單個數字;[135]匹配1、3、5中的單個數字;[a-z] ? [abc]? ? ? ? ? ? {1,3,5}匹配匹配1、3、5中的單個數字,且沒有的數據項會報錯 ? ?ls -l? /dev/sda{1,3,5} ? ls -l? /dev/sda{12,1,23,24} ?[a-z][A-Z]匹配的 是兩個字符,第一個為小寫,第二個為大寫。
轉義字符
? ? ?\(反斜杠) :將其后面的一個變量變為單純的字符串 ? ''(單引號):轉義其中的所有變量為單純的字符串 ?
? ? ``(反引號):把其中的命令執行后返回結果 ? ""(保留其中的變量屬性,不做轉義處理) ?
? ? $為變量提取符號(是一個變量) ? VALUE=5 //定義一個變量VALUE值為5 ? ? echo "the value is $VALUE" ? $ $表示顯示當前程序的進程號碼 ? echo "the value is $ $VALUE" ? ? 輸出為 the value is 3427VALUE ?echo"the value is \$ $VALUE" 輸出為 the value is $5? echo 'the value is $ $VALUE' 輸出為 the value is$$VALUE ? ? ?echo `uname -a` ?與 uname -a的效果一樣 也等價于: echo $(uname -a) ? ?即 `uname -a`與$(uname -a)是等效的 ? `命令`與$(命令)等效
環境變量
? ? ?Linux系統中的變量名都為大寫(規定),環境變量是用來定義系統運行環境的一些參數,如:用戶家目錄、存放路徑等。可用env命令查看當前用戶所有的環境變量。 ?不同用戶的環境變量值都不一定相同,Linux為每個用戶提供獨立的、合適的工作環境 ?HOME 用戶的家目錄 HISTSIZE 輸出的歷史命令條數 HISTFILESIZE保存的歷史命令條數 ? SHELL 用戶使用的SHELL解釋器名稱(/bin/bash,為一個二進制文件) ?MALL 郵件保存路徑 RANDOM生成一個隨機數字 ? ?PS1 Bash解釋器的提示符,可以自己定義(修改其值即可) ?PATH 解釋器搜索用戶執行命令的路徑。USER? 系統的當前用戶? ?
? ? ? 在Linux系統中一切都是文件,命令也是文件,服務也是一種文件,而對服務程序進行配置自然也就是編輯程序的配置文件,即在配置一個服務時就是在修改這個服務的配置文件。系統中的硬件都會以硬件-文件的形式進行映射,形成設備文件存放在/dev中。命令在Linux系統中執行時會發生4個步驟:判斷用戶是以絕對路徑(/bin/ls)還是相對路徑(ls)的方式輸入命令,如果是絕對路徑,則直接可以得到命令文件,進行執行,否則需要到PATH中去找(當然內部命令不需要);判斷用戶輸入的命令是否為別名命令;判斷命令是內部命令還是外部命令,內部命令(解釋器內部的命令)直接執行,外部命令則需要查找該命令的命令文件(PATH);Bash解釋器在會在環境變量PATH中的多個路徑中依次查找對應的命令文件(若有多個相同名字的這個文件,則第一個找到就不再找了,因此黑客可能會創建一個跟其同名的木馬文件)。PATH中的路徑的增加和刪除都會影響到Bash解釋器對命令的查找,因為有了PATH,/bin/ls 與 ls才會有相同的效果。 修改PATH: PATH=$PATH:/root/bin 即增加一個路徑。Linux有4種命令:路徑命令(占所有命令的1%);alias別名(2%);內部命令(1%);外部命令(96%)。
? ? 變量由變量名和變量值兩部分組成,可以輕松創建: ?WORKDIR=/root/work ?cd $WORKDIR ?但是這樣創建的變量為局部變量,即不能被其它用戶使用,可以使用export命令將其提升為全局變量。export WORKDIRsu命令和su - 命令最大的本質區別就是:前者只是切換了身份,但Shell環境仍然是原來用戶的Shell(環境不變);而后者連用戶和Shell環境一起切換成新用戶身份了。只有切換了Shell環境才不會出現PATH環境變量錯誤。
?