重定向和管道

重定向

系統設定的輸入輸出


  • 默認輸出設備:標準輸出,STDOUT,1
  • 默認輸入設備:標準輸入,STDIN,0
  • 標準錯誤輸出:STDERR,2
標準輸入:鍵盤
標準輸出和錯誤輸出:顯示器

linux中的I/O重定向


  • 標準輸入 (stdin): 代碼爲0,使用<或<<;
  • 標準輸出 (stdout): 代碼爲1,使用>或>>;
  • 標準錯誤輸出(stderr): 代碼爲2,使用2>或2>>;
  • ">" ">>"
>: 覆蓋輸出 
>>:追加輸出
        
# set -C  禁止對已經存在文件使用覆蓋重定向;強制覆蓋輸出,則使用 >|
# set +C  關閉上述功能
  • "2>" "2>>"
2>: 重定向錯誤輸出
2>>: 追加方式
將正確的與錯誤的分別存入不一樣的文件中
# ls / /varr > /tmp/var3.out 2> /tmp/err.out
# ls /varr > /tmp/var4.out 2> /tmp/var4.out
        
/dev/null垃圾桶黑洞裝置
&>: 重定向標準輸出或錯誤輸出至同一個文件(或者2>&1)
  • "<"
輸出重定向(將原來須要由鍵盤輸入的數據,改由文件內容來取代)
# tr 'a-z' 'A-Z' < /etc/fstab
  • "<<"
Here Document(表明結束的輸入字符)
# cat << END
# cat >> /tmp/myfile.txt << EOF
/dev/null, 軟件設備,bit bucket,數據黑洞,將內容輸出定向到該設備下無任何返回內容

管道

管道是將前一個命令的輸出做爲後一個命令的輸入
命令1 | 命令2 | 命令3 | ......linux

# echo "hello world." | tr 'a-z' 'A-Z'
# echo "redhat" | passwd --stdin hive
# cut -d: -f1 /etc/passwd | sort | tr 'a-z' 'A-Z'
    
# echo "Hello,World." | tee /tmp/hello.out
        
# tee: 顯示內容並將內容保存在文件中
        
# wc -l /etc/passwd | cut -d' ' -f1
練習:
    一、統計/usr/bin/目錄下的文件個數;
    二、取出當前系統上全部用戶的shell,要求,每種shell只顯示一次,而且按順序進行顯示;
    三、思考:如何顯示/var/log目錄下每一個文件的內容類型?
    四、取出/etc/inittab文件的第6行;
    五、取出/etc/passwd文件中倒數第9個用戶的用戶名和shell,顯示到屏幕上並將其保存至/tmp/users文件中;
    六、顯示/etc目錄下全部以pa開頭的文件,並統計其個數;
    七、不使用文本編輯器,將alias cls=clear一行內容添加至當前用戶的.bashrc文件中;
相關文章
相關標籤/搜索