與DOS類似,Shell 程序通常自動打開3個標(biāo)準(zhǔn)文檔:標(biāo)準(zhǔn)輸入文檔(stdin)、標(biāo)準(zhǔn)輸出文檔(stdout)和標(biāo)準(zhǔn)錯誤輸出文檔(stderr)。其中 stdin 一般對應(yīng)終端鍵盤,stdout 和 stderr 對應(yīng)終端屏幕。進(jìn)程從 stdin 獲取輸入內(nèi)容,將執(zhí)行結(jié)果輸出到stdout,如果有錯誤信息,同時輸出到 stderr。多數(shù)情況下使用標(biāo)準(zhǔn)輸入輸出作為命令的輸入輸出,但有時可能要改變標(biāo)準(zhǔn)輸入輸出,這就涉及到重定向和管道。
主要用于改變命令的輸入源,讓輸入不要來自鍵盤,而來自指定文件;居梅ǎ
命令 < 文件名
例如,wc 命令用于統(tǒng)計指定文件包含的行數(shù)、字?jǐn)?shù)和字符數(shù),直接執(zhí)行不帶參數(shù)的 wc 命令,將等待用戶輸入內(nèi)容之后,按<Ctrl>+<D>結(jié)束輸入后才對輸入的內(nèi)容進(jìn)行統(tǒng)計。而執(zhí)行下列命令通過文件為 wc 命令提供統(tǒng)計源。
命令 > 文件名
-d 指定了保存java文件的目錄-p 指定了生成的java文件所在的包例如編譯當(dāng)前目錄下的schema.xls文件,java文件保存在src目錄,包名為generate,其命令如下:xjc –d src –p generate schema.xsd如果編譯文件是schema.dta,則命令如下:xjc –dtd –d src –p generate schema.dtd2. 通過ant編譯在/jaxb-home/lib目錄中的jaxb-xjc.jar包中包含了xjctask.class文件,可以依據(jù)該類定義一個ant task,通過執(zhí)行該task生成java文件,task的定義如下:
ls > /home/nnp/myml.list
如果要寫入已有文件linux命令大全,則將該文件重寫(覆蓋)。要避免重寫破壞原有數(shù)據(jù),可選擇追加功能,將 > 改為 >>,下列命令將當(dāng)前目錄中的文件列表追加到指定文件的末尾。
ls >> /home/nnp/myml.list
2>&1 表示標(biāo)準(zhǔn)錯誤輸出重定向等同于標(biāo)準(zhǔn)輸出,因為之前標(biāo)準(zhǔn)輸出已經(jīng)重定向到了空設(shè)備文件,所以標(biāo)準(zhǔn)錯誤輸出也重定向到空設(shè)備文件。1> results這里的1其實沒必要,供輸出重定向的默認(rèn)文件描述符是標(biāo)準(zhǔn)輸出linux命令大全,也就是文件描述符1,重定向 > results讓文件描述符1作為文件results,接下來重定向2>&1有兩部分,2>重定向文件描述2,也就是標(biāo)準(zhǔn)錯誤輸出。看了一下crontab中的內(nèi)容,哈哈,果真是有人沒有將程序輸出的內(nèi)容和錯誤沒有定向,導(dǎo)致每次執(zhí)行crontab中的程序就在/var/spool/clientmqueue/下產(chǎn)生一個小文件,居然還有兩個程序是每分鐘執(zhí)行一次,基本上一天要產(chǎn)生近20w個文件,哦,好恐怖啊。
管道用于將一個命令的輸出作為另一個命令的輸入,使用符號 “|” 來連接命令?梢詫⒍鄠命令依次連接起來,前一個命令的輸出作為后一個命令的輸入。基本用法:
命令1 | 命令2 ....... | 命令n
在Linux命令行中,管道操作非常實用。例如,以下命令將 ls 命令的輸出結(jié)果提交給 grep 命令進(jìn)行搜索。
ls | grep "ab"
在執(zhí)行輸出內(nèi)容較多的命令時可以通過管道使用 more 命令進(jìn)行分頁顯示,例如:
cat /etc/log/message | more
命令替換與重定向有些類似,不同的是命令替換將一個命令的輸出作為另一個命令的參數(shù),常用命令格式如下:
命令1 '命令2'
其中命令2的輸出作為命令1的參數(shù),注意這里的符號是指反引號,被它括起來的內(nèi)容作為命令執(zhí)行,執(zhí)行的結(jié)果作為命令1的參數(shù)。例如以下命令將 pwd 命令列出的目錄作為 cd 命令的參數(shù),結(jié)果仍停留在當(dāng)前目錄下。