Linux就該這么學》最新正式版已出版上市,同學們可在線上京東網當當網淘寶網亞馬遜等電商平臺購買。

*亦可就近在新華書店購買*

章節概述:

目前為止,我們已經學習了數十個常用的Linux系統命令,如果不能把這些命令進行組合使用,則無法提升工作效率。本章首先講解與文件讀寫操作有關的重定向技術的5種模式—標準覆蓋輸出重定向、標準追加輸出重定向、錯誤覆蓋輸出重定向、錯誤追加輸出重定向以及輸入重定向,讓讀者通過實驗切實理解每個重定向模式的作用,解決輸出信息的保存問題。然后深入講解管道命令符,幫助讀者掌握命令之間的搭配使用方法,進一步提高命令輸出值的處理效率。隨后通過講解Linux系統命令行中的通配符和常見轉義符,讓您輸入的Linux命令具有更準確的意義,為下一章學習編寫Shell腳本打好功底。最后,本章深度剖析了Bash解釋器執行Linux命令的內部原理,為讀者掌握PATH變量及Linux系統中的重要環境變量打下了基礎。

3.1?輸入輸出重定向

既然我們已經在上一章學完了幾乎所有基礎且常用的Linux命令,那么接下來的任務就是把多個Linux命令適當地組合到一起,使其協同工作,以便我們更加高效地處理數據。要做到這一點,就必須搞明白命令的輸入重定向和輸出重定向的原理。

簡而言之,輸入重定向是指把文件導入到命令中,而輸出重定向則是指把原本要輸出到屏幕的數據信息寫入到指定文件中。在日常的學習和工作中,相較于輸入重定向,我們使用輸出重定向的頻率更高,所以又將輸出重定向分為了標準輸出重定向和錯誤輸出重定向兩種不同的技術,以及清空寫入與追加寫入兩種模式。聽起來就很玄妙?劉遄老師接下來將慢慢道來。

標準輸入重定向(STDIN,文件描述符為0):默認從鍵盤輸入,也可從其他文件或命令中輸入。

標準輸出重定向(STDOUT,文件描述符為1):默認輸出到屏幕。

錯誤輸出重定向(STDERR,文件描述符為2):默認輸出到屏幕。

比如我們分別查看兩個文件的屬性信息,其中第二個文件是不存在的,雖然針對這兩個文件的操作都分別會在屏幕上輸出一些數據信息,但這兩個操作的差異其實很大:

[[email protected] ~]# touch linuxprobe
[[email protected] ~]# ls -l linuxprobe 
-rw-r--r--. 1 root root 0 Aug 5 05:35 linuxprobe
[[email protected] ~]# ls -l xxxxxx
ls: cannot access xxxxxx: No such file or directory

在上述命令中,名為linuxprobe的文件是存在的,輸出信息是該文件的一些相關權限、所有者、所屬組、文件大小及修改時間等信息,這也是該命令的標準輸出信息。而名為xxxxxx的第二個文件是不存在的,因此在執行完ls命令之后顯示的報錯提示信息也是該命令的錯誤輸出信息。那么,要想把原本輸出到屏幕上的數據轉而寫入到文件當中,就要區別對待這兩種輸出信息。

對于輸入重定向來講,用到的符號及其作用如表3-1所示。

表3-1???????????????????????????????????????? 輸入重定向中用到的符號及其作用

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

對于輸出重定向來講,用到的符號及其作用如表3-2所示。

表3-2???????????????????????????????????????? 輸出重定向中用到的符號及其作用

符號 作用
命令 > 文件 將標準輸出重定向到一個文件中(清空原有文件的數據)
命令 2> 文件 將錯誤輸出重定向到一個文件中(清空原有文件的數據)
命令 >> 文件 將標準輸出重定向到一個文件中(追加到原有內容的后面)
命令 2>> 文件 將錯誤輸出重定向到一個文件中(追加到原有內容的后面)
命令 >> 文件 2>&1

命令 &>> 文件
將標準輸出與錯誤輸出共同寫入到文件中(追加到原有內容的后面)

