1. 程式人生 > >4.3管道和重定向

4.3管道和重定向

管道和重定向

管道和重定向:> < >> <<


運算器 控制器: CPU

存儲器:RAM

輸入設備/輸出設備


程序:指令和數據


控制器:指令

運算器

存儲器


地址總線:內存尋址

數據總線:傳輸數據

控制總線:控制指令


寄存器:CPU暫時存儲器


I/O:硬盤


INPUT設備:

OUTPUT設備:


系統設定

默認輸出設備:標準輸出,STDOUT,1

默認輸入設備:標準輸入,STDIN,0

標準錯誤輸出:STDERR,2


標準輸入:鍵盤

標準輸出和錯誤輸出:顯示器


I/O重定向:


Linux:

> 輸出 ls /var > /tmp/var.out 覆蓋輸出(覆蓋原有內容)

>>:追加輸出


/***

set 內建命令:

-C(不允許覆蓋) -開啟功能

+C(恢復覆蓋) +關閉功能

ls /var >| /tmp/var.out(-C沒作用)

**/


set -C:禁止對已經存在文件使用覆蓋重定向

強制覆蓋輸出,則使用>|

set +C: 關閉上述功能


2>:重定向錯誤輸出

2>>:追加方式


ls /varr > /tmp/var3.out 2> /tmp/err.out(兩次重定向)


&>:重定向標準輸出或錯誤輸出至同一個文件

&>>:追加方式

ls /var6 &> /tmp/var0.out


<: 輸入重定向

<<:Here Document(在此處生成文檔)cat << EOF(end of file)


cat >> /tmp/myfile.txt << EOF 在腳本中生成文件


cat < /etc/fstab 把文件顯示出來

tr ‘a-z‘ ‘A-Z‘ < /etc/fstab


passwd --stdin


管道:前一個命令的輸出,作為後一個命令的輸入


命令1 | 命令2 | 命令3 | ...


echo "hello , world" | tr ‘a-z‘ ‘A-Z‘

echo "redhat" | passwd --stdin hive


tee 從標準輸入輸入,保存到標準輸出和文件

echo "Hello,World" | tee /tmp/hello.out


wc -l(字母) /etc/passwd

wc -l /etc/passwd | cut -d‘ ‘ -f1


練習:

1 統計/usr/bin/目錄下的文件個數:

ls /usr/bin | wc -l

2 取出當前系統上所有用戶的shell,要求,每種shell只顯示一次,並且

按順序進行顯示

cut -d: -f7 /etc/passwd | sort -u

3 思考:如何顯示/var/log目錄下每個文件的內容類型

file /var/log/*

file ‘ls /var/log‘

4 取出/etc/inittab文件的第6行

head -6 /etc/inittab | tail -1

5 取出/etc/passwd文件中倒數第9個用戶的用戶名和shell,顯示到屏幕上

並將其保存至/tmp/users文件中

tail -9 /etc/passwd |head -1 | cut -d: -f1,7 | tee /tmp/users

6 顯示/etc/目錄下所有以pa開頭的文件,並統計其個數

ls -d(不加-d把目錄下的文件都顯示出來了) /etc/pa* | wc -l

7 不使用文本編輯器,將alias cls = clear一行內容添加至當前用戶的

.bashrc文件中

echo "alias cls = clear" >> ~/.bashrc






4.3管道和重定向