Welcome! 登入 註冊
美寶首頁 美寶百科 美寶論壇 美寶落格 美寶地圖

Advanced

Linux 常用指令:cat, cd, chmod, chown, cp, cut, date, find, less, ln, locate, ls & more

Posted by HP 
文章來源:Linux常用指令 (黑族論壇 Linux 基礎指令討論版, 2009/01/21)


1. cat:輸出檔案內容至螢幕或檔案



語法:cat filename [-n] [-b] [-u] [-s] [-v]
說明:將名為 filename 的檔案連接(concatenate)或處理後傳到螢幕或另一個檔案

參數﹕
-n 或 --number﹕由 1 開始對所有輸出的行數編號
-b 或 --number-nonblank﹕和 -n 相似,只不過對於空白行不編號
-s 或 --squeeze-blank ﹕遇到有連續兩行以上的空白行,就代換為一行的空白行
-v 或 --show-nonprinting

範例﹕
cat -n textfile1 textfile2 把 textfile1 的檔案內容加上行號後輸入 textfile2 這個檔案裡
cat -b textfile1 textfile2 textfile3 把 textfile1 和 textfile2 的檔案內容加上行號(空白行不加)之後將內容附加到 textfile3


2. cd:更換所在目錄/Change Directory



語法:cd [dirName]

說明 : 變換工作目錄至 dirName。其中 dirName 表示法可為絕對路徑或相對路徑。若目錄名稱省略,則變換至使用者的 home directory (也就是剛 login 時所在的目錄)。

另外,~ 也表示為 home directory 的意思,. 則是表示目前所在的目錄,.. 則表示目前目錄位置的上一層目錄。

範例 : 跳到 /usr/bin/ :
cd /usr/bin

跳到自己的 home directory :
cd ~ (注意:cd 和 ~ 中間有「空白」)

跳到目前目錄的上上兩層 :
cd ../..


3. chmod:設定檔案及目錄讀取屬性及狀態/Change Mode of File or Direcotry



語法 : chmod [-cfvR] [--help] [--version] mode file...

說明 : Linux/Unix 的檔案存取權限分為三級 : 檔案擁有者、群組、其他。利用 chmod 可以藉以控製檔案如何被他人所存取。

參數:
mode : 權限設定字串,格式如下 : [ugoa...][+-=][rwxX]...][,...],其中u 表示該檔案的擁有者,g 表示與該檔案的擁有者屬於同一個群體(group)者,o 表示其他以外的人,a 表示這三者皆是。

+ 表示增加權限、- 表示取消權限、= 表示唯一設定權限。
r 表示可讀取,w 表示可寫入,x 表示可執行,X 表示只有當該檔案是個子目錄或者該檔案已經被設定過為可執行。
-c : 若該檔案權限確實已經更改,才顯示其更改動作
-f : 若該檔案權限無法被更改也不要顯示錯誤訊息
-v : 顯示權限變更的詳細資料
-R : 對目前目錄下的所有檔案與子目錄進行相同的權限變更(即以遞回的方式逐個變更)
--help : 顯示輔助說明
--version : 顯示版本

範例 :將檔案 file1.txt 設為所有人皆可讀取 :
chmod ugo+r file1.txt

將檔案 file1.txt 設為所有人皆可讀取 :
chmod a+r file1.txt

將檔案 file1.txt 與 file2.txt 設為該檔案擁有者,與其所屬同一個群體者可寫入,但其他以外的人則不可寫入 :
chmod ug+w,o-w file1.txt file2.txt

將 ex1.py 設定為只有該檔案擁有者可以執行 :
chmod u+x ex1.py

將目前目錄下的所有檔案與子目錄皆設為任何人可讀取 :
chmod -R a+r *

此外 chmod 也可以用數字來表示權限
例如: chmod 777 file

語法為﹕chmod abc file

其中a,b,c各為一個數字,分別表示User、Group、及Other的權限。