對于重定向中的標準輸出模式,可以省略文件描述符1不寫,而錯誤輸出模式的文件描述符2是必須要寫的。我們先來小試牛刀。通過標準輸出重定向將man bash命令原本要輸出到屏幕的信息寫入到文件readme.txt中,然后顯示readme.txt文件中的內容。具體命令如下:

[[email protected] ~]# man bash > readme.txt
[[email protected] ~]# cat readme.txt 
BASH(1)???????????????????? General Commands Manual??????????????????? BASH(1)
NAME
bash - GNU Bourne-Again SHell

SYNOPSIS
bash [options] [file]

COPYRIGHT
Bash is Copyright (C) 1989-2011 by the Free Software Foundation, Inc.

DESCRIPTION
Bash? is? an? sh-compatible? command language interpreter that executes
commands read from the standard input or from a file.? Bash also incor‐
porates useful features from the Korn and C shells (ksh and csh).

Bash? is? intended? to? be a conformant implementation of the Shell and
Utilities portion? of? the? IEEE? POSIX? specification? (IEEE? Standard
1003.1).? Bash can be configured to be POSIX-conformant by default.

………………省略部分輸出信息………………

有沒有感覺到很方便呢?我們接下來嘗試輸出重定向技術中的覆蓋寫入與追加寫入這兩種不同模式帶來的變化。首先通過覆蓋寫入模式向readme.txt文件寫入一行數據(該文件中包含上一個實驗的man命令信息),然后再通過追加寫入模式向文件再寫入一次數據,其命令如下:

[[email protected] ~]# echo "Welcome to LinuxProbe.Com" > readme.txt
[[email protected] ~]# echo "Quality linux learning materials" >> readme.txt

在執行cat命令之后,可以看到如下所示的文件內容:

[[email protected] ~]# cat readme.txt
Welcome to LinuxProbe.Com
Quality linux learning materials

雖然都是輸出重定向技術,但是不同命令的標準輸出和錯誤輸出還是有區別的。例如查看當前目錄中某個文件的信息,這里以linuxprobe文件為例。因為這個文件是真實存在的,因此使用標準輸出即可將原本要輸出到屏幕的信息寫入到文件中,而錯誤的輸出重定向則依然把信息輸出到了屏幕上。

[[email protected] ~]# ls -l linuxprobe 
-rw-r--r--. 1 root root 0 Mar ?1 13:30 linuxprobe
[[email protected] ~]# ls -l linuxprobe > /root/stderr.txt 
[[email protected] ~]# ls -l linuxprobe 2> /root/stderr.txt 
-rw-r--r--. 1 root root 0 Mar ?1 13:30 linuxprobe

如果想把命令的報錯信息寫入到文件,該怎么操作呢?當用戶在執行一個自動化的Shell腳本時,這個操作會特別有用,而且特別實用,因為它可以把整個腳本執行過程中的報錯信息都記錄到文件中,便于安裝后的排錯工作。接下來我們以一個不存在的文件進行實驗演示:

[[email protected] ~]# ls -l xxxxxx 
cannot access xxxxxx: No such file or directory
[[email protected] ~]# ls -l xxxxxx > /root/stderr.txt
cannot access xxxxxx: No such file or directory
[[email protected] ~]# ls -l xxxxxx 2> /root/stderr.txt
[[email protected] ~]# cat /root/stderr.txt 
ls: cannot access xxxxxx: No such file or directory

輸入重定向相對來說有些冷門,在工作中遇到的概率會小一點。輸入重定向的作用是把文件直接導入到命令中。接下來使用輸入重定向把readme.txt文件導入給wc -l命令,統計一下文件中的內容行數。

[[email protected] ~]# wc -l < readme.txt
2

上述命令實際上等同于接下來要學習的cat readme.txt | wc -l的管道符命令組合。

3.2 管道命令符

細心的讀者肯定還記得在2.6節學習tr命令時曾經見到過一個名為管道符的東西。同時按下鍵盤上的Shift+\鍵即可輸入管道符,其執行格式為“命令A?|?命令B”。管道命令符的作用也可以用一句話來概括“把前一個命令原本要輸出到屏幕的標準正常數據當作是后一個命令的標準輸入”。在2.8節講解grep文本搜索命令時,我們通過匹配關鍵詞/sbin/nologin找出了所有被限制登錄系統的用戶。在學完本節內容后,完全可以把下面這兩條命令合并為一條:

