linux shell及經常使用命令介紹
什麼是shell
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是由Steven Bourne 編寫的,是UNIX 的缺省shell。Bourne shell的shell編程能
力很強。但它不能處理命令的用戶交互特徵。bash 是Bourne shell的加強版。
Cshell是由加利福尼亞大學伯克利分校的Bill Joy編寫的。它能提供Bourne shell所不能處理
的用戶交互特徵,如命令補全、命令別名、歷史命令替換等。不少人認爲, C shell的編程能力
不如Bourne shell,但它的語法和C語言相似,因此C程序員將發現C shell很順手。tcsh 是Cshell
的加強版本和Cshell徹底兼容。
K o r nshell是由Dave Korn 編寫的。Korn shell融合了C shell和Bourne shell的優勢,並和
Bourne shell徹底兼容。 Korn shell的效率很高,其命令交互界面和編程交互界面都很不錯。
Public Domain Korn shell( p d k s h )是Korn shell的加強版。
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的經常使用命令
一、更改賬號密碼
語法:passwd
Old password: <輸入舊密碼>
New password: <輸入新密碼〉
Retype new password: <再輸入一次密碼>
二、聯機幫助
語法: man 命令
例如:
man ls
三、遠程登陸
語法:rlogin 主機名 [-l 用戶名]
例如:
rlogin aa 遠程登陸到工做站 aa 中。
rlogin aa -l user 使用 user 賬號登陸到工做站 aa 中。
語法:telnet 主機名 或 telnet IP地址
例如:
telnet aa
telnet 130.129.21.250
三、文件或目錄處理
列出文件或目錄下的文件名。
語法: ls [-atFlgR] [name]
ls 列出目前目錄下的文件名。
ls -a 列出包括以 .開始的隱藏文件的全部文件名。
ls -t 依照文件最後修改時間的順序列出文件名。
ls -F 列出當前目錄下的文件名及其類型。以/ 結尾表示爲目錄名,以* 結尾表示爲
可執行文件,以@ 結尾表示爲符號鏈接。
ls -l 列出目錄下全部文件的權限、全部者、文件大小、修改時間及名稱。
ls -lg 同上,並顯示出文件的全部者工做組名。
ls -R 顯示出目錄下以及其全部子目錄的文件名。
四、改變工做目錄
語法:cd [name]
name:目錄名、路徑或目錄縮寫。
例如:
cd 改變目錄位置至用戶登陸時的工做目錄。
cd dir 改變目錄位置至d i r目錄下。
cd user 改變目錄位置至用戶的工做目錄。
cd .. 改變目錄位置至當前目錄的父目錄。
cd ../user 改變目錄位置至相對路徑 user 的目錄下。
cd /../.. 改變目錄位置至絕對路徑的目錄位置下。
cd 改變目錄位置至用戶登陸時的工做目錄。
五、複製文件
語法: 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 複製整個目錄。
六、移動或更改文件、目錄名稱
語法: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。
七、創建新目錄
語法: mkdir 目錄名
mkdir dira 創建一新目錄 d i ra。
八、刪除目錄
語法: rmdir 目錄名 或 rm 目錄名
例如:
rmdir dir1 刪除目錄 d i r 1,但 dir1 下必須沒有文件存在,不然沒法刪除。
rm -r dir1 刪除目錄 d i r 1及其子目錄下全部文件。
九、刪除文件
語法: rm 文件名
例如:
rm file1 刪除文件名爲 file1 的文件。
rm file? 刪除文件名中有五個字符且前四個字符爲file 的全部文件。
rm f* 刪除文件名中以 f 爲字首的全部文件。
十、列出當前所在的目錄位置
語法: p w d
十一、查看文件內容
語法: cat 文件名
例如:
cat file1 以連續顯示方式,查看文件名 file1 的內容。
十二、分頁查看文件內容
語法: more 文件名 或 cat 文件名 | more
例如:
more file1 以分頁方式查看文件名 file1 的內容。
cat file1 | more 以分頁方式查看文件名 file1 的內容。
1三、查看目錄所佔磁盤容量
語法: du [-s] 目錄
例如:
du dir1 顯示目錄 dir1 的總容量及其子目錄的容量(以KB 爲單位)。
du -s dir1 顯示目錄 dir1 的總容量。
1四、文件傳輸
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指令進行文件傳輸,指令用
法與上述指令大體相同。
1五、文件權限的設定
1. 改變文件或目錄的讀、寫、執行權限
語法:chmod [-R] mode name
n a m e :文件名或目錄名。
mode: 3個8位數字或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 全部。
1六、檢查本身所屬的工做組名稱
語法:g r o u p s
1七、 改變文件或目錄工做組全部權
語法:chgrp [-R] 工做組名 name
n a m e:文件名或目錄名
例如:
chgrp vlsi file1 將文件 file1 的工做組全部權改成 vlsi 工做組全部。
chgrp -R image dir1 將目錄d i r 1及其子目錄下面的全部文件,改成 image 工做組全部。
1八、 改變文件或目錄的最後修改時間
語法:touch name
n a m e:文件名或目錄名。
1九、文件的連接
同一文件,可擁有一個以上的名稱,也就是把一個文件進行連接。
語法: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 的路徑。
2一、比較文件或目錄的內容
語法:d i ff [-r] name1 name2
name1 name2:可同時爲文件名或目錄名。
例如:
d i ff file1 file2 比較文件file1 與 file2 內各行的不一樣之處。
d i ff -r dir1 dir2 比較目錄 dir1 與 dir2 內各文件的不一樣之處。
2二、文件打印輸出
用戶可用 .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。
2三、troff 文件的打印
語法: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 user或lprm -Psp user 刪除s p打印機中用戶user 的打印做業,此時用戶名必須爲u s e r。
lprm -Psp 456 刪除 sp 打印機上編號爲 456 的打印做業。
2四、進程控制
1.查看系統中的進程
語法:ps [-aux]
例如:
p s或ps -x 查看系統中,屬於本身的進程。
ps -au 查看系統中,全部用戶的進程。
ps -aux 查看系統中,包含系統內部的及全部用戶的進程。
2. 結束或終止進程
語法:kill [-9] PID
P I D:利用 ps 命令所查出的進程號。
例如:
kill 456或kill -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 終止在後臺中的第二個進程。
2五、shell變量
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 的設定值。
2六、別名
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 * 刪除全部別名的設定。
2七、歷史命令
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
2八、文件的壓縮
1. 壓縮文件
語法:compress 文件名 壓縮文件
語法:compressdir 目錄名 壓縮目錄
2. 解壓縮文件
語法:uncompress 文件名 解壓縮文件
語法:uncompressdir 目錄名 解壓縮目錄
2九、管道命令的使用
語法:命令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 中。
3一、查看系統中的用戶
語法: who 或 f i n g e r
語法: w
語法: finger 用戶名 或 finger 用戶名@域名
改變用戶名
語法: su 用戶名
例如:
su user 進入用戶user 的賬號。
p a s s w r o d : <輸入用戶user 的密碼>
3二、查看用戶名
語法: who am i 查看登陸時的用戶名。
語法: w h o a m i 查看當前的用戶名。若已執行過s u命令,則顯示出此用戶的用
戶名。
3三、查看當前系統上全部工做站的用戶
語法: rusers
按Ctrl+C> 結束
3四、與某工做站上的用戶交談
語法: talk 用戶名@主機名或talk 用戶名@ I P地址
例如:
1) 可先利用 rusers 指令查看網絡上的用戶;
2) 假設本身的賬號是 ddd ,在工做站 aaa上使用,如今想要與 bbb 上的ccc 交談。
talk ccc@bbb
可按Ct r l + C結束。
3五、檢查網絡是否連通
語法:ping 主機名或ping IP地址
3六、電子郵件的使用簡介
1. 將文件當作電子郵件的內容送出
語法:mail -s 「主題」電子郵件地址 < 文件
例如:
mail -s 「hello」 電子郵件地址 < file.c
2. 傳送電子郵件給本系統用戶
語法:mail 用戶名
3. 傳送電子郵件至外地用戶
語法: mail 電子郵件地址
例如:
mail xxx@163.com
Subject : mail test
:
按下 Ctrl+D 鍵或 . 鍵結束正文。
連按兩次C t r l + C鍵則中斷工做,不送此信件。
Cc( Carbon copy) : 複製一份正文,給其餘的收信人。
3. 檢查所傳送的電子郵件是否送出,或滯留在郵件服務器中
語法:/usr/lib/sendmail -bp
若屏幕顯示爲 「Mail queue is empty」 的信息,表示 mail 已送出。
若爲其餘錯誤信息,表示電子郵件因故還沒有送出。linux