r=4,w=2,x=1
若要rwx屬性則4+2+1=7;
若要rw-屬性則4+2=6;
若要r-x屬性則4+1=7。

範例﹕
chmod a=rwx file


chmod 777 file

效果相同
chmod ug=rwx,o=x file


chmod 771 file

效果相同


若用chmod 4755 filename可使此程式具有root的權限

進階用法:只對「檔案」或只對「目錄」chmod (recursively)
find -type d -print0 |xargs -0 chmod 755
find -type f -print0 |xargs -0 chmod 644

chgrp 或 chown 的用法亦同。


4. chown: 設定檔案或目錄之「擁有者」 / Change Owner



語法 : chown [-cfhvR] [--help] [--version] user[:group] file...

說明 :
Linux/Unix 是多人多工作業系統,所有的檔案皆有擁有者。利用 chown 可以將檔案的擁有者加以改變。一般來說,這個指令只有是由系統管理者(root)所使用,一般使用者沒有權限可以改變別人的檔案擁有者,也沒有權限可以自己的檔案擁有者改設為別人。只有系統管理者(root)才有這樣的權限。

參數 :
user : 新的檔案擁有者的使用者 ID
group : 新的檔案擁有者的使用者群體(group)

-c : 若該檔案擁有者確實已經更改,才顯示其更改動作-f : 若該檔案擁有者無法被更改也不要顯示錯誤訊息
-h : 只對於連結 (link) 進行變更,而非該 link 真正指向的檔案
-v : 顯示擁有者變更的詳細資料
-R : 對目前目錄下的所有檔案與子目錄進行相同的擁有者變更(即以遞回的方式逐個變更)
--help : 顯示輔助說明
--version : 顯示版本

範例 :
將檔案 file1.txt 的擁有者設為 users 群體的使用者 jessie :
chown jessie:users file1.txt

將目前目錄下的所有檔案與子目錄的擁有者皆設為 users 群體的使用者 lamport :
chmod -R lamport:users *


名稱﹕cp
使用權限﹕所有使用者

使用方式﹕

cp [options] source dest
cp [options] source... directory

說明﹕將一個檔案拷貝至另一檔案,或將數個檔案拷貝至另一目錄。

參數 :
-a : 盡可能將檔案狀態、權限等資料都照原狀予以複製。
-r : 若 source 中含有目錄名,則將目錄下之檔案亦皆依序拷貝至目的地。
-f : 若目的地已經有相同檔名的檔案存在,則在複製前先予以刪除再行複製。

範例 :
將檔案 aaa 複製(已存在),並命名為 bbb :
cp aaa bbb

將所有的C語言程式拷貝至 Finished 子目錄中 :
cp *.c Finished



名稱﹕cut

使用權限﹕所有使用者

用法﹕cut -cnum1-num2 filename

說明﹕顯示每行從開頭算起 num1 到 num2 的文字。

範例﹕

shell cat example
test2
this is test1
shell cut -c0-6 example ## print 開頭算起前 6 個字元
test2
this i




5. date:設定系統時間



語法:date MMDDhhmmYYYY

說明:顯示及修改系統時間

參數:
MM:月份
DD:日期
hh:小時
mm:分鐘
YYYY:西元年

範例:
顯示現在時間:
# date
Thu Jul 28 15:00:00 CST 2012

修改系統時間
# date 072816002012
Thu Jul 28 16:00:00 CST 2011

另外,若要顯示或設定 BIOS 的硬體系統時間,則是使用「hwclock [-rw]」。

顯示BIOS系統時間:#hwclock -r
將當下的軟體時間寫入BIOS:#hwclock -w




名稱 : find
用法 : find
使用說明 :

將檔案系統內符合 expression 的檔案列出來。你可以指要檔案的名稱、類別、時間、大小、權限等不同資訊的組合,只有完全相符的才會被列出來。

find 根據下列規則判斷 path 和 expression,在命令列上第一個 - ( ) , ! 之前的部份為 path,之後的是 expression。如果 path 是空字串則使用目前路徑,如果 expression 是空字串則使用 -print 為預設 expression。