找出被限制登錄用戶的命令是grep "/sbin/nologin" /etc/passwd;

統計文本行數的命令則是wc -l。

現在要做的就是把搜索命令的輸出值傳遞給統計命令,即把原本要輸出到屏幕的用戶信息列表再交給wc命令作進一步的加工,因此只需要把管道符放到兩條命令之間即可,具體如下。這簡直是太方便了!

[[email protected] ~]# grep "/sbin/nologin" /etc/passwd | wc -l
33

這個管道符就像一個法寶,我們可以將它套用到其他不同的命令上,比如用翻頁的形式查看/etc目錄中的文件列表及屬性信息(這些內容默認會一股腦兒地顯示到屏幕上,根本看不清楚):

[[email protected] ~]# ls -l /etc/ | more
total 1400
drwxr-xr-x. 3 root root 97 Jul 10 17:26 abrt
-rw-r--r--. 1 root root 16 Jul 10 17:36 adjtime
-rw-r--r--. 1 root root 1518 Jun 7 2013 aliases
-rw-r--r--. 1 root root 12288 Jul 10 09:38 aliases.db
drwxr-xr-x. 2 root root 49 Jul 10 17:26 alsa
drwxr-xr-x. 2 root root 4096 Jul 10 17:31 alternatives
-rw-------. 1 root root 541 Jan 28 2017 anacrontab
-rw-r--r--. 1 root root 55 Jan 29 2017 asound.conf
-rw-r--r--. 1 root root 1 Jan 29 2017 at.deny
drwxr-xr-x. 2 root root 31 Jul 10 17:27 at-spi2
drwxr-x---. 3 root root 41 Jul 10 17:26 audisp
drwxr-x---. 3 root root 79 Jul 10 17:37 audit
drwxr-xr-x. 4 root root 94 Jul 10 17:26 avahi
--More--

在修改用戶密碼時,通常都需要輸入兩次密碼以進行確認,這在編寫自動化腳本時將成為一個非常致命的缺陷。通過把管道符和passwd命令的--stdin參數相結合,我們可以用一條命令來完成密碼重置操作:

[[email protected] ~]# echo "linuxprobe" | passwd --stdin root
Changing password for user root.
passwd: all authentication tokens updated successfully.

大家是不是覺得管道符命令有些相見恨晚?管道符的玩法還有很多,比如,在發送電子郵件時,默認采用交互式的方式來進行,我們完全可以利用一條結合了管道符的命令語句,把編輯好的內容與標題一起“打包”,最終用這一條命令實現郵件的發送。

[[email protected] ~]# echo "Content" | mail -s "Subject" linuxprobe
[[email protected] ~]# su - linuxprobe
Last login: Fri Jul 10 09:44:07 CST 2017 on :0
[[email protected] ~]$ mail
Heirloom Mail version 12.5 7/5/10. Type ? for help.
"/var/spool/mail/linuxprobe": 1 message 1 new
>N 1 root Sun Aug 30 17:33 18/578 "Subject"

如果讀者是一名Linux新手,可能會覺得上面的命令組合已經十分復雜了,但是有過運維經驗的讀者又會感覺如隔靴撓癢般不過癮,他們希望能將這樣方便的命令寫得更高級一些,功能更強大一些。比如通過重定向技術能夠一次性地把多行信息打包輸入或輸出,讓日常工作更有效率。為了大家對我們這本書的捧場,劉遄老師當然要義不容辭地把技術拱手奉上。

下面這條自造的命令就結合使用了mail郵件命令與輸入重定向的分界符,其目的是讓用戶一直輸入內容,直到用戶輸入了其自定義的分界符時,才結束輸入。

[[email protected] ~]# mail -s "Readme" [email protected] << over
> I think linux is very practical
> I hope to learn more
> can you teach me ?
> over
[[email protected] ~]#

