天天看點

管理以及io重定向

計算機的組成:

    運算器,控制器(合起來就是cpu)

    存儲器,輸入輸出裝置,總線

程式的組成:指令和資料

總線:

    位址總線:尋址

    資料總線:傳輸資料

    控制總線:控制指令

(為了精簡線路這三類總線往往是同一條,通過附加額外幾根線加以差別資料流)

寄存器:cpu暫時存儲器

 問題:為什麼會有寄存器,有什麼作用?

    假設我們要cpu進行一次加法運算,當第一個加數被傳到cpu的時候,它必須等待另一個被加數的傳輸,此時如果沒有額外的存儲器,當被加數傳輸過來的時候就會覆寫加數,是以這個臨時存放加數的地方就是寄存器。

系統設定

    預設輸出裝置:标準輸出,stdout,1(最常見的是顯示器)

    預設輸出裝置:标準輸入,stdin,0(鍵盤)

    标準錯誤輸出,stderr,2            (顯示器)

i/o重定向:

>:覆寫輸出重定向

>>:附加輸出重定向(不修改原來的内容)

    set  -c:禁止對已經存在的檔案使用覆寫重定向;

            強制使用覆寫重定向則使用>|

         +c:關閉上述功能

示例:

[root@logstach tmp]# set -C

[root@logstach tmp]# cat  /etc/passwd >a

-bash: a: cannot overwrite existing file

[root@logstach tmp]# set +C

[root@logstach tmp]# !cat

cat  /etc/passwd >a

2>:重定向錯誤輸出

2>>:追加方式

&>:相當于>和2>一起用,重定向标準輸出或錯誤輸出到同一個檔案(沒有&>>,要附加用>>和2>>)

[root@logstach tmp]# cat  /etc/passwd >a.txt 2>a.txt

[root@logstach tmp]# cat a.txt

root:x:0:0:root:/root:/bin/bash

bin:x:1:1:bin:/bin:/sbin/nologin

[root@logstach tmp]# cat  /etc/passwd11 >a.txt 2>a.txt

cat: /etc/passwd11: No such file or directory

[root@logstach tmp]# cat  a.txt &>b.txt

[root@logstach tmp]# cat b.txt

[root@logstach tmp]# cat a123.txt &> b.txt

cat: a123.txt: No such file or directory

<:輸入重定向

<<:here  document

[root@logstach tmp]# cat  > c <<EOF

> hello world

> i miss you

> EOF

[root@logstach tmp]# cat c

hello world

i miss you

管道:|  前一個指令的輸出作為後一個指令的輸入

指令1|指令2|指令3|...

tee:從标準輸入讀取資料顯示在螢幕上并且儲存在某個檔案中

    -a:附加方式

    -i:忽視中斷信号

練習:    

統計/usr/bin/目錄下的檔案個數

取出目前系統上所有使用者的shell,要求,各種shell隻顯示一次,并且按順序進行顯示

思考:如何顯示/var/log目錄下每個檔案的内容類型?

取出/etc/inittab檔案的第6行;

取出/etc/passwd 檔案中倒數第9個使用者的使用者名和shell,顯示到螢幕上并儲存到/tmp/user檔案中。

顯示/etc目錄下所有以pa開頭的檔案,并統計其個數;

不使用文本編輯器,将alias cls=clear 一行内容添加至目前使用者的~/.bashrc檔案中

答案:

ls  /usr/bin/|wc -l

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

file  /var/log/*  或者cd /var/log && file `ls /var/log` (先cd /var/log是因為如果使用file `ls /var/log/`它會在目前路徑下查找ls出來的檔案,而不是到/var/log,是以會提示錯)

cat  /etc/inittab |head  -6 |tail -1

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

 ls  -d  /etc/pa* |wc -l(這裡注意ls 要加-d參數)

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

本文轉自biao007h51CTO部落格,原文連結:http://blog.51cto.com/linzb/1729550 ,如需轉載請自行聯系原作者