expression 中可使用的選項有二三十個之多,在此只介紹最常用的部份。

-mount, -xdev : 只檢查和指定目錄在同一個檔案系統下的檔案,避免列出其它檔案系統中的檔案
-amin n : 在過去 n 分鐘內被讀取過
-anewer file : 比檔案 file 更晚被讀取過的檔案
-atime n : 在過去 n 天過讀取過的檔案
-cmin n : 在過去 n 分鐘內被修改過
-cnewer file :比檔案 file 更新的檔案
-ctime n : 在過去 n 天過修改過的檔案
-empty : 空的檔案-gid n or -group name : gid 是 n 或是 group 名稱是 name
-ipath p, -path p : 路徑名稱符合 p 的檔案,ipath 會忽略大小寫
-name name, -iname name : 檔案名稱符合 name 的檔案。iname 會忽略大小寫
-size n : 檔案大小 是 n 單位,b 代表 512 位元組的區塊,c 表示字元數,k 表示 kilo bytes,w 是二個位元組。-type c : 檔案類型是 c 的檔案。
d: 目錄
c: 字型裝置檔案
b: 區塊裝置檔案
p: 具名貯列
f: 一般檔案
l: 符號連結
s: socket
-pid n : process id 是 n 的檔案

你可以使用 ( ) 將運算式分隔,並使用下列運算。
exp1 -and exp2
! expr
-not expr
exp1 -or exp2
exp1, exp2
範例:
將目前目錄及其子目錄下所有延伸檔名是 c 的檔案列出來。
# find . -name *.c


將目前目錄其其下子目錄中所有一般檔案列出
# find . -ftype f


將目前目錄及其子目錄下所有最近 20 分鐘內更新過的檔案列出
# find . -ctime -20



名稱﹕less

使用權限﹕所有使用者

使用方式﹕

less [Option] filename

說明﹕
less 的作用與 more 十分相似,都可以用來瀏覽文字檔案的內容,不同的是 less 允釣洏峈怍髡^卷動
以瀏覽已經看過的部份,同時因為 less 並未在一開始就讀入整個檔案,因此在遇上大型檔案的開啟時,會比一般的文書編輯器(如 vi)來的快速。


範例﹕

6. ln:建立實體連結與符號連結



指令名稱 : ln
使用權限 : 所有使用者

使用方式 : ln [options] source dist,其中 option 的格式為 :

[-bdfinsvF] [-S backup-suffix] [-V {numbered,existing,simple}]
[--help] [--version] [--]
說明 : Linux/Unix 檔案系統中,有所謂的連結(link),我們可以將其視為檔案的別名,而連結又可分為兩種 : 硬連結(hard link)與軟連結(symbolic link),硬連結的意思是一個檔案可以有多個名稱,而軟連結的方式則是產生一個特殊的檔案,該檔案的內容是指向另一個檔案的位置。硬連結是存在同一個檔案系統中,而軟連結卻可以跨越不同的檔案系統。
ln source dist 是產生一個連結(dist)到 source,至於使用硬連結或軟鏈結則由參數決定。

不論是硬連結或軟鏈結都不會將原本的檔案複製一份,只會佔用非常少量的磁碟空間。

參數﹕
-f : 鏈結時先將與 dist 同檔名的檔案刪除
-d : 允釣t統管理者硬鏈結自己的目錄
-i : 在刪除與 dist 同檔名的檔案時先進行詢問
-n : 在進行軟連結時,將 dist 視為一般的檔案
-s : 進行軟鏈結(symbolic link)
-v : 在連結之前顯示其檔名
-b : 將在鏈結時會被覆寫或刪除的檔案進行備份
-S SUFFIX : 將備份的檔案都加上 SUFFIX 的字尾
-V METHOD : 指定備份的方式
--help : 顯示輔助說明
--version : 顯示版本

範例 :
將檔案 yy 產生一個 symbolic link : zz
ln -s yy zz

