2009年9月23日 星期三

Unix 命令

(一)基本命令
命令格式: 命令 參數

★1. ls 顯示文件名,等同於dos下dir命令
命令格式:ls [option] file
option:
-l 顯示詳細列表
文件類型和權限 文件連接數 所有者 用戶組脈 文件長度 修改日期 文件名
-a 顯示所有文件,包含隱藏文件(以. 起頭的文件名)
-R 顯示文件及所有子目錄
-F 顯示文件(後跟*)和目錄(後跟/)
-d 與l選項合用,顯示目錄名而非其內容
-p

★2. cd 目錄轉換,等同於dos下cd命令
注意目錄分隔符為“/”,與dos相反
命令格式:cd dirname

★3. pwd 顯示當前路徑
★4. cat 顯示文本內容,等同於dos下type命令
命令格式:cat filename

★5. more 或pg 以分頁方式查看一個長文本文件內容.
命令格式:more filename

★6. rm 刪除文件
命令格式: rm [-r] filename (filename 可為檔名,或檔名縮寫符號.)
例子 :
rm file1 刪除檔名為 file1 之文檔.
rm file? 刪除檔名中有五個字元,前四個字元為file 之所有文檔.
rm f* 刪除檔名中,以 f 為字首之所有文檔.
rm -r dir1 刪除目錄 dir1,及其下所有文檔及子目錄.

★7. mkdir 創建目錄
命令格式: mkdir [-p] directory-name

Exmaple :

mkdir dir1 (建立一新目錄 dir1.)

mkdir -p dir/subdir (直接創建多級目錄)

★8. rmdir 刪除目錄
目錄必須首先為空
命令格式: rmdir directory

★9. cp 文檔複製 cp –r 目錄複製
命令格式: cp [-r] source destination
Exmaple:

Cp -i file1 file2 (將文檔 file1 複製成 file2 . –i為提示確認。)

cp file1 dir1 將文檔 file1 複製到目錄 dir1 下,文件名仍為 file1.

cp /tmp/file1 . 將目錄 /tmp 下的文檔 file1複製到現行目錄下,檔名仍為 file1.

cp /tmp/file1 file2 將目錄 /tmp 下的文檔 file1現行目錄下,檔名為file2

cp -r dir1 dir2 (recursive copy) 複製整個目錄.若目錄 dir2 不存在,則將目錄dir1,及其所有文檔和子目錄,複製到目錄 dir2 下,新目錄名稱為dir1.若目錄dir2不存在,則將dir1,及其所有文檔和子目錄,複製為目錄 dir2.

★10. mv 文件移動 重命名
命令格式: mv source destination
Exmaple:
mv file1 file2 將file1重命名為 file2.
mv file1 dir1 將文檔 file1,移到目錄 dir1 下,檔名仍為 file1.
mv dir1 dir2 若目錄 dir2 不存在,則將目錄 dir1,及其所有檔
案和子目錄,移到目錄 dir2 下,新目錄名稱為 dir1.
若目錄 dir2 不存在,則將dir1,及其所有文檔和子
目錄,更改為目錄 dir2.

11. du 查看目錄所佔磁碟容量
命令格式: du [-sk] directory
例子 :
du dir1 顯示目錄 dir1 的總容量及其次目錄的容量
du -sk dir1 顯示目錄 dir1 的總容量,以k bytes為計量

12. find 查找文件
命令格式: find dir -name filename command
例子:
find . -name hello -print 尋找目前目錄及所有的子目錄內叫
hello的文檔.
find . -ctime +7 -print 找出七天內未被更動的文檔
find . -size +2000m -print 找出大小超過2000 bytes的文檔
find /tmp -user b1234567 -print 在/tmp下屬於b1234567的文檔
find . -name '*.c' -exec rm {} 刪除所有的.c檔
find . -name test\* -print 顯示當前目錄及其子目錄文件名前4
位為test的文件名

★13. vi 編輯器
命令狀態:
j,k,h,l:上下左右
0: 行首
$: 行尾
i,I :插入命令,i 在當前光標處插入 I 行首插入
a,A:追加命令,a 在當前光標後追加,A 在行末追加
o,O:打開命令,o 在當前行下打開一行,O在當前行上插入一行
r,R :替換命令,r 替換當前光標處字符,R從光標處開始替換
數字s: 替換指定數量字符
x: 刪除光標處字符
dd: 刪除當前行
d0: 刪除光標前半行
d$: 刪除光標後半行
ctrl+f :後翻頁
ctrl+b:前翻頁
G : 文件尾
數字G: 數字所指定行
/string 查找字符串
n 繼續查找
N 反向繼續查找
% 查找對應括號
u 取消上次操作
ex命令狀態
:set number 顯示行號
:set smd 顯示顯示狀態
:0 文件首
:1,5 copy 7 塊拷貝
:1,5 del 塊刪除
:1,5 move 7 塊移動
:1,$s/string1/string2/g 全文件查找string1並替換為string2
:wq! 存盤退出

★14. dtpad 或 txetedit
相當於Windows的記事本,對不習慣vi的人很有用

★15. head -5 filename 顯示文件的前5行
tail -5 filename顯示文件的最後5行

16. sort 按次序顯示文件
17. hostname
18. lp 打印
19. unix2dos 文件格式轉化
20. echo顯示文本
21. date
22. script記錄一個solaris會話
(二) 增強命令
1. ln 文檔連結
命令格式:ln -s oldname newname ( Hard link )
同一文檔,可擁有一個以上之名稱,可將文檔做數個連結.例子 :
ln -s file1 file2  將名稱 file2,連結至文檔 file1.

2.grep 查找一個字符串
命令格式:
grep string filename
尋找字串的方法很多,比如說我想找所有以M開頭的行.此時必須引進pattern的觀
念.以下是一些簡單的□例,以及說明:
^M 以M開頭的行,^表示開始的意思
M$ 以M結尾的行,$表示結束的意思
^[0-9] 以數字開始的行,[]內可列舉字母
^[124ab] 以1,2,4,a,或b開頭的行
^b.503 句點表示任一字母
* 星號表示0個以上的字母(可以沒有)
+ 加號表示1個以上的字母
\. 斜線可以去掉特殊意義
 
cat passwd grep ^b 列出大學部有申請帳號者名單
cat passwd grep ^s 列出交換學生申請帳號者名單
cat passwd grep '^b.503' 列出電機系各年級...
grep '^\.' myfile.txt 列出所有以句點開頭的行

3.fgrep 搜索字符串
命令格式:fgrep string file

4.file 顯示文件類型
命令格式:file fileall
文件類型為shell script,ELF 32bit,ASCII text,data or tar file

5.diff 比較文檔或目錄之不同內容
命令格式:diff [-r] name1 name2 ( name1 name2 可同時為檔名,或目錄名稱.)
例子 :
%diff file1 file2
比較文檔 file1 與 file2 內,各行之不同處.
%diff -r dir1 dir2
比較目錄 dir1 與 dir2 內,各文檔之不同處

6.cmp 比較文檔相同部分
命令格式:cmp file1 file2

★7.ftp 遠程文件傳輸
命令格式: ftp [hostnameIP address]
在進入 ftp 之後,如果與 remote host 連接上了,它將會詢問你 username 與密碼,如果輸入對了就可以開始進行文檔傳輸.
注意:如用戶無密碼,無法註冊
(1) ftp 命令
ascii 將傳輸模式設為 ascii 模式.通常用於傳送文字檔.
binary 將傳輸模式設為 binary 模式,通常用於傳送執行檔,壓縮檔與影像檔等.
cd remote-directory 將遠程主機上的工作目錄改變.
lcd [ directory ] 更改本地主機的工作目錄.
ls [ remote-directory ] [ local-file ] 列出遠程主機上的文檔.
get remote-file [ local-file ] 取得遠方的文檔.
mget remote-files 可使用通用字元一次取得多個文檔.
put local-file [ remote-file] 將本地主機的文檔送到遠程主機.
mput local-files 可使用通用字元一次將多個文檔放到遠程主機上.
help [ command ] 線上輔助指令.
mkdir directory-name 在遠程主機創建一個目錄.
prompt 更改交談模式,若為 on 則在 mput 與 mget 時每作一個文檔之傳
輸時均會詢問.
quit/bye 離開ftp .
(2) 後台執行ftp
1.首先,將過程所用到的指令依順序放入文檔中,如下:
%cat ftp_command
!mkdir test
lcd test
cd test
prompt
binary
mget *.*
bye
2.其次,建一個.netrc檔,屬性為400,讓ftp 自動到此讀取Username
與Password,方可順利login 到的主機,如下:
%cat .netrc
machine remote login anonymous password guest
3.最後再執行下面指令即可.
%nohup ftp remote <> message &

8.telnet 遠程終端訪問
命令格式:
telnet [hostnameIP address]

★9.IO 重新導向
UNIX所有的程式執行時,均需要資料的輸入以及輸出資料.一般而言,資料是從鍵盤輸入,並將資料輸出到螢幕上,這就叫做標準輸入及標準輸出,而我們可以更改標准出輸出入.
A. 更改標準輸入 —— 在命令後方加"< " ,即可從這個文檔輸入資料.
B. 更改標準輸出 —— 在命令後方加"> " ,即可將螢幕輸出的資料導向到這個文檔上.
C. 更改標準輸出 —— 在命令後方加">> ",功能與B.相似,只不過這會將資料加在文檔後方.
D. 管道 —— 在兩個命令中間加上'',即可將前方指令的輸出當成後方指令
D. 管道 —— 在兩個命令中間加上'',即可將前方指令的輸出當成後方指令的輸入.
例:
cd /tmp
ls -l > /tmp/ls.out
cat /tmp/ls.out
more /tmp/ls.out
rm /tmp/ls.out
ls more
ls wc -l (word count, count line number,算出文檔數目)\

沒有留言:

張貼留言