Linux-溫故知新-重定向和管道

重定向

0 標準輸入 stdin /dev/stdin 
1 標準輸出 stdout /dev/stdout 
2 標準錯誤 stderr /dev/stderr

>覆蓋文件

  • 如果log.txt不存在,則會創建
  • 如果存在,則會覆蓋之前的內容
ls -l / 1>./log.txt

>>追加文件

  • 會把重定向的內容追加到log.txt
ls -l / 1>>./log.txt

區別輸出類型

# 1 代表標準輸出 stdout
ls -l / 1>>./stdout.txt

# 2 代表標準錯誤 stderr 
ls -l / 2>>./stderr.txt

# 也可以區別開
ls -l /bin /etc  1>stdout.txt 2>stderr.txt

# 將標準輸出和錯誤輸出合併到一個文件
ls -l / &>log.txt

echo

  • -e 表示輸出轉義符
echo -e "1 \n 2 \n 3"

/dev/null

  • /dev/null : 在類Unix系統中,/dev/null,或稱空設備,是一個特殊的設備文件,它丟棄一切寫入其中的數據(但報告寫入操作成功),讀取它會立即得到一個EOF。

  • /dev/null 被稱爲位桶(bit bucket)或者黑洞(black hole)。空設備通常被用於丟棄不需要的輸出流,或作爲用於輸入流的空文件。這些操作通常由重定向完成。

/dev/zero

  • /dev/zero:在類UNIX操作系統中,/dev/zero是一個特殊的文件,當你讀它時,它會提供無限的空字符(NULL , ASCALL NUL, 0x00)。

tr 輸入重定向

tr 準備要替換的字符 要替換成的字符

# 把空格替換爲製表符 並輸出到test.txt
tr ' ' '\t' <./test.txt

sort 命令

  • 對文件內容進行按行的排序

管道

  • 支持管道輸入的命令

在這裏插入圖片描述

和less結合查看文本

# 把ls的輸出作爲less的輸入
ls -al /etc | less

和grep結合過濾文本

# 把ls的輸出作爲grep的輸入
ls -al /etc | grep 'ssh'

和cut結合切割文本

# 切割log文件的前兩列字符
cat ./log.txt | cut -c1,2

# 切割第一個字符串以:爲分隔符
cat /etc/passwd | cut -f1 -d*:

和wc結合統計文本

wc 文件名
行數 單詞數 字節數

# 僅僅統計文本行數
wc -l 文件名
  • 統計當前用戶家目錄下所有目錄的總數
ls -al ~ | cut -c1 | grep 'd' | wc -l

# ls -al ~  列出家目錄中所有文件
# cut -c1 切割每一行中第一字符列,切割出來的爲文件類型符號
# grep 'd' 查找文件類型爲目錄的行
# wc -l 統計目錄行數

* 管道不會傳輸stderr信息

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章