當然,大家千萬不要誤以為管道命令符只能在一個命令組合中使用一次,我們完全可以這樣使用:“命令A | 命令B | 命令C”。為了幫助讀者進一步理解管道符的作用,劉遄老師在講課時經常會把管道符描述成“任意門”。想必大家小時候都看過“哆啦A夢”動畫片吧。哆啦A夢(也就是我們常稱的機器貓)經常為了取悅大雄而從口袋中掏出一件件寶貝,其中好多次就用到了任意門這個道具。其實,管道符就好像是用于實現數據穿越的任意門,可以幫我們提高工作效率,完成之前不敢想象的復雜工作。

出現問題?大膽提問!

因讀者們硬件不同或操作錯誤都可能導致實驗配置出錯,請耐心再仔細看看操作步驟吧,不要氣餒~

Linux技術交流請加A群:560843(滿),B群:340829(推薦),C群:463590(推薦),點此查看全國群

*本群特色:通過口令驗證確保每一個群員都是《Linux就該這么學》的讀者,答疑更有針對性,不定期免費領取定制禮品。

3.3?命令行的通配符

大家可能都遇到過提筆忘字的尷尬,作為Linux運維人員,我們有時候也會遇到明明一個文件的名稱就在嘴邊但就是想不起來的情況。如果就記得一個文件的開頭幾個字母,想遍歷查找出所有以這個關鍵詞開頭的文件,該怎么操作呢?又比如,假設想要批量查看所有硬盤文件的相關權限屬性,一種方式是這樣的:

[[email protected] ~]# ls -l /dev/sda
brw-rw----. 1 root disk 8, 0 May 4 15:55 /dev/sda
[[email protected] ~]# ls -l /dev/sda1
brw-rw----. 1 root disk 8, 1 May 4 15:55 /dev/sda1
[[email protected] ~]# ls -l /dev/sda2
brw-rw----. 1 root disk 8, 2 May 4 15:55 /dev/sda2
[[email protected] ~]# ls -l /dev/sda3
ls: cannot access /dev/sda3: No such file or directory

幸虧我的硬盤文件和分區只有3個,要是有幾百個,估計需要花費一天的時間來忙這個事情了。由此可見,這種方式的效率確實很低。雖然我們在第6章才會講解Linux系統的存儲結構和FHS,但現在我們應該能看出一些簡單規律了。比如,這些硬盤設備文件都是以sda開頭并且存放到了/dev目錄中,這樣一來,即使我們不知道硬盤的分區編號和具體分區的個數,也可以使用通配符來搞定。顧名思義,通配符就是通用的匹配信息的符號,比如星號(*)代表匹配零個或多個字符,問號(?)代表匹配單個字符,中括號內加上數字[0-9]代表匹配0~9之間的單個數字的字符,而中括號內加上字母[abc]則是代表匹配a、b、c三個字符中的任意一個字符。俗話講“百聞不如一見,看書不如實驗”,下面我們就來匹配所有在/dev目錄中且以sda開頭的文件:

[[email protected] ~]# ls -l /dev/sda*
brw-rw----. 1 root disk 8, 0 May 4 15:55 /dev/sda
brw-rw----. 1 root disk 8, 1 May 4 15:55 /dev/sda1
brw-rw----. 1 root disk 8, 2 May 4 15:55 /dev/sda2

如果只想查看文件名為sda開頭,但是后面還緊跟其他某一個字符的文件的相關信息,該怎么操作呢?這時就需要用到問號來進行通配了。

[[email protected] ~]# ls -l /dev/sda?
brw-rw----. 1 root disk 8, 1 May 4 15:55 /dev/sda1
brw-rw----. 1 root disk 8, 2 May 4 15:55 /dev/sda2

除了使用[0-9]來匹配0~9之間的單個數字,也可以用[135]這樣的方式僅匹配這三個指定數字中的一個,若沒有匹配到,則不會顯示出來:

[[email protected] ~]# ls -l /dev/sda[0-9]
brw-rw----. 1 root disk 8, 1 May 4 15:55 /dev/sda1
brw-rw----. 1 root disk 8, 2 May 4 15:55 /dev/sda2
[[email protected] ~]# ls -l /dev/sda[135]
brw-rw----. 1 root disk 8, 1 May 4 15:55 /dev/sda1
3.4 常用的轉義字符

