將輸出重定向到文件或程序
目標
完成本節(jié)內(nèi)容后瑰抵,你能夠用shell重定向?qū)⑤敵龌蝈e誤保存到文件中,并通過多個命令行程序用管道處理命令輸出器联。
標準輸入二汛、標準輸出和標準錯誤
一個運行中的程序或進程需要從某個地方讀取輸入,并將輸出寫到某個地方拨拓。從shell提示符中運行的命令通常從鍵盤上讀取輸入肴颊,并將其輸出發(fā)送到終端窗口。
一個進程使用稱為文件描述符的編號通道來獲取輸入和發(fā)送輸出渣磷。所有的進程都從至少三個文件描述符開始婿着。標準輸入(通道0)從鍵盤上讀取輸入。標準輸出(通道1)向終端發(fā)送正常輸出醋界。標準錯誤(通道2)向終端發(fā)送錯誤信息祟身。如果程序打開單獨的連接到其他文件,可能會使用編號較高的文件描述符物独。
通道(文件描述符)
編號 | 通道名稱 | 描述 | 默認連接 | 使用方法 |
---|---|---|---|---|
0 | stdin | 標準輸入 | 鍵盤 | 只讀 |
1 | stdout | 標準輸出 | 終端 | 只寫 |
2 | stderr | 標準錯誤 | 終端 | 只寫 |
3 | filename | 其他文件 | 無 | 讀寫 |
重定向輸出到文件
I/O重定向改變了進程獲取輸入或輸出的方式袜硫。進程不是從鍵盤上獲取輸入,或者將輸出和錯誤發(fā)送到終端挡篓,而是從文件中讀取或?qū)懭胛募裣荨V囟ㄏ蚩梢宰屇鷮⑾⒈4娴酵ㄎ募兄愠啤A硗猓€可以使用重定向來丟棄輸出或錯誤秽澳,這樣就不會在終端上顯示或保存它們闯睹。
重定向 stdout 可以抑制進程輸出在終端上顯示。從下表中可以看出担神,只重定向stdout并不能抑制在終端上顯示stderr錯誤信息楼吃。如果該文件不存在,則會被創(chuàng)建妄讯。如果該文件確實存在孩锡,該文件的內(nèi)容將被覆蓋。
如果你想丟棄消息亥贸,特殊文件/dev/null會悄悄地丟棄重定向到它的通道輸出躬窜,并且始終是一個空文件。
輸出重定向運算符
3
使用方法 | 說明 | 圖示 |
---|---|---|
> file | 重定向stdout覆蓋文件 | |
>> file | 重定向stdout附加在文件尾部 | |
2> file | 重定向stderr覆蓋文件 | |
2> /dev/null | 重定向到/dev/null來丟棄stderr錯誤信息炕置。 | |
> file 2>&1 &> file |
重定向stdout和stderr荣挨,覆蓋同一文件 | |
>> file 2>&1 &>> file |
將stdout和stderr重定向到附加到同一個文件中 | |
重定向操作的順序很重要。下面的順序是將標準輸出重定向到文件朴摊,然后將標準錯誤重定向到與標準輸出(文件)相同的地方默垄。
> file 2>&1
然而,下一個順序做了相反的重定向甚纲。這是將標準錯誤重定向到標準輸出的默認位置(終端窗口口锭,所以沒有變化),然后只將標準輸出重定向到文件:
&>file 代替 >file 2>&1
&>>file 代替 >>file 2>&1 (在 Bash4/RHEL6之后)
其他的系統(tǒng)管理員和程序員也在使用其他與bash相關(guān)的shell(被稱為Bourne兼容的shell)進行腳本命令贩疙,他們認為應(yīng)該避免使用較新的合并重定向操作符讹弯,因為這些操作符并沒有在所有這些shell中標準化或?qū)崿F(xiàn)况既,而且還有其他的限制这溅。
本課程的作者對這個話題采取了中立的立場,這兩種語法在實戰(zhàn)中都有可能遇到棒仍。
輸出重定向示例
許多日常管理任務(wù)都是通過使用重定向來簡化的悲靴。在考慮下面的例子時,請使用上表提供幫助莫其。
-
保存一個時間戳癞尚,以便日后參考。
[user@host ~]$ date > /tmp/saved-timestamp
-
將日志文件中的最后100行復(fù)制到另一個文件中乱陡。
[user@host ~]$ tail -n 100 /var/log/dmesg > /tmp/last-100-boot-messages
-
將四個文件串聯(lián)成一個浇揩。
[user@host ~]$ cat file1 file2 file3 file4 > /tmp/all-four-in-one
將主目錄中的隱藏文件名和普通文件名列成一個文件。
[user@host ~]$ ls -a > /tmp/my-file-names
-
將輸出添加到現(xiàn)有文件中憨颠。
[user@host ~]$ echo "new line of information" >> /tmp/many-lines-of-information [user@host ~]$ diff previous-file current-file >> /tmp/tracking-changes-made
-
接下來的幾個命令會產(chǎn)生錯誤信息胳徽,因為有些系統(tǒng)目錄對正常用戶來說是無法訪問的积锅。當錯誤信息被重定向時,請注意觀察养盗。在終端上查看正常的命令輸出時缚陷,將錯誤重定向到一個文件。
[user@host ~]$ find /etc -name passwd 2> /tmp/errors
-
將過程輸出和錯誤信息保存到單獨的文件中往核。
[user@host ~]$ find /etc -name passwd > /tmp/output 2> /tmp/errors
-
忽略和丟棄錯誤信息箫爷。
[user@host ~]$ find /etc -name passwd > /tmp/output 2> /dev/null
-
將輸出和生成的錯誤存儲在一起。
[user@host ~]$ find /etc -name passwd &> /tmp/save-both
-
將輸出和生成的錯誤添加到現(xiàn)有文件中聂儒。
[user@host ~]$ find /etc -name passwd >> /tmp/save-both 2>&1
管道
管道是一個由一個或多個命令組成的序列虎锚,由管道字符(|)隔開。管道將第一個命令的標準輸出與下一個命令的標準輸入連接起來薄货。
管道允許一個進程的輸出在輸出到終端之前翁都,由其他進程對其進行操作和格式化。一個有用的思維形象是想象數(shù)據(jù)從一個進程到另一個進程的管道中 "流動"谅猾,并被流經(jīng)的管道中的每一條命令稍作改變柄慰。
管道示例
本例采用ls命令的輸入,使用less在終端上顯示税娜。
[user@host ~]$ ls -l /usr/bin | less
ls命令的輸出被傳送到wc -l坐搔,它計算從ls接收到的行數(shù),并將其打印到終端敬矩。
[user@host ~]$ ls | wc -l
head將從ls -t輸出前10行輸出概行,最后的結(jié)果將被重定向到一個文件。
[user@host ~]$ ls -t | head -n 10 > /tmp/ten-last-changed-files
管道弧岳、重定向和tee命令
當重定向與管道結(jié)合在一起時凳忙,shell會先設(shè)置整個管道,然后再重定向輸入/輸出禽炬。如果在管道中使用輸出重定向涧卵,那么輸出將進入文件,而不是進入管道中的下一個命令腹尖。
在這個例子中柳恐,ls命令的輸出會進入文件,終端上什么也不顯示热幔。
[user@host ~]$ ls > /tmp/saved-output | less
tee命令克服了這個限制乐设。在管道中,tee會將其標準輸入復(fù)制到標準輸出绎巨,同時也會將其標準輸出重定向到作為命令參數(shù)命名的文件近尚。如果你把數(shù)據(jù)想象成流經(jīng)管道的水,tee可以被形象化為管道中的一個 "T "型接頭场勤,它可以將輸出導(dǎo)向兩個方向戈锻。
使用tee命令的管道示例
這個例子將 ls 命令的輸出重定向到文件中介汹,并將其傳遞給less,以便在終端上逐一顯示舶沛。
[user@host ~]$ ls -l | tee /tmp/saved-output | less
如果在管道的結(jié)尾使用tee嘹承,則可以將命令的最終輸出到顯示在終端并保存。
[user@host ~]$ ls -t | head -n 10 | tee /tmp/ten-last-changed-files
標準錯誤可以通過管道重定向如庭,但合并重定向操作符(&>和&>>)不能用來做這個操作叹卷。
以下是通過管道重定向標準輸出和標準錯誤的正確方法:
[user@host ~]$ find -name / passwd 2>&1 | less
從shell提示符編輯文本文件
目標
完成本節(jié)內(nèi)容后,你應(yīng)該能夠使用vim編輯器從命令行創(chuàng)建和編輯文本文件坪它。
用vim編輯文件
Linux的一個重要設(shè)計原則是骤竹,信息和配置設(shè)置通常存儲在基于文本的文件中。這些文件可以以各種方式結(jié)構(gòu)化往毡,如設(shè)置列表蒙揣、類似INI的格式、結(jié)構(gòu)化的XML或YAML等开瞭。但是懒震,文本文件的優(yōu)點是可以用任何簡單的文本編輯器來查看和編輯。
Vim是vi編輯器的改進版嗤详,它是Linux和UNIX系統(tǒng)中發(fā)行的vi編輯器的改進版个扰。Vim具有很強的可配置性和高效性,對實踐用戶來說葱色,它包括了分屏編輯递宅、顏色格式化和文本編輯高亮等功能。
為什么要學(xué)習Vim苍狰?
你應(yīng)該知道如何使用至少一個可以從純文本的shell提示符中使用的文本編輯器办龄。如果你知道,你可以從終端窗口編輯基于文本的配置文件淋昭,也可以通過ssh或Web控制臺遠程登錄來編輯俐填。那么你就不需要訪問圖形化桌面來編輯服務(wù)器上的文件,事實上响牛,服務(wù)器可能根本不需要運行圖形化桌面環(huán)境玷禽。
為什么要學(xué)習Vim而不是其他可能的選擇呢赫段?關(guān)鍵的原因是呀打,如果有文本編輯器的話,Vim幾乎都會安裝在服務(wù)器上糯笙。這是因為vi是由POSIX標準規(guī)定的贬丛,Linux和許多其他類似UNIX的操作系統(tǒng)在很大程度上都符合POSIX標準。
此外给涕,Vim經(jīng)常被用作其他常見操作系統(tǒng)或發(fā)行版上的vi實現(xiàn)豺憔。例如额获,macOS目前默認包含了Vim的輕量級安裝。所以恭应,在Linux中學(xué)習到的Vim技能可能也會幫助你在其他地方完成一些事情抄邀。
啟動Vim
Vim 以兩種不同的方式安裝在 Red Hat Enterprise Linux 中,可能會影響你可用的功能和Vim命令昼榛。
你的服務(wù)器可能只安裝了vim-minimal軟件包境肾。這是一個非常輕量級的安裝,只包括核心功能集和基本的vi命令胆屿。在這種情況下奥喻,您可以用vi filename打開一個文件進行編輯,本節(jié)中討論的所有核心功能都可以使用非迹。
另外环鲤,您的服務(wù)器可能安裝了vim增強版的軟件包。這提供了一個更全面的功能憎兽,一個在線幫助系統(tǒng)和一個教程程序冷离。在這個增強模式下啟動Vim,你可以使用vim命令纯命。
[user@host ~]$ vim filename
無論哪種方式酒朵,我們在本節(jié)中討論的核心功能都將與這兩個命令一起使用。
如果安裝了vim-enhanced扎附,普通用戶將有一個shell別名設(shè)置蔫耽,這樣如果他們運行vi命令,就會自動得到vim命令留夜。這并不適用于root和其他UID低于200的用戶(系統(tǒng)服務(wù)使用的UID)匙铡。
如果你是以root用戶的身份編輯文件,而你希望vi能在增強模式下運行碍粥,這可能會讓你大吃一驚鳖眼。同樣的,如果安裝了vim-enhanced嚼摩,而普通用戶由于某種原因想要使用簡單的vi钦讳,他們可能需要使用 \vi來暫時覆蓋別名。
高級用戶可以使用 \vi --version和vim --version來比較這兩個命令的特征集枕面。
Vim操作模式
Vim的一個不尋常的特點是它有多種操作模式愿卒,包括命令模式、擴展命令模式潮秘、編輯模式和視覺模式琼开。根據(jù)不同的模式,您可能會發(fā)布命令枕荞、編輯文本或處理文本塊柜候。作為一個新的Vim用戶搞动,你應(yīng)該時刻注意你當前的模式,因為在不同的模式下按鍵的效果不同渣刷。
當你第一次打開Vim時鹦肿,它以命令模式啟動,用于導(dǎo)航辅柴、剪切和粘貼以及其他文本操作狮惜。使用單字符鍵進入其他模式中的每一個模式,以訪問特定的編輯功能碌识。
- 按i鍵進入插入模式碾篡,所有輸入的文本都會變成文件內(nèi)容。按Esc鍵返回到命令模式筏餐。
- v鍵進入視覺模式开泽,可選擇多個字符進行文本操作。使用Shift+V來選擇多行魁瞪,Ctrl+V來選擇塊穆律。進入視覺模式時使用相同的按鍵(v栋艳、Shift+V或Ctrl+V)退出野舶。
- 按 :鍵開始擴展命令模式,用于寫文件(保存文件)和退出 Vim 編輯器等任務(wù)赤嚼。
最基本的Vim工作流程
Vim具有高效旅薄、協(xié)調(diào)的按鍵功能辅髓,可用于高級編輯任務(wù)。雖然在實踐中被認為很有用少梁,但Vim的功能可能會讓新用戶不知所措洛口。
i鍵會使Vim進入插入模式。在這之后輸入的所有文本都被視為文件內(nèi)容凯沪,直到您退出插入模式第焰。Esc鍵退出插入模式,并將Vim返回到命令模式妨马。u鍵將撤銷最近的編輯挺举。按 x 鍵可刪除單個字符。:w 命令會寫入(保存)文件烘跺,并保持在命令模式下進行更多的編輯湘纵。:wq 命令會寫入(保存)文件,并退出 Vim液荸。:q!命令退出Vim瞻佛,丟棄上次寫入后的所有文件更改脱篙。Vim用戶必須學(xué)習這些命令才能完成任何編輯任務(wù)娇钱。
重新排列現(xiàn)有文本
在Vim中伤柄,復(fù)制和粘貼被稱為yank 和 put,使用命令字符Y和P文搂。使用方向鍵展開視覺選擇适刀。準備好后,按Y鍵將選區(qū)拉到內(nèi)存中煤蹭。將光標定位在新的位置笔喉,然后按P鍵將選區(qū)放在光標處。
Vim中的視覺模式
視覺模式是一個很好的突出顯示和操作文字的方法硝皂。有三個按鍵:
- 字符模式:v
- 行模式:Shift+V
- 塊模式:Ctrl+V
Vim有很多功能常挚,但你應(yīng)該先掌握基本的工作流程。你不需要快速了解整個編輯器及其功能稽物。通過練習來熟悉這些基礎(chǔ)知識奄毡,然后你可以通過學(xué)習額外的Vim命令(按鍵)來擴展你的Vim詞匯量。
改變shell環(huán)境
目標
完成本節(jié)內(nèi)容后贝或,你能夠設(shè)置shell變量來幫助運行命令吼过,并能編輯Bash啟動腳本來設(shè)置shell和環(huán)境變量來修改shell的行為和從shell運行的程序。
使用shell變量
Bash shell允許你設(shè)置shell變量咪奖,你可以用它來幫助運行命令或修改shell的行為盗忱。你也可以將shell變量導(dǎo)出為環(huán)境變量,當啟動時羊赵,這些變量會自動復(fù)制到從該shell運行的程序中趟佃。你可以使用變量來幫助運行一個帶長參數(shù)的命令,或者將常用的設(shè)置應(yīng)用到從該shell運行的命令中昧捷。
Shell變量是一個特定的shell會話所獨有的揖闸。如果你有兩個終端窗口打開,或者是兩個獨立的遠程服務(wù)器的登錄會話料身,那么你正在運行兩個shell汤纸。每個shell都有自己的shell變量的值。
為變量賦值
使用下面的語法給一個shell變量賦值:
VARIABLENAME=value
變量名可以包含大寫或小寫字母芹血、數(shù)字和下劃線字符(_)贮泞。例如,下面的命令可以設(shè)置shell變量:
[user@host ~]$ COUNT=40
[user@host ~]$ first_name=John
[user@host ~]$ file1=/tmp/abc
[user@host ~]$ _ID=RH123
請記住幔烛,這個更改只影響到您運行該命令的shell啃擦,不會影響到本服務(wù)器上運行的其他shell。
你可以使用set命令來列出所有當前被設(shè)置的shell變量饿悬。(它還會列出所有的shell函數(shù)令蛉,你可以忽略他們。)這個列表足夠長,你可能會想把輸出shell命令中珠叔,這樣你就可以一頁一頁地查看蝎宇。
[user@host ~]$ set | less
BASH=/usr/bin/bash
BASHOPTS=checkwinsize:cmdhist:complete_fullquote:expand_aliases:extglob:extquote:
force_fignore:histappend:interactive_comments:progcomp:promptvars:sourcepath BASHRCSOURCED=Y
...output omitted...
使用變量擴展檢索值
你可以使用變量擴展來引用你所設(shè)置的變量的值。要做到這一點祷安,在變量的名稱前加上一個美元符號($)姥芥。在下面的例子中,echo命令打印出輸入的命令行的其余部分汇鞭,但在執(zhí)行了變量擴展之后凉唐。
例如,下面的命令將變量COUNT設(shè)置為40霍骄。
[user@host ~]$ COUNT=40
如果你輸入命令 echo COUNT台囱,它將打印出字符串 COUNT。
[user@host ~]$ echo COUNT
COUNT
但如果你輸入命令echo $COUNT读整,它就會打印出變量COUNT的值玄坦。
[user@host ~]$ echo $COUNT
40
一個更實用的例子可能是使用一個變量來引用多個命令的長文件名。
[user@host ~]$ file1=/tmp/tmp.z9pXW0HqcC
[user@host ~]$ ls -l $file1
-rw-------. 1 student student 1452 Jan 22 14:39 /tmp/tmp.z9pXW0HqcC
[user@host ~]$ rm $file1
[user@host ~]$ ls -l $file1
total 0
如果變量名旁邊有任何尾部字符绘沉,你可能需要用大括號來保護變量名煎楣。你可以在變量擴展中始終使用大括號,但你也會看到很多不需要大括號的例子车伞,在這些例子中择懂,你可以省略掉大括號。
在下面的示例中另玖,第一個回波命令試圖擴展不存在的變量COUNTx困曙,這并沒有導(dǎo)致錯誤,而是返回了空谦去。
[user@host ~]$ echo Repeat $COUNTx
Repeat
[user@host ~]$ echo Repeat ${COUNT}x
Repeat 40x
使用Shell變量配置Bash
有些shell變量是在Bash啟動時設(shè)置的慷丽,但可以通過修改來調(diào)整shell的行為。
例如鳄哭,影響shell歷史記錄和history命令的兩個shell變量是HISTFILE和HISTFILESIZE要糊。如果設(shè)置了HISTFILE,它指定了shell歷史記錄的保存位置妆丘。默認情況下是用戶的~/.bash_history文件锄俄。HISTFILESIZE變量指定了從歷史記錄中保存在該文件中的命令數(shù)量。
另一個例子是PS1勺拣,它是一個控制shell提示符外觀的shell變量奶赠。如果你改變這個值,它將改變你的shell提示符的外觀药有。在bash(1)man page的 "PROMPTING "一節(jié)中列出了一些特殊字符的擴展毅戈。
[user@host ~]$ PS1="bash\$ "
bash$ PS1="[\u@\h \W]\$ "
[user@host ~]$
關(guān)于上面的例子有兩點需要注意:第一,由于PS1設(shè)置的值是一個提示符,所以在提示符的結(jié)尾幾乎總是以尾部的空格結(jié)束苇经。第二赘理,當變量的值包含某種形式的空格,包括空格塑陵、制表符或回車符時感憾,值必須用雙引號包圍蜡励,可以是單引號令花,也可以是雙引號;這不是可選的凉倚。如果省略了引號兼都,就會出現(xiàn)意想不到的結(jié)果。請看上面的PS1例子稽寒,注意它既符合建議(尾部空格)扮碧,也符合規(guī)則(引號)。
用環(huán)境變量配置程序
shell為你從該shell中運行的程序提供了一個環(huán)境杏糙。其中慎王,這個環(huán)境包括文件系統(tǒng)中當前工作目錄的信息、傳遞給程序的命令行選項以及環(huán)境變量的值宏侍。程序可以使用這些環(huán)境變量來改變它們的行為或默認設(shè)置赖淤。
非環(huán)境變量的shell變量只能由shell使用。環(huán)境變量可以被shell和從該shell運行的程序使用谅河。
你可以通過使用 export 命令將shell中定義的任何變量標記成環(huán)境變量咱旱。
[user@host ~]$ EDITOR=vim
[user@host ~]$ export EDITOR
你可以一步到位地設(shè)置和導(dǎo)出一個變量:
[user@host ~]$ export EDITOR=vim
應(yīng)用程序和會話使用這些變量來決定它們的行為。例如绷耍,shell在啟動時自動將HOME變量設(shè)置為用戶主目錄的文件名吐限。
另一個例子是LANG,它設(shè)置了locale褂始。它可以調(diào)整程序輸出的首選語言诸典;字符集;日期崎苗、數(shù)字和貨幣的格式化搂赋;以及程序的排序順序。如果設(shè)置為en_US.UTF-8益缠,則使用UTF-8 Unicode字符編碼的美國英語脑奠。如果設(shè)置為其他的東西,例如fr_FR.UTF-8幅慌,它將使用法國的UTF-8 Unicode字符編碼宋欺。
[user@host ~]$ date
Tue Jan 22 16:37:45 CST 2019
[user@host ~]$ export LANG=fr_FR.UTF-8
[user@host ~]$ date
mar. janv. 22 16:38:14 CST 2019
另一個重要的環(huán)境變量是PATH。PATH變量包含一個包含程序的冒號分隔的目錄列表:
[user@host ~]$ echo $PATH /home/user/.local/bin:/home/user/bin:/usr/share/Modules/bin:/usr/local/bin:/usr/ bin:/usr/local/sbin:/usr/sbin
當你運行ls這樣的命令時,shell會依次在每個目錄中尋找可執(zhí)行文件ls齿诞,然后運行第一個匹配的文件酸休。(在一個典型的系統(tǒng)中,這是 /usr/ bin/ls祷杈。)
你可以輕松地在PATH的末尾添加額外的目錄斑司。例如,也許你有一些可執(zhí)行程序或腳本但汞,你想在 /home/user/sbin 中像普通命令一樣運行宿刮。你可以把/home/user/sbin添加到當前會話的PATH末尾,就像這樣:
[user@host ~]$ export PATH=${PATH}:/home/user/sbin
要列出一個特定shell的所有環(huán)境變量私蕾,請運行env命令僵缺。
[user@host ~]$ env
...output omitted...
LANG=en_US.UTF-8
HISTCONTROL=ignoredups
HOSTNAME=host.example.com
XDG_SESSION_ID=4
...output omitted...
設(shè)置默認文本編輯器
EDITOR 環(huán)境變量指定了你要使用的程序作為命令行程序的默認文本編輯器。如果沒有指定的話踩叭,很多程序都會使用vi或vim磕潮,但如果需要的話,你可以覆蓋這個首選項:
[user@host ~]$ export EDITOR=nano
自動設(shè)置變量
如果你想在 shell 啟動時自動設(shè)置 shell 或環(huán)境變量容贝,你可以編輯 Bash 啟動腳本自脯。當Bash啟動時,會運行幾個包含shell命令的文本文件斤富,這些文件會初始化shell環(huán)境膏潮。
具體運行的腳本取決于shell是如何啟動的,是交互式登錄shell茂缚、交互式非登錄shell還是shell腳本戏罢。
假設(shè)默認的 /etc/profile、/etc/bashrc 和 ~/.bash_profile 文件脚囊,如果你想對你的用戶帳戶進行修改龟糕,并在啟動時影響到所有交互式 shell 提示,請編輯 ~/.bashrc 文件悔耘。例如讲岁,你可以將該帳戶的默認編輯器設(shè)置為nano,將文件編輯為讀:
# .bashrc
# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi
# User specific environment
PATH="$HOME/.local/bin:$HOME/bin:$PATH"
export PATH
# User specific aliases and functions
export EDITOR=nano
取消設(shè)置和取消導(dǎo)出的變量
要完全取消設(shè)置和取消導(dǎo)出一個變量衬以,請使用 unset 命令缓艳。
[user@host ~]$ echo $file1
/tmp/tmp.z9pXW0HqcC
[user@host ~]$ unset file1
[user@host ~]$ echo $file1
[user@host ~]$
要取消導(dǎo)出一個變量而不設(shè)置它,請使用 export -n 命令:
[user@host ~]$ export -n PS1
總結(jié)
- 運行中的程序或進程有三個標準的通信通道看峻,標準輸入阶淘、標準輸出和標準錯誤。
- 你可以使用I/O重定向來讀取文件中的標準輸入互妓,或?qū)⑦M程的輸出或錯誤寫到文件中溪窒。
- 管道可以用來連接一個進程的標準輸出和另一個進程的標準輸入坤塞,并可以用來格式化輸出或建立復(fù)雜的命令。
- 你應(yīng)該知道如何使用至少一個命令行文本編輯器澈蚌,一般都會安裝Vim摹芙。
- Shell變量可以幫助你運行命令,而且是特定的shell會話所特有的宛瞄。
- 環(huán)境變量可以幫助你配置shell的行為或它啟動的進程浮禾。