計算機的組成:
運算器,控制器(合起來就是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 ,如需轉載請自行聯系原作者