為了能夠更好地理解用戶的表達,Shell解釋器還提供了特別豐富的轉義字符來處理輸入的特殊數據。劉遄老師以近十年的工作和培訓為基礎,愣是用了兩周時間從數十個轉義字符中提煉出了4個最常用的轉義字符!這件事情也讓我深刻反省了很長時間。原本認為圖書寫的越厚,作者越是大牛,現在發現這種觀念完全是錯誤的,希望讀者在讀完本書后能體會到劉遄老師的用心付出。

4個最常用的轉義字符如下所示。

反斜杠(\):使反斜杠后面的一個變量變為單純的字符串。

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

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

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

我們先定義一個名為PRICE的變量并賦值為5,然后輸出以雙引號括起來的字符串與變量信息:

[[email protected] ~]# PRICE=5
[[email protected] ~]# echo "Price is $PRICE"
Price is?5

接下來,我們希望能夠輸出“Price is $5”,即價格是5美元的字符串內容,但碰巧美元符號與變量提取符號合并后的$$作用是顯示當前程序的進程ID號碼,于是命令執行后輸出的內容并不是我們所預期的:

[[email protected] ~]# echo "Price is $$PRICE" 
Price is 3767PRICE

要想讓第一個“$”乖乖地作為美元符號,那么就需要使用反斜杠(\)來進行轉義,將這個命令提取符轉義成單純的文本,去除其特殊功能。

[[email protected] ~]# echo "Price is \$$PRICE"
Price is $5

而如果只需要某個命令的輸出值時,可以像`命令`這樣,將命令用反引號括起來,達到預期的效果。例如,將反引號與uname -a命令結合,然后使用echo命令來查看本機的Linux版本和內核信息:

[[email protected] ~]# echo `uname -a`
Linux linuxprobe.com 3.10.0-123.el7.x86_64 #1 SMP Mon May 5 11:16:57 EDT 2017 x86_64 x86_64 x86_64 GNU/Linux
3.5?重要的環境變量

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

細心的讀者應該發現了,本節和上一節的標題名都分別加了形容詞—重要的、常見的。原因其實不言而喻—要想讓Linux系統能夠正常運行并且為用戶提供服務,需要數百個環境變量來協同工作,我們沒有必要逐一查看、學習每一個變量,而是應該在有限的篇幅中精講最重要的內容。

為了通過環境變量幫助Linux系統構建起能夠為用戶提供服務的工作運行環境,需要數百個變量協同工作才能完成。您當然沒有必要去把每一個變量都看一遍,而應該在最寶貴的書籍中為讀者精講最重要的內容。為了更好地幫助大家理解變量的作用,劉遄老師給大家舉個例子。前文中曾經講到,在Linux系統中一切都是文件,Linux命令也不例外。那么,在用戶執行了一條命令之后,Linux系統中到底發生了什么事情呢?簡單來說,命令在Linux中的執行分為4個步驟。

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

第2步:Linux系統檢查用戶輸入的命令是否為“別名命令”,即用一個自定義的命令名稱來替換原本的命令名稱。可以用alias命令來創建一個屬于自己的命令別名,格式為“alias 別名=命令”。若要取消一個命令別名,則是用unalias命令,格式為“unalias 別名”。我們之前在使用rm命令刪除文件時,Linux系統都會要求我們再確認是否執行刪除操作,其實這就是Linux系統為了防止用戶誤刪除文件而特意設置的rm別名命令,接下來我們把它取消掉:

[[email protected] ~]# ls
anaconda-ks.cfg Documents initial-setup-ks.cfg Pictures Templates
Desktop Downloads Music Public Videos
[[email protected] ~]# rm anaconda-ks.cfg 
rm: remove regular file ‘anaconda-ks.cfg’? y
[[email protected]~]# alias rm
alias rm='rm -i'
[[email protected] ~]# unalias rm
[[email protected] ~]# rm initial-setup-ks.cfg 
[[email protected] ~]#

第3步:Bash解釋器判斷用戶輸入的是內部命令還是外部命令。內部命令是解釋器內部的指令,會被直接執行;而用戶在絕大部分時間輸入的是外部命令,這些命令交由步驟4繼續處理。可以使用“type命令名稱”來判斷用戶輸入的命令是內部命令還是外部命令。

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

