常用的Linux指令

Author: humenad&ithost

寫這篇的用意其實很簡單  @@

就是幫自己把常用的Linux整理起來方便自己使用而已  呵

當然各位看官如果覺得還不賴也煩請不吝賜教一起改進吧  ^^

介紹指令 :

  • cat
  • cd
  • chmod
  • chown
  • cp
  • cut


指令名稱:cat

使用權限:所有使用者
使用方式:cat [-AbeEnstTuv] [--help] [--version] fileName
說明:把檔案串連接後傳到基本輸出(螢幕或加 > fileName 到另一個檔案)

參數:

-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

指令名稱 : cd

使用權限 : 所有使用者
使用方式 : cd [dirName]
說明 : 變換工作目錄至 dirName。 其中 dirName 表示法可爲絕對路徑或相對路徑。若目錄名稱省略,則變換至使用者的 home directory (也就是剛 login 時所在的目錄)。
另外,"~" 也表示爲 home directory 的意思,"." 則是表示目前所在的目錄,".." 則表示目前目錄位置的上一層目錄。
範例 : 跳到 /usr/bin/ :
cd /usr/bin
跳到自己的 home directory :
cd ~
跳到目前目錄的上上兩層 :
cd ../..

指令名稱 : chmod

使用權限 : 所有使用者
使用方式 : 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的許可權

指令名稱 : chown

使用權限 : root

使用方式 : chmod [-cfhvR] [--help] [--version] user[:group] file…

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

user : 新的檔案擁有者的使用者 IDgroup : 新的檔案擁有者的使用者群體(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

指令名稱 : 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 路徑名稱符合 p 的檔案,ipath 會忽略大小寫
-path p 路徑名稱符合 p 的檔案,ipath 會忽略大小寫
-name name 檔案名稱符合 name 的檔案。iname 會忽略大小寫
-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)來的快速。 

指令名稱 : 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 同檔名的檔案刪除
-i 在刪除與 dist 同檔名的檔案時先進行詢問
-d 允許系統管理者硬鏈結自己的目錄
-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 則可以指定開始的位置建立資料庫
-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 ,不過會以一頁一頁的顯示方便使用者逐頁閱讀,而最基本的指令就是按空白鍵(space)就往下一頁顯示,按 b 鍵就會往回(back)一頁顯示,而且還有搜尋字串的功能(與 vi 相似),使用中的說明文件,請按 h 。
參數:-num 一次顯示的行數
-d 提示使用者,在畫面下方顯示 [Press space to continue, q to quit.] ,如果使用者按錯鍵,則會顯示 [Press h for instructions.] 而不是 嗶 聲
-l 取消遇見特殊字元 ^L(送紙字元)時會暫停的功能
-f 計算行數時,以實際上的行數,而非自動換行過後的行數(有些單行字數太長的會被擴展爲兩行或兩行以上)
-p 不以卷動的方式顯示每一頁,而是先清除螢幕後再顯示內容
-c 跟 -p 相似,不同的是先顯示內容再清除其他舊資料
-s 當遇到有連續兩行以上的空白行,就代換爲一行的空白行
-u 不顯示下引號 (根據環境變數 TERM 指定的 terminal 而有所不同)
+/ 在每個檔案顯示前搜尋該字串(pattern),然後從該字串之後開始顯示
+num 從第 num 行開始顯示
fileNames 欲顯示內容的檔案,可爲複數個數
範例:
more -s testfile 逐頁顯示 testfile 之檔案內容,如有連續兩行以上空白行則以一行空白行顯示。
more +20 testfile 從第 20 行開始顯示 testfile 之檔案內容。

指令名稱:mv

使用權限:所有使用者
使用方式:
mv [options] source dest
mv [options] source… directory
說明:將一個檔案移至另一檔案,或將數個檔案移至另一目錄。
參數:-i 若目的地已有同名檔案,則先詢問是否覆蓋舊檔。
範例:
將檔案 aaa 更名爲 bbb :
mv aaa bbb
將所有的C語言程式移至 Finished 子目錄中 :
mv -i *.c

指令名稱:rm

