Linux常用命令-io操作


Linux-io操作

  標准輸入和輸出

  • 標准輸入 stdin 0 默認接受來自鍵盤的輸入
  • 標准輸出 stdout 1 默認輸出到終端窗口
  • 標准錯誤 stderr 2 默認輸出到終端窗口

  I/O重定向

  把輸出和錯誤重新定向到文件

> 覆蓋

  • > 將stdout重定向到文件
  • 2> 把stderr重定向到文件
  • &> 把所有輸出重定向到文件

  禁止/允許覆蓋

[root@centos ~]#set -C
[root@centos ~]#> a.txt
-bash: a.txt: 無法覆蓋已存在的文件
[root@centos ~]#set +C
[root@centos ~]#> a.txt

 

>> 追加

  • >> 將stdout追加到文件
  • 2>> 把stderr追加到文件
  • &>> 把所有輸出追加到文件

標准輸出和錯誤輸出各自定向到不同的文件

ls b bbbbb > info.log 2> error.log

合並所有輸出

  • &> 覆蓋重定向
  • &>> 追加重定向
  • command > /path/to/file.out 2>&1
  • command >> /path/to/file.out 2>&1
  • ():合並多個程序的stdout
  • /dev/null 無限接收的無底洞

  tr 替換或者刪除字符

tr 'a-z' 'A-Z' </etc/issue
[root@localhost jiangyi]#tr ab 12
ab
12
[root@localhost jiangyi]#tr abc 12  如果后面的位數不足的話,則用最后一位補齊
abc
122
ab
12
tr -d abc < issue > issue2 從定向不能為原來的文件,如果說為原來的文件,則文件情況
-t 用來截斷
[root@localhost jiangyi]#tr -t abcd 12
abcd
12cd
cd
cd
-s 壓縮 去重
[root@localhost jiangyi]#tr -s abc
abc
abc
aaabbbccccccccccccccccccccccccccccc
abc
-c 取反
[root@localhost jiangyi]#tr -sc abc
aaaaaaaaaaaaaabbbbbbbbbbbbbbbcccccccccccccc
aaaaaaaaaaaaaabbbbbbbbbbbbbbbcccccccccccccc
aaaaaaaaaaaaaaaaaabbbbbbbbbbbbbcccccccccccccccccdddddddddddddeeeeeeeeeeeeffffffffffffff
aaaaaaaaaaaaaaaaaabbbbbbbbbbbbbcccccccccccccccccdef
aaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbccccccccc1111111111111111222222222222333333333333
aaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbccccccccc123
[root@localhost jiangyi]#tr -dc abc
aaaaaaaaaaaaabbbbbbbbbbbbccccccccccccccccccdddddddddddddddwqweqweqwqeqwqwqwq
wqqqqqqqqqqqqqqqqqqqqqqqqq
ctrl+d結束
[root@localhost jiangyi]#tr -dc "abc\n"
adsada
aaa
sadasdcxzczx
aacc
asdadwq
aa
[root@localhost jiangyi]#seq 1 10 >f1
[root@localhost jiangyi]#tr -d "\n" <f1
[root@localhost jiangyi]tr "\n" " "<f1
[root@localhost jiangyi] tr " " "\n" <f2

 

  多行輸入

[root@localhost jiangyi]#cat >f1 <<EOF
> 1
> 2
> 3
> 4
> 5
> 6
> 7
> 
> 8
> 9
> EOF
[root@localhost jiangyi]# cat > f4
asdas
sad
asd
ctrl+d結束 ctrl+c也可以
兩者區別
第一種方式輸出結束,文件才會產生
第二方式,回車一次就會寫入文件
EOF 約定俗成
(多行重定向 不結束不會生成文件
單行重定向 回車一次就會寫入文件)

 

 

  管道

管道使用“|”來連接命令

命令1|命令2|命令3|。。。

  • 將命令1的stdout發給命令2的stdin,將命令2的stdout發給命令3的stdin
  • stderr默認不能通過管道轉發,可以使用|&實現
    • [root@centos ~]#ls /daopda|& tr -s 'a-z' 'A-Z' LS: 無法訪問/DAOPDA: 沒有那個文件或目錄
  • 作用一般是用來組合多種工具
    • ls |tr 'a-z' 'A-Z'
[root@localhost jiangyi]#ls /dadadasda|tr -s "a-z" "A-Z"
ls: cannot access /dadadasda: No such file or directory
[root@localhost jiangyi]#ls|tr "a-z" "A-Z"

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM