超全整理!Linux shell及常用36類命令彙總

本文采編自http://blog.csdn.net,作者爲ZHXGXN,版權歸作者所有!

使用Linux shell是一些程序員每天的基本工作,但我們經常會忘記一些有用的shell命令和技巧。當然,命令我能記住,但我不敢說能記得如何用它執行某個特定任務。需要注意一點的是,有些用法需要在你的linux系統裏安裝額外的軟件。

shell是一種命令解釋器,它提供了用戶和操作系統之間的交互接口。shell是面向命令行的,而 X Window 則是圖形界面。你在命令行輸入命令,shell進行解釋,然後送往操作系統執行。

shell可以執行 Linux 的系統內部命令,也可以執行應用程序。你還可以利用shell編程,執行復雜的命令程序。

Linux 提供幾種shell程序以供選擇。常用的有 Bourne ( b s h )C( c s h )Korn( k s h ),各個shell都能提供基本的功能,又有其各自的特點。

Bourne shell

Bourne shell是由Steven Bourne 編寫的,是UNIX 的缺省shellBourne shellshell編程能力很強。但它不能處理命令的用戶交互特徵。bash Bourne shell的增強版。

Cshell

Cshell是由加利福尼亞大學伯克利分校的Bill Joy編寫的。它能提供Bourne shell所不能處理的用戶交互特徵,如命令補全、命令別名、歷史命令替換等。很多人認爲, C shell的編程能力不如Bourne shell,但它的語法和C語言類似,所以C程序員將發現C shell很順手。tcsh Cshell的增強版本和Cshell完全兼容。

Korn

K o r nshell是由Dave Korn 編寫的。Korn shell融合了C shellBourne shell的優點,並和Bourne shell完全兼容。 Korn shell的效率很高,其命令交互界面和編程交互界面都很不錯。Public Domain Korn shell( p d k s h )Korn shell的增強版。

bash

bash 是大多數L i n u x系統的缺省shell。它克服了Bourne shell的缺點,又和Bourne shell完全

兼容,B a s h有以下的特點:

1 補全命令行。 當你在bash 命令提示符下輸入命令或程序名時,你不必輸全命令或程序

名,按Tab 鍵,b a s h將自動補全命令或程序名。

2 通配符。 b a s h下可以使用通配符 * 和?。*可以替代多個字符,而?則替代一個字符。

3 歷史命令。 bash 能自動跟蹤你每次輸入的命令,並把輸入的命令保存在歷史列表緩衝區。

緩衝區的大小由HISTSIZE 變量控制。當你每次登錄後,home 目錄下的 .bash_history

件將初始化你的歷史列表緩衝區。你也能通過history fc 命令執行、編輯歷史命令。

4別名。 b a s h下,可用alias unalias 命令給命令或可執行程序起別名和清除別名。這

樣你可以用自己習慣的方式輸入命令。

進入shell

Linux 啓動後,給出 login 命令,等待用戶登錄。

Login: <輸入用戶名>

Password: <輸入密碼>

如果是正確的用戶名和密碼,那麼你就會進入Linux shell shell給出命令提示符,等待

你輸入命令。使用 l o g o u t命令退出shell

shell的常用命令

 

1、更改帳號密碼

語法:passwd

Old password: <輸入舊密碼>

New password: <輸入新密碼〉

Retype new password: <再輸入一次密碼>

2、聯機幫助

語法: man 命令

例如:

man ls

3、遠程登錄

語法:rlogin 主機名 [-l 用戶名]

例如:

rlogin aa          遠程登錄到工作站 aa 中。

rlogin aa -l user  使用 user 帳號登錄到工作站 aa 中。

語法:telnet 主機名  telnet IP地址

例如:

telnet aa

telnet 130.129.21.250

3、文件或目錄處理

列出文件或目錄下的文件名。

語法: ls [-atFlgR] [name]

ls  列出目前目錄下的文件名。

ls -a 列出包括以 .開始的隱藏文件的所有文件名。

ls -t 依照文件最後修改時間的順序列出文件名。

ls -F 列出當前目錄下的文件名及其類型。以/ 結尾表示爲目錄名,以* 結尾表示爲

可執行文件,以@ 結尾表示爲符號連接。

ls -l 列出目錄下所有文件的權限、所有者、文件大小、修改時間及名稱。

ls -lg 同上,並顯示出文件的所有者工作組名。

ls -R 顯示出目錄下以及其所有子目錄的文件名。

4、改變工作目錄

語法:cd [name]

name:目錄名、路徑或目錄縮寫。

例如:

cd  改變目錄位置至用戶登錄時的工作目錄。

cd  dir 改變目錄位置至d i r目錄下。

cd  user  改變目錄位置至用戶的工作目錄。

cd  .. 改變目錄位置至當前目錄的父目錄。

cd  ../user 改變目錄位置至相對路徑 user 的目錄下。

cd  /../.. 改變目錄位置至絕對路徑的目錄位置下。

cd  改變目錄位置至用戶登錄時的工作目錄。

5、複製文件

語法: cp [-r] 源地址 目的地址

例如:

cp file1 file2 將文件 file1 複製成 f i l e 2

cp file1 dir1 將文件 file1 複製到目錄 dir1 下,文件名仍爲 f i l e 1

cp /tmp/file1 . 將目錄 /tmp 下的文件 file1 複製到當前目錄下,文件名仍爲 f i l e 1

cp /tmp/file1 file2 將目錄 /tmp 下的文件 file1 複製到當前目錄下,文件名爲f i l e 2

cp -r dir1 dir2 複製整個目錄。

6、移動或更改文件、目錄名稱

語法:mv 源地址 目的地址

例如:

mv file1 file2 將文件 f i l e 1更名爲 f i l e 2

mv file1 dir1 將文件 f i l e 1移到目錄 dir1 下,文件名仍爲 f i l e 1

mv dir1 dir2 將目錄 dir1 更改爲目錄 d i r 2

7、建立新目錄

語法: mkdir 目錄名

mkdir dira  建立一新目錄 d i ra

8、刪除目錄

語法: rmdir 目錄名  rm 目錄名

例如:

rmdir dir1 刪除目錄 d i r 1,但 dir1 下必須沒有文件存在,否則無法刪除。

rm -r dir1 刪除目錄 d i r 1及其子目錄下所有文件。

9、刪除文件

語法: rm  文件名

例如:

rm  file1 刪除文件名爲 file1 的文件。

rm  file? 刪除文件名中有五個字符且前四個字符爲file 的所有文件。

rm  f* 刪除文件名中以 f 爲字首的所有文件。

10、列出當前所在的目錄位置

語法: p w d

11、查看文件內容

語法: cat 文件名

例如:

cat file1 以連續顯示方式,查看文件名 file1 的內容。

12、分頁查看文件內容

語法: more 文件名  cat 文件名 | more

例如:

more file1 以分頁方式查看文件名 file1 的內容。

cat file1 | more 以分頁方式查看文件名 file1 的內容。

13、查看目錄所佔磁盤容量

語法: du [-s] 目錄

例如:

du dir1 顯示目錄 dir1 的總容量及其子目錄的容量(KB 爲單位)

du -s dir1 顯示目錄 dir1 的總容量。

14、文件傳輸

1. 拷貝文件或目錄至遠程工作站

語法: rcp [-r] 源地址 主機名:目的地址

源地址文件名、目錄名或路徑。

例如:

rcp file1 doc:/home/user      將文件f i l e 1拷貝到工作站 doc 路徑 /home/user 下。

rcp -r dir1 doc:/home/user      將目錄 d i r 1拷貝到工作站 doc 路徑/home/user 下。

2. 自遠程工作站,拷貝文件或目錄

語法: rcp [-r] 主機名:源地址 目的地址

主機名工作站名。

源地址路徑名。

目的地址、文件名、目錄名或路徑 

例如:

rcp doc:/home/user/file1 file2      將工作站 d o c路徑/home/user 下的目錄 d i r 1,拷貝到當前工

作站的目錄下,目錄名仍爲 d i r 1

rcp -r doc:/home/user/dir1 .      將工作站doc 路徑/home/user 下的目錄 d i r 1,拷貝到當前工

作站的目錄下,目錄名仍爲 d i r 1

3. 本地工作站與遠程工作站之間的文件傳輸

必須擁有遠程工作站的帳號及密碼,纔可進行傳輸工作。

語法: ftp 主機名  ftp ip地址

例如:

ftp doc 與遠程工作站 doc 之間進行文件傳輸。

Name (doc:user-name): <輸入帳號>

Password (doc:user-password): <輸入密碼>

ftp> help 列出 ftp 文件傳輸時可使用的命令。

ftp> !ls  列出本地工作站當前目錄下的所有文件名。

ftp> !pwd 列出本地工作站當前所在的目錄位置。

ftp> ls  列出遠程工作站當前目錄下的所有文件名。

ftp> dir  列出遠程工作站當前目錄下的所有文件名。

ftp> dir . |more  分頁列出遠程工作站當前目錄下的所有文件名。

ftp> pwd  列出遠程工作站當前所在的目錄位置。

ftp> cd  dir1 更改遠程工作站的工作目錄位置至 dir1 之下。

ftp> get file1 將遠程工作站的文件 f i l e 1拷貝到本地工作站中。

ftp> put file2  將本地工作站的文件 f i l e 2拷貝到遠程工作站中。

ftp> mget *.c 將遠程工作站中擴展文件名爲 c 的所有文件拷貝到本地工作站中。

ftp> mput *.txt 將本地工作站中擴展文件名爲 txt 的所有文件拷貝到遠程工作站中。

ftp> prompt 切換交互式指令(使用 mput/mget 時不是每個文件皆詢問y e s / n o )

ftp> quit 結束 ftp 工作。

ftp> bye  結束 ftp 工作。

注意 PC與工作站間的文件傳輸也可透過在 PC端的 FTP指令進行文件傳輸,指令用

法與上述指令大致相同。

15、文件權限的設定

1. 改變文件或目錄的讀、寫、執行權限

語法:chmod [-R] mode name

n a m e :文件名或目錄名。

mode: 38位數字或r w x的組合。r- r e a d ()w - w r i t e ()x - e x e c u t e (執行)u - u s e r (當前用

)g - g r o u p(組) o - o t h e r(其他用戶) 

例如:

chmod  755  dir1 對於目錄d i r 1,設定成任何使用者皆有讀取及執行的權利,但只有所

有者可做修改。

chmod  700  file1 對於文件f i l e 1,設定只有所有者可以讀、寫和執行的權利。

chmod  u+x  file2 對於文件f i l e 2,增加當前用戶可以執行的權利。

chmod  g+x  file3 對於文件f i l e 3,增加工作組使用者可執行的權利。

chmod  o-r  file4 對於文件f i l e 4,刪除其他使用者可讀取的權利。

2.改變文件或目錄的所有權

語法:chown [-R] 用戶名 name

n a m e:文件名或目錄名。

例如 

chown user file1 將文件 file1 改爲用戶user 所有。

chown -R user dir1 將目錄 d i r 1及其子目錄下面的所有文件改爲用戶user 所有。

16、檢查自己所屬的工作組名稱

語法:g r o u p s

17  改變文件或目錄工作組所有權

語法:chgrp [-R] 工作組名 name

n a m e:文件名或目錄名

例如:

chgrp vlsi file1 將文件 file1 的工作組所有權改爲 vlsi 工作組所有。

chgrp -R image dir1 將目錄d i r 1及其子目錄下面的所有文件,改爲 image 工作組所有。

18 改變文件或目錄的最後修改時間

語法:touch name

n a m e:文件名或目錄名。

19、文件的鏈接

同一文件,可擁有一個以上的名稱,也就是把一個文件進行鏈接。

語法:ln 老文件名 新文件名

例如 

ln file1 file2  將文件 f i l e 2鏈接至文件 f i l e 1

語法:ln -s  老文件名 新文件名

例如 

ln -s file3 file4 將文件 file4 鏈接至文件f i l e 3

20、文件中字符串的查尋

語法:grep string file

例如 

grep abc file1      尋找文件f i l e 1中包含字符串 abc 所在行的文本內容。

查尋文件或命令的路徑

語法:whereis command 顯示命令的路徑。

語法:which command 顯示命令的路徑,及使用者所定義的別名。

語法:whatis command 顯示命令功能的摘要。

語法:find search-path -name filename -print      搜尋指定路徑下某文件的路徑 

例如 

find / -name file1 -print 自根目錄下尋找文件 file1 的路徑。

21、比較文件或目錄的內容

語法:d i ff [-r] name1 name2

name1 name2:可同時爲文件名或目錄名。

例如:

d i ff file1 file2 比較文件file1  file2 內各行的不同之處。

d i ff -r dir1 dir2 比較目錄 dir1  dir2 內各文件的不同之處。

22、文件打印輸出

用戶可用 .login 文件中的 setenv PRINTER來設定打印機名。

例如 

setenv PRINTER sp 設定自 sp 打印機打印資料。

一般文件的打印

語法:lpr [-P打印機名] 文件名

例如:

lpr file1  lpr -Psp file1       s p打印機打印文件 f i l e 1

語法:enscript [-P打印機名] 文件名

例如:

enscript file3  enscript -Psp file3       s p打印機打印文件 f i l e 3

23troff 文件的打印

語法:p t r o ff [-P打印機名] [-man][-ms] 文件名

例如:

ptroff -Psp -man /usr/man/man1/lpr1      troff 格式,自 sp 打印機打印lpr1 命令的使用說明。

打印機控制命令

1.檢查打印機狀態、打印作業順序號和用戶名

2章計shell及常用命令計計 15

下載

語法:lpq [-P打印機名]

例如:

lpq  lpq -Psp      檢查 sp 打印機的狀態。

2. 刪除打印機內的打印作業( 用戶僅可刪除自己的打印作業 )

語法:lprm [-P打印機名] 用戶名  作業編號

例如:

lprm userlprm -Psp user      刪除s p打印機中用戶user 的打印作業,此時用戶名必須爲u s e r

lprm -Psp 456      刪除 sp 打印機上編號爲 456 的打印作業。

24、進程控制

1.查看系統中的進程

語法:ps [-aux]

例如:

p sps -x 查看系統中,屬於自己的進程。

ps -au 查看系統中,所有用戶的進程。

ps -aux 查看系統中,包含系統內部的及所有用戶的進程。

2. 結束或終止進程

語法:kill [-9] PID

P I D:利用 ps 命令所查出的進程號。

例如:

kill 456kill -9 456      終止進程號爲 456 的進程。

3. 在後臺執行進程的方式

語法:命令 &

例如:

cc file1.c &      將編譯 file1.c 文件的工作置於後臺執行。

語法:按下 C o n t r o l + Z鍵,暫停正在執行的進程。鍵入b g命令,將暫停的進程置於後臺繼

續執行。

例如:

cc file2.c

^ Z

S t o p p e d

b g

4. 查看正在後臺中執行的進程

語法:j o b s

5. 結束或終止後臺中的進程

語法:kill  %n

n:利用j o b s命令查看出的後臺作業號

例如:

kill  % 終止在後臺中的第一個進程。

kill  %2 終止在後臺中的第二個進程。

25shell變量

1. 查看shell變量的設定值

語法:set  查看所有shell變量的設定值。

語法:echo  $變量名 顯示指定的shell變量的設定值。

2. 設定shell變量

語法:set var = value

例如:

set term=vt100      設定shell變量 t e r m VT100 型終端。

3. 刪除shell變量

語法:unset var

例如:

unset PRINTER      刪除shell變量 PRINTER 的設定值。

26、別名

1. 查看所定義的命令的別名

語法: a l i a s 查看自己目前定義的所有命令,及所對應的別名。

語法: alias name 查看指定的name 命令的別名。

例如:

alias dir 查看別名 dir 所定義的命令。

ls -atl

2. 定義命令的別名

語法: alias name‘command line’

例如:

alias dir ‘ls -l’ 將命令 ls - l 定義別名爲 d i r

3. 刪除所定義的別名

語法: unalias name

例如:

unalias dir 刪除別名 dir 的定義。

unalias *  刪除所有別名的設定。

27、歷史命令

1. 設定命令記錄表的長度

語法: set history = n

例如:

set history = 40      設定命令記錄表的長度爲 40 (可記錄執行過的前面 40 個命令)

2. 查看命令記錄表的內容

語法: h i s t o r y

3. 使用命令記錄表

語法: !!      重複執行前一個命令。

語法: ! n

n:命令記錄表的命令編號。

語法: ! s t r i n g 重複前面執行過的以 string 爲起始字符串的命令。

例如: ! c a t 重複前面執行過的以 cat 爲起始字符串的命令。

4. 顯示前一個命令的內容

語法: ! !p

5. 更改前一個命令的內容並執行

語法: ^oldstring ^newstring      將前一個命令中 oldstring 的部份改成 n e w s t r i n g並執

行。

例如:

find . -name file1.c -print

^ f i l e 1 . c ^ c o r e

find . -name core -print

28、文件的壓縮

1. 壓縮文件

語法:compress 文件名 壓縮文件

語法:compressdir 目錄名 壓縮目錄

2. 解壓縮文件

語法:uncompress 文件名 解壓縮文件

語法:uncompressdir 目錄名 解壓縮目錄

29、管道命令的使用

語法:命令1 | 命令2      將命令1的執行結果送到命令2,做爲命令2的輸入。

例如:

ls -Rl | more      以分頁方式列出當前目錄及其子目錄下所有文件的名稱。

cat file1 | more      以分頁方式列出文件 file1 的內容。

30、輸入/輸出控制

1. 標準輸入的控制

語法:命令 < 文件 將文件做爲命令的輸入。

例如:

mail -s “mail test” 電子郵件地址 < file1    將文件file 當做信件的內容,主

題名稱爲 mail test,送給收信人。

2. 標準輸出的控制

語法:命令 > 文件 將命令的執行結果送至指定的文件中。

例如:

ls -l > list      將執行 “ls -l” 命令的結果寫入文件list 中。

語法:命令>! 文件 將命令的執行結果送至指定的文件中,若文件已經存在,則覆蓋。

例如:

ls -lg >! list      將執行 “ls - lg” 命令的結果覆蓋寫入文件 list 中。

語法:命令 >& 文件 將命令執行時屏幕上所產生的任何信息寫入指定的文件中。

例如:

cc file1.c >& error      將編譯 file1.c 文件時所產生的任何信息寫入文件 error 中。

語法:命令>> 文件 將命令執行的結果附加到指定的文件中。

例如:

ls - lag >> list      將執行 “ls - lag” 命令的結果附加到文件 list 中。

語法:命令 >>& 文件 將命令執行時屏幕上所產生的任何信息附加到指定的文件中。

例如:

cc file2.c >>& error      將編譯 file2.c 文件時屏幕所產生的任何信息附加到文件error 中。

31、查看系統中的用戶

語法: who   f i n g e r

語法: w

語法: finger 用戶名  finger 用戶名@域名

改變用戶名

語法: su 用戶名

例如:

su user 進入用戶user 的帳號。

p a s s w r o d : <輸入用戶user 的密碼>

32、查看用戶名

語法: who am i 查看登錄時的用戶名。

語法: w h o a m i 查看當前的用戶名。若已執行過s u命令,則顯示出此用戶的用

戶名。

33、查看當前系統上所有工作站的用戶

語法: rusers

Ctrl+C>  結束

34、與某工作站上的用戶交談

語法: talk 用戶名@主機名或talk 用戶名@ I P地址

例如:

1) 可先利用 rusers 指令查看網絡上的用戶;

2) 假設自己的帳號是 ddd ,在工作站 aaa上使用,現在想要與 bbb 上的ccc 交談。

talk ccc@bbb

可按Ct r l + C結束。

35、檢查網絡是否連通

語法:ping 主機名或ping IP地址

36、電子郵件的使用簡介

1. 將文件當做電子郵件的內容送出

語法:mail -s “主題電子郵件地址 < 文件

例如:

mail -s “hello” 電子郵件地址 < file.c

2. 傳送電子郵件給本系統用戶

語法:mail 用戶名

3. 傳送電子郵件至外地用戶

語法: mail 電子郵件地址

例如:

mail [email protected]

Subject : mail test

:

按下 Ctrl+D 鍵或 . 鍵結束正文。

連按兩次C t r l + C鍵則中斷工作,不送此信件。

Cc( Carbon copy) : 複製一份正文,給其他的收信人。

3. 檢查所傳送的電子郵件是否送出,或滯留在郵件服務器中

語法:/usr/magedu/sendmail  -bp

若屏幕顯示爲 “Mail queue is empty” 的信息,表示 mail 已送出。

若爲其他錯誤信息,表示電子郵件因故尚未送出


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章