使用權限:所有使用者
使用方式:rm [options] name…
說明:刪除檔案及目錄。
把計
-i 刪除前逐一詢問確認。
-f 即使原檔案屬性設爲唯讀,亦直接刪除,無需逐一確認。
-r 將目錄及以下之檔案亦逐一刪除。
範例:
刪除所有C語言程式檔;刪除前逐一詢問確認 :
rm -i *.c
將 Finished 子目錄及子目錄中所有檔案刪除 :
rm -r Finished

指令名稱:rmdir

使用權限:於目前目錄有適當許可權的所有使用者
使用方式: rmdir [-p] dirName
說明: 刪除空的目錄。
參數: -p 是當子目錄被刪除後使它也成爲空目錄的話,則順便一併刪除。
範例:
將工作目錄下,名爲 AAA 的子目錄刪除 :
rmdir AAA
在工作目錄下的 BBB 目錄中,刪除名爲 Test 的子目錄。若 Test 刪除後,BBB 目錄成爲空目錄,則 BBB 亦予刪除。
rmdir -p BBB/Test

指令名稱:split

使用權限:所有使用者
使用方式:split [OPTION] [INPUT [PREFIX]]
說明:
將一個檔案分割成數個。而從 INPUT 分割輸出成固定大小的檔案,其檔名依序爲 PREFIXaa, PREFIXab…;PREFIX 預設值爲 `x。若沒有 INPUT 檔或爲 `-,則從標準輸入讀進資料。
匡兜
-b, –bytes=SIZE
SIZE 值爲每一輸出檔案的大小,單位爲 byte。
-C, –line-bytes=SIZE
每一輸出檔中,單行的最大 byte 數。
-l, –lines=NUMBER
NUMBER 值爲每一輸出檔的列數大小。
-NUMBER
與 -l NUMBER 相同。
–verbose
于每個輸出檔被開啓前,列印出偵錯資訊到標準錯誤輸出。
–help
顯示輔助資訊然後離開。
–version
列出版本資訊然後離開。
SIZE 可加入單位: b 代表 512, k 代表 1K, m 代表 1 Meg。
範例:
PostgresSQL 大型資料庫備份與回存:
因 Postgres 允許表格大過你系統檔案的最大容量,所以要將表格 dump 到單一的檔案可能會有問題,使用 split進行檔案分割。
% pg_dump dbname | split -b 1m – filename.dump.
重新載入
% createdb dbname
% cat filename.dump.* | pgsql dbname

指令名稱:touch

使用權限:所有使用者
使用方式:
touch [-acfm]
[-r reference-file] [--file=reference-file]
[-t MMDDhhmm[[CC]YY][.ss]]
[-d time] [--date=time] [--time={atime,access,use,mtime,modify}]
[--no-create] [--help] [--version]
file1 [file2 ...]
說明:
touch 指令改變檔案的時間記錄。 ls -l 可以顯示檔案的時間記錄。
參數:
a 改變檔案的讀取時間記錄。
m 改變檔案的修改時間記錄。
c 假如目的檔案不存在,不會建立新的檔案。與 –no-create 的效果一樣。
f 不使用,是爲了與其他 unix 系統的相容性而保留。
r 使用參考檔的時間記錄,與 –file 的效果一樣。
d 設定時間與日期,可以使用各種不同的格式。
t 設定檔案的時間記錄,格式與 date 指令相同。
–no-create 不會建立新檔案。
–help 列出指令格式。
–version 列出版本訊息。
範例:
最簡單的使用方式,將檔案的時候記錄改爲現在的時間。若檔案不存在,系統會建立一個新的檔案。
touch file
touch file1 file2
將 file 的時間記錄改爲 5 月 6 日 18 點 3 分,西元兩千年。時間的格式可以參考 date 指令,至少需輸入 MMDDHHmm ,就是月日時與分。
touch -c -t 05061803 file
touch -c -t 050618032000 file
將 file 的時間記錄改變成與 referencefile 一樣。
touch -r referencefile file
將 file 的時間記錄改成 5 月 6 日 18 點 3 分,西元兩千年。時間可以使用 am, pm 或是 24 小時的格式,日期可以使用其他格式如 6 May 2000 。
touch -d "6:03pm" file
touch -d "05/06/2000" file
touch -d "6:03pm 05/06/2000" file

Tags:

Leave a Reply