日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請(qǐng)做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會(huì)員:747

linux下的標(biāo)準(zhǔn)輸入、輸出、重定向、管道

在Linux系統(tǒng)中,有4個(gè)特殊的符號(hào),<, ‘>’, ‘|’, ‘-‘,在我們處理輸入和輸出時(shí)存在重要但具有迷惑性的作用。

默認(rèn)Linux的命令的結(jié)果都是輸出到標(biāo)準(zhǔn)輸出,錯(cuò)誤信息 (比如命令未找到或文件格式識(shí)別錯(cuò)誤等) 輸出到標(biāo)準(zhǔn)錯(cuò)誤,而標(biāo)準(zhǔn)輸出和標(biāo)準(zhǔn)錯(cuò)誤默認(rèn)都會(huì)顯示到屏幕上。

>表示重定向標(biāo)準(zhǔn)輸出,> filename就是把標(biāo)準(zhǔn)輸出存儲(chǔ)到文件filename里面。標(biāo)準(zhǔn)錯(cuò)誤還是會(huì)顯示在屏幕上。

2 >&1 表示把標(biāo)準(zhǔn)錯(cuò)誤重定向到標(biāo)準(zhǔn)輸出。Linux終端用2表示標(biāo)準(zhǔn)錯(cuò)誤,1表示標(biāo)準(zhǔn)輸出。

- (短橫線):表示標(biāo)準(zhǔn)輸入,一般用于1個(gè)程序需要多個(gè)輸入的時(shí)候。

<標(biāo)準(zhǔn)輸入,后面可以跟可以產(chǎn)生輸出的命令,一般用于1個(gè)程序需要多個(gè)輸入的時(shí)候。

|管道符,表示把前一個(gè)命令的輸出作為后一個(gè)命令的輸入,前面也有一些展示例子。用于數(shù)據(jù)在不同的命令之間傳輸,用途是減少硬盤存取損耗。

下面我們通過一個(gè)程序stdout_error.sh來解釋上面的文字,內(nèi)容如下

#!/bin/bash
echo "I am std output" 
# 下面是隨便寫的一個(gè)理論上不存在的命令, 理論上會(huì)報(bào)錯(cuò)的。
unexisted_command

運(yùn)行這個(gè)腳本

# 標(biāo)準(zhǔn)輸出和標(biāo)準(zhǔn)錯(cuò)誤默認(rèn)都會(huì)顯示到屏幕上
ct@ehbio:~$ bash stdout_error.sh 
I am std output
stdout_error.sh: line 5: unexisted_command: command not found
# >把結(jié)果輸入到了文件;標(biāo)準(zhǔn)錯(cuò)誤還顯示在屏幕上
ct@ehbio:~$ bash stdout_error.sh >stdout_error.stdout
stdout_error.sh: line 5: unexisted_command: command not found
ct@ehbio:~$ cat stdout_error.stdout
I am std output
# >把結(jié)果輸入到了文件; 2>把標(biāo)準(zhǔn)錯(cuò)誤輸入到了另一個(gè)文件
ct@ehbio:~$ bash stdout_error.sh >stdout_error.stdout 2>stdout_error.stderr
ct@ehbio:~$ cat stdout_error.stderr
stdout_error.sh: line 5: unexisted_command: command not found
# 標(biāo)準(zhǔn)輸出和標(biāo)準(zhǔn)錯(cuò)誤寫入同一個(gè)文件
ct@ehbio:~$ bash stdout_error.sh >stdout_error.stdout 2>&1
ct@ehbio:~$ cat stdout_error.stdout
I am std output
stdout_error.sh: line 5: unexisted_command: command not found

下面看管道符和標(biāo)準(zhǔn)輸入的使用。

# 管道符的使用
# 第一個(gè)命令的輸出作為第二個(gè)的輸入
# 前面的例子中也有使用
# tr: 是用于替換字符的,把空格替換為換行,文字就從一行變?yōu)榱艘涣?ct@ehbio:~$ echo "1 2 3" | tr ' ' 'n'
1
2
3
# cat命令之前也用過,輸出一段文字
# diff是比較2個(gè)文件的差異的,需要2個(gè)參數(shù)
# - (短橫線)表示上一個(gè)命令的輸出,傳遞給diff
# < 表示其后的命令的輸出,也重定向給diff
ct@ehbio:~$ cat <<END | diff - <(echo "1 2 3" | tr ' ' 'n')
> 2
> 3
> 4
> END
0a1
> 1
3d3
< 4
# 如果不使用管道和重定向標(biāo)準(zhǔn)輸入,程序是這么寫的
# 先把第一部分存儲(chǔ)為1個(gè)文件
ct@ehbio:~$ cat <<END >firstfile
2
3
> 4
> END
ct@ehbio:~$ less firstfile 
# 再把第二部分存儲(chǔ)為1個(gè)文件
ct@ehbio:~$ echo "1 2 3" | tr ' ' 'n' >secondfile
# 然后比較
ct@ehbio:~$ diff firstfile secondfile 
0a1
> 1
3d3
< 4

管道符的更多應(yīng)用

ct@ehbio:~$ echo  "actg aaaaa cccccg" | tr ' ' 'n' | wc -l
3
# sed =:先輸出行號(hào),再輸出每行的內(nèi)容
ct@ehbio:~$ echo  "a b c" | tr ' ' 'n' | sed =  
1
a
2
b
3
c
# 后面這個(gè)命令不太好解釋
# sed = 同時(shí)輸出行號(hào)
# N: 表示讀入下一行;sed命令每次只讀一行,加上N之后就是緩存了第2行,所有的操作都針對(duì)第一行;
# s: 替換;把換行符替換為t
ct@ehbio:~$ echo  "a b c" | tr ' ' 'n' | sed = | sed 'N;s/n/t/' 
1    a
2    b
3    c
# 后面這個(gè)命令不太好解釋
# sed = 同時(shí)輸出行號(hào)
# N: 表示讀入下一行;sed命令每次只讀一行,加上N之后就是緩存了第2行,所有的操作都針對(duì)第一行;
# s: 替換;把讀取的奇數(shù)行行首加一個(gè)'>'(偶數(shù)行相當(dāng)于被隱藏了)
ct@ehbio:~$ echo  "a b c" | tr ' ' 'n' | sed = | sed 'N;s/^/>/' 
>1
a
>2
b
>3
c
# 把多條序列轉(zhuǎn)成FATSA格式
# sed = 同時(shí)輸出行號(hào)
# N: 表示讀入下一行;sed命令每次只讀一行,加上N之后就是緩存了第2行,所有的操作都針對(duì)第一行;
# s: 替換;把讀取的奇數(shù)行行首加一個(gè)'>'(偶數(shù)行相當(dāng)于被隱藏了)
# 于是FASTA格式序列就出來了
ct@ehbio:~$ echo  "actg aaaaa cccccg" | tr ' ' 'n' | sed = | sed 'N;s/^/>/' 
>1
actg
>2
aaaaa
>3
cccccg

分享到:
標(biāo)簽:Linux
用戶無頭像

網(wǎng)友整理

注冊(cè)時(shí)間:

網(wǎng)站:5 個(gè)   小程序:0 個(gè)  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會(huì)員

趕快注冊(cè)賬號(hào),推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學(xué)四六

運(yùn)動(dòng)步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動(dòng)步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績?cè)u(píng)定2018-06-03

通用課目體育訓(xùn)練成績?cè)u(píng)定