將檔案 yy 產生一個 hard link : zz
ln yy xx



名稱 : locate
使用權限﹕所有使用者

語法 : locate [-q] [-d ] [--database=]
locate [-r ] [--regexp=]
locate [-qv] [-o ] [--output=]
locate [-e ] [-f ] [-l ] [-c]
[-U ] [-u]
locate [-Vh] [--version] [--help]

說明 :
locate 讓使用者可以很快速的搜尋檔案系統內是否有指定的檔案。其方法是先建立一個包括系統內所有檔案名稱及路徑的資料庫,之後當尋找時就只需查詢這個資料庫,而不必實際深入檔案系統之中了。

在一般的 distribution 之中,資料庫的建立都被放在 contab 中自動執行。一般使用者在使用時只要用

# locate your_file_name

的型式就可以了。 參數﹕
-u
-U

建立資料庫,-u 會由根目錄開始,-U 則可以指定開始的位置。

-e


排除在尋找的範圍之外。

-l
如果 是 1.則啟動安全模式。在安全模式下,使用者不會看到權限無法看到的檔案。這會始速度減慢,因為 locate 必須至實際的檔案系統中取得檔案的權限資料。

-f
將特定的檔案系統排除在外,例如我們沒有到理要把 proc 檔案系統中的檔案放在資料庫中。

-q
安靜模式,不會顯示任何錯誤訊息。

-n
至多顯示 個輸出。

-r
使用正規運算式 做尋找的條件。

-o
指定資料庫存的名稱。

-d

指定資料庫的路徑

-h
顯示輔助訊息

-v
顯示更多的訊息

-V
顯示程式的版本訊息 範例﹕

locate chdrv : 尋找所有叫 chdrv 的檔案
locate -n 100 a.out : 尋找所有叫 a.out 的檔案,但最多只顯示 100 個
locate -u : 建立資料庫


名稱 : ls
使用權限 : 所有使用者

使用方式 : ls [-alrtAFR] [name...]

說明 : 顯示指定工作目錄下之內容(列出目前工作目錄所含之檔案及子目錄)。


-a 顯示所有檔案及目錄 (ls內定將檔案名或目錄名稱開頭為.的視為隱藏檔,不會列出)
-l 除檔案名稱外,亦將檔案型態、權限、擁有者、檔案大小等資訊詳細列出
-r 將檔案以相反次序顯示(原定依英文字母次序)
-t 將檔案依建立時間之先後次序列出
-A 同 -a ,但不列出 . (目前目錄) 及 .. (父目錄)
-F 在列出的檔案名稱後加一符號;例如可執行檔則加 *, 目錄則加 /
-R 若目錄下有檔案,則以下之檔案亦皆依序列出

範例﹕
列出目前工作目錄下所有名稱是 s 開頭的檔案,愈新的排愈後面 :
ls -ltr s*

將 /bin 目錄以下所有目錄及檔案詳細資料列出 :
ls -lR /bin

列出目前工作目錄下所有檔案及目錄;目錄於名稱後加 /, 可執行檔於名稱後加 * :
ls -AF

名稱﹕more
使用權限﹕所有使用者

語法 : more [-dlfpcsu] [-num] [+/pattern] [+linenum] [fileNames..]

說明 :
類似 cat ,不過會以一頁一頁的顯示方便使用者逐頁嬝炕A而最基本的指令就是按空白鍵(space)就往下一頁顯示,按 b 鍵就會往回(back)一頁顯示,而且還有搜尋字串的弁遄]與 vi 相似),使用中的說明文件,請按 h 。

參數 :
-num 一次顯示的行數
-d : 提示使用者,在畫面下方顯示 [Press space to continue, q to quit.] ,如果使用者按錯鍵,則會顯示 [Press h for instructions.] 而不是 嗶 聲
-l : 取消遇見特殊字元 ^L(送紙字元)時會暫停的弁



Edited 8 time(s). Last edit at 07/03/2015 09:30PM by mepoadm.
(編輯記錄)