[[email protected] ~]# echo $PATH
/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin
[[email protected] ~]# PATH=$PATH:/root/bin
[[email protected] ~]# echo $PATH
/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:/root/bin

這里有比較經典的問題:“為什么不能將當前目錄(.)添加到PATH中呢? ” 原因是,盡管可以將當前目錄(.)添加到PATH變量中,從而在某些情況下可以讓用戶免去輸入命令所在路徑的麻煩。但是,如果黑客在比較常用的公共目錄/tmp中存放了一個與ls或cd命令同名的木馬文件,而用戶又恰巧在公共目錄中執行了這些命令,那么就極有可能中招了。

所以,作為一名態度謹慎、有經驗的運維人員,在接手了一臺Linux系統后一定會在執行命令前先檢查PATH變量中是否有可疑的目錄,另外讀者從前面的PATH變量示例中是否也感覺到環境變量特別有用呢。我們可以使用env命令來查看到Linux系統中所有的環境變量,而劉遄老師為您精挑細選出了最重要的10個環境變量,如表3-3所示。

表3-3?????????????????????????????????????? Linux系統中最重要的10個環境變量

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

Linux作為一個多用戶多任務的操作系統,能夠為每個用戶提供獨立的、合適的工作運行環境,因此,一個相同的變量會因為用戶身份的不同而具有不同的值。例如,我們使用下述命令來查看HOME變量在不同用戶身份下都有哪些值(su是用于切換用戶身份的命令,將在第5章跟大家見面):

[[email protected] ~]# echo $HOME
/root
[[email protected] ~]# su - linuxprobe
Last login: Fri Feb 27 19:49:57 CST 2017 on pts/0
[[email protected] ~]$ echo $HOME
/home/linuxprobe

其實變量是由固定的變量名與用戶或系統設置的變量值兩部分組成的,我們完全可以自行創建變量,來滿足工作需求。例如設置一個名稱為WORKDIR的變量,方便用戶更輕松地進入一個層次較深的目錄:

[[email protected] ~]# mkdir /home/workdir
[[email protected] ~]# WORKDIR=/home/workdir
[[email protected] ~]# cd $WORKDIR 
[[email protected] workdir]# pwd
/home/workdir

但是,這樣的變量不具有全局性,作用范圍也有限,默認情況下不能被其他用戶使用。如果工作需要,可以使用export命令將其提升為全局變量,這樣其他用戶也就可以使用它了:

[[email protected] workdir]# su linuxprobe
Last login: Fri Mar 20 20:52:10 CST 2017 on pts/0
[[email protected] ~]$ cd $WORKDIR
[[email protected] ~]$ echo $WORKDIR
[[email protected] ~]$ exit
[[email protected] ~]#?export?WORKDIR
[[email protected] ~]# su linuxprobe
Last login: Fri Mar 20 21:52:10 CST 2017 on pts/0
[[email protected] ~]$ cd $WORKDIR
[[email protected] workdir]$ pwd
/home/workdir

出現問題?大膽提問!

因讀者們硬件不同或操作錯誤都可能導致實驗配置出錯,請耐心再仔細看看操作步驟吧,不要氣餒~

Linux技術交流請加A群:560843(滿),B群:340829(推薦),C群:463590(推薦),點此查看全國群

*本群特色:通過口令驗證確保每一個群員都是《Linux就該這么學》的讀者,答疑更有針對性,不定期免費領取定制禮品。

本章節的復習作業(答案就在問題的下一行哦,用鼠標選中即可看到的~)

1.把ls命令的正常輸出信息追加寫入到error.txt文件中的命令是什么?

答:ls >> error.txt

2.請簡單概述管道符的作用。

答:把左面(前面)命令的輸出值作為右面(后面)命令的輸入值以便進一步處理信息。

3.Bash解釋器的通配符中,星號(*)代表幾個字符?

答:零個或多個。

4.PATH變量的作用是什么?

答:設定解釋器搜索所執行的命令的路徑。

5.使用什么命令可以把名為LINUX的一般變量轉換成全局變量?

答:export LINUX。

本文原創地址:http://www.52437949.com/chapter-03.html編輯:劉遄,審核員:暫無