標準輸入、標準輸出、錯誤輸出概述
1.標準輸入(stdin)是指令數(shù)據(jù)的輸入囱挑,代碼為0,使用<或者<<,默認是鍵盤沼溜。
2.標準輸出(stdout)是指令執(zhí)行成功返回的結(jié)果平挑,代碼為1,使用>或者>>,默認在屏幕顯示系草。
3.標準錯誤輸出(stderr)是指令執(zhí)行失敗返回的錯誤信息通熄,代碼為2,使用2>或者2>>,默認是屏幕。
數(shù)據(jù)流重定向的使用
????????1. ”<“: 指定輸入的數(shù)據(jù)媒介來源(tr 'a-z' 'A-Z' < 文件名:將指定文件中的小寫字母變?yōu)榇髮懽帜篙敵龅狡聊?
2. ">"悄但、"1>”: 將正確的內(nèi)容覆蓋輸出到指定的媒介
3. ">>"棠隐、"1>>”: 將正確的內(nèi)容追加到指定的媒介
4. "2>”: 將錯誤覆蓋輸出到指定的媒介
5. "2>>”: 將錯誤信息追加輸出到指定的媒介
6. "&>”: 將正確內(nèi)容和錯誤信息覆蓋輸出到指定媒介
7.?"&>>”: 將正確內(nèi)容和錯誤信息追加到指定的媒介
bash 腳本.sh &>> 腳本.log ? ? ? ? ? ?# 將自動化腳本的運行日志記錄到log文件中
? ? ? ? ?8.多個指令執(zhí)行:
bash1&&bash2(前者執(zhí)行成功才會執(zhí)行后者)
bash1||bash2(前者執(zhí)行完畢且失敗才執(zhí)行后者)
管道命令概述
1. 管道命令能夠?qū)⒁粋€命令的執(zhí)行結(jié)果經(jīng)過篩選,只保留我們需要的信息檐嚣。 如助泽,/etc目錄下會有大量的文件,如果使用ls很難找到需要的文件嚎京,因此可以使用管道命令將ls的結(jié)果進行一次篩選嗡贺,只保留需要的信息。
2. 管道和數(shù)據(jù)流重定向的區(qū)別:
管道一詞非常生動形象鞍帝,原始數(shù)據(jù)經(jīng)過管道后诫睬,管道會將一部分不需要的信息過濾掉,只保留用戶所關(guān)注的信息帕涌。數(shù)據(jù)流重定向是指定數(shù)據(jù)在哪里顯示摄凡,默認情況下會在屏幕顯示,我們可以指定它輸出到文件蚓曼。
3. 管道命令通過管道符"|"連接
4. 能夠接收標準輸入(stdin),如tail/more/grep等
5. 能夠接收來自前一個指令的數(shù)據(jù)成功stdin進行處理
管道命令的使用
cut:?剪切
它能將一行行的數(shù)據(jù)按照指定的分隔符切成一列列亲澡,然后只顯示特定列的數(shù)據(jù).
cut?-d?'分隔符'?-f n ? ? ? ? ? ? # 按照特定的分隔符將數(shù)據(jù)切分,并只顯示第n列的數(shù)據(jù)纫版。
cut?-c 起始字符的下標-結(jié)束字符的下標 ? ? ? ????? # 選擇特定范圍內(nèi)的數(shù)據(jù)(cut中涉及的下標均從1開始)
grep:?關(guān)鍵字查找
grep [-cinv] [--color=auto] '關(guān)鍵詞' 待查找的文件名?
-c:統(tǒng)計關(guān)鍵詞出現(xiàn)的次數(shù)
-i:關(guān)鍵詞忽略大小寫
-n:輸出行號
-v:反向選擇床绪,即查找不包含該關(guān)鍵字的行
--color=auto:關(guān)鍵詞高亮
命令 | grep [-參數(shù)] ‘關(guān)鍵詞’ ?采用管道,將前一個命令的執(zhí)行結(jié)果輸出給grep其弊,并通過grep的關(guān)鍵詞搜索將符合條件的行搜索出來癞己。
sort:排序
sort [-參數(shù)] 文件?
-t:指定分隔符
-k:選取分隔符后的第幾個字段進行排序
-f:排序時忽略選取字段的大小寫
-b:取出選取字段前的空格
-M:將選取的字段按照月份來排序(前提是選取字段就是月份)
-n:將選取字段按照數(shù)據(jù)來排序(前提是選取字段就是數(shù)字)
-r:反向排序
-u:去重,若選取字段有重復(fù),則去掉重復(fù)
命令 | sort [-參數(shù)] ??使用管道梭伐,將前一個命令執(zhí)行的結(jié)果按照指定字段進行排序痹雅。
uniq:只能用于管道,它能夠去除前一個命令執(zhí)行的結(jié)果中完全一樣的行
uniq [-參數(shù)] -i:忽略大小寫 -c:進行重復(fù)行的統(tǒng)計
wc: 統(tǒng)計字數(shù)籽御、行數(shù)练慕、字符數(shù)
wc [-參數(shù)] 文件名
-l 列出行數(shù)
-w 列出字數(shù)
-c 列出字符數(shù)
tee: 能夠同時將命令執(zhí)行的結(jié)果輸出到指定的文件和屏幕惰匙。只能結(jié)合管道使用
tee [-a] 文件?-a:以追加的形式寫入文件。
join: 連接兩個文件
這個命令與管道無關(guān)铃将。 它相當于數(shù)據(jù)庫中的join連接项鬼,將兩張表中指定字段,且字段相同的行連接起來劲阎。在這里绘盟,它能夠?qū)蓚€文件中指定字段的相同字段連接起來,并成一行悯仙。
join [-參數(shù)] 文件1 文件2?
-t:兩個文件的字段分隔符
-1:第一個文件的字段
-2:第二個文件的字段
-i:忽略所選字段的大小寫
split: 將一個大文件切分成若干個小文件
split [-參數(shù)] 大文件 小文件名字前綴?
????????????-b:指定小文件的大小龄毡,需要加上單位:b、k锡垄、m -l:指定每個小文件中的行數(shù)沦零。
大文件會被切分成若干個小文件,且小文件的名字為:小文件名字前綴+aa货岭、小文件名字前綴+ab路操、小文件名字前綴+ac.