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 約定俗成
(多行重定向 不結束不會生成文件
單行重定向 回車一次就會寫入文件)

 

 

  管道

管道使用「|」來鏈接命令centos

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

  • 將命令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"
相關文章
相關標籤/搜索