Linux 常用命令 學習筆記

衣舞晨風發表於2017-02-10

1、建立目錄:

//建立目錄filetest
mkdir filetest

2、建立子目錄:

//建立子目錄filetestchild
mkdir -p filetest/filetestchild

3、切換工作目錄:

//切換到filetest 目錄
cd  filetest 

4、切換到使用者主目錄:

cd

5、列出某資料夾下面所有檔案包括子目錄得的檔案:

ls -la -r

6、建立空檔案:

//建立空檔案voidfile 可以先通過cd切換目錄 再建立檔案
touch voidfile

7、將字串寫入 檔案:

//將'aaa'寫入檔案voidfile
echo 'aaa' > voidfile

8、檢視檔案內容:

//讀取檔案voidfile中內容
cat voidfile

9、整個資料夾的檔案複製到另一個資料夾:

// A/B/目錄下所有的檔案複製到A1/B1/目錄下
cp  -ri  A/B/*  A1/B1/

10、檔案重新命名:

//將檔案 aaa 更名為 bbb
mv aaa bbb

11、刪除檔案:

rm 檔名

12、在某目錄下查詢名包含“fi”的檔案:

find filetest/filetestchild -name '*fi*'
//語法
find [PATH] [option] [action]

引數:

  1. 與時間有關的引數:
    -atime n :n 為數字,意義為在 n 天之前的『一天之內』被 access 過的檔案;
    -ctime n :n 為數字,意義為在 n 天之前的『一天之內』被 change 過狀態的檔案;
    -mtime n :n 為數字,意義為在 n 天之前的『一天之內』被 modification 過的檔案;
    -newer file :file 為一個存在的檔案,意思是說,只要檔案比 file 還要新,就會被列出來~
  2. 與使用者或群組名稱有關的引數:
    -uid n :n 為數字,這個數字是使用者的賬號 ID,亦即 UID ,這個 UID 是記錄在/etc/passwd 裡面與賬號名稱對應的數字。
    -gid n :n 為數字,這個數字是群組名稱的 ID,亦即 GID,這個 GID 記錄在/etc/group
    -user name :name 為使用者賬號名稱
    -group name:name 為群組名稱
    -nouser :尋找檔案的擁有者不存在 /etc/passwd 的人!
    -nogroup :尋找檔案的擁有群組不存在於 /etc/group 的檔案!
    當您自行安裝軟體時,很可能該軟體的屬性當中並沒有檔案擁有者,
    這是可能的!在這個時候,就可以使用 -nouser 與 -nogroup 搜尋。
  3. 與檔案許可權及名稱有關的引數:
    -name filename:搜尋檔名稱為 filename 的檔案;
    -size [+-]SIZE:搜尋比 SIZE 還要大(+)或小(-)的檔案。這個 SIZE 的規格有:
    c: 代表 byte, k: 代表 1024bytes。所以,要找比 50KB還要大的檔案,就是『 -size +50k 』
    -type TYPE :搜尋檔案的型別為 TYPE 的,型別主要有:一般正規檔案 (f),裝置檔案 (b, c), 目錄 (d), 連結檔 (l), socket (s),及 FIFO (p) 等屬性。
    -perm mode :搜尋檔案屬性『剛好等於』 mode 的檔案,這個 mode 為類似 chmod的屬性值,舉例來說, -rwsr-xr-x 的屬性為 4755 !
    -perm -mode :搜尋檔案屬性『必須要全部囊括 mode 的屬性』的檔案,舉例來說,我們要搜尋 -rwxr–r– ,亦即 0744 的檔案,使用 -perm -0744,當一個檔案的屬性為 -rwsr-xr-x ,亦即 4755 時,也會被列出來,因為 -rwsr-xr-x 的屬性已經囊括了 -rwxr–r– 的屬性了。
    -perm +mode :搜尋檔案屬性『包含任一 mode 的屬性』的檔案,舉例來說,我們搜尋-rwxr-xr-x ,亦即 -perm +755 時,但一個檔案屬性為 -rw——-也會被列出來,因為他有 -rw…. 的屬性存在!
  4. 額外可進行的動作:
    -exec command :command 為其它指令,-exec 後面可再接額外的指令來處理搜尋到的結果。
    -print :將結果列印到螢幕上,這個動作是預設動作!

13、在某目錄下查詢名包含“fi”的檔案並顯示這些檔案的資訊:

find filetest/filetestchild -name '*fi*' -ls

14、統計指定檔案中的行數、單詞數、字元數:

//統計file1檔案中的行數、單詞數、字元數
wc filetest/filetestchild/file1

15、顯示當前工作目錄:

pwd

16、清屏:

clear

17、退出登入:

logout

18、切換使用者的命令

(su - 會重新讀取使用者環境相關配置檔案):

//切換到root使用者
su -
//切換到使用者jiankunking
su - jiankunking

19、立刻關機:

poweroff
//或者
shutdown -h now

20、新增組與使用者

(只有root使用者可以新增使用者):

//新增組
//600表示組ID,可以自己修改,不衝突即可
groupadd -g  600 groupname 
//新增使用者
adduser 使用者名稱
//新建使用者並指定組
useradd -g groupname username
//改變檔案許可權number 是 1 2 4幾個數字的和 可以參考第30條
chmod number filename
//例如:給檔案授予任何人全部許可權
chmod 777 filename 

21、新增使用者密碼:

passwd 使用者名稱

22、刪除使用者:

userdel 使用者名稱

23、檢視所有使用者:

cat /etc/passwd

24、init命令:

//關機
init 0
//重啟
init 6

25、刪除空目錄:

rmdir 目錄名

26、建立符號連結(類似於windows中的快捷方式):

//注意 是L不是i
ln  引數 原始檔或目錄 目標檔案或目錄

27、linux drwxr-xr-x :

第1位表示檔案型別。d是目錄檔案,l是連結檔案,-是普通檔案,p是管道
第2-4位表示這個檔案所有者擁有的許可權,r是讀(修改檔案許可權的時候用數字4表示),w是寫(修改檔案許可權的時候用數字2表示),x是執行(修改檔案許可權的時候用數字1表示)。
第5-7位表示和這個檔案所有者所在同一個組的使用者所具有的許可權。
第8-10位表示其他使用者所具有的許可權。

28、檢視檔案所有者:

ls -ahl 檔名或者資料夾名稱

29、shell的命令補全功能:

是指使用者輸入命令時,並不需要輸入完整的命令,而系統自動會找出最符合的名稱。這種功能可以節省經常輸入命令的時間。
直接輸入“mk”—-再按兩下“tab”鍵—–出現兩頭兩個字母為“mk”的所有命令。
這裡寫圖片描述
cat f再按兩下“tab”鍵會出現開頭字母為“f”的所有檔案或目錄。
這裡寫圖片描述

30、查閱歷史記錄 命令:

在linux下,我們有時可能希望知道或是使用最近執行的命令。history可能會幫上大忙。
1)history 5 此項說明會顯示最近使用的5個命令 。history 會顯示最近使用的所有命令都顯示出來。
2)!5 此項說明執行歷史編號為5的命令
3)!ls 此項說明執行最後一次以“ls”開頭的命令

31、顯示系統執行的程式

ps命令是Process Status的縮寫。ps命令能夠給出當前系統中程式的快照。它能捕獲系統在某一事件的程式狀態。可以不加任何引數。

//顯示當前終端的所有程式資訊
ps -a
//以使用者的格式顯示程式資訊
ps -u
//顯示後臺程式的執行引數
ps -x
//直接ps -aux就行這樣看的最全
ps -aux
欄位 說明
PID 程式識別號
TTY 終端機號
TIME 此程式消耗CPU時間
CMD 正在執行的命令或者程式名

這裡寫圖片描述

32、終止程式kill/killall

若是某個程式執行一半需要停止時,或是已消了很大的系統資源時,此時可以考慮停止該程式,使用kill命令來完成此項任務。

終止某個程式:

kill 程式號
//強制殺死
kill -9 程式號

killall:殺死同名的所有程式 (及該程式所開的子程式統統殺掉)

33、動態監控程式

top與ps命令相似.它們都用來顯示正在執行的程式,top與ps最大的不同之處,在於top在執行一段時間可以更新正在執行的程式

top
//指定系統狀態更新時間
//指定系統更新程式地時間是10秒
top -d 10

這裡寫圖片描述

34、設定、檢視系統時間

顯示系統的時間:

date

這裡寫圖片描述

檢視月曆:

//檢視2012年3月的月曆
cal 3 2012

這裡寫圖片描述

檢視年曆:

//檢視2017的年曆
cal 2017

這裡寫圖片描述

35、顯示網路統計資訊

netstat -[atunlp]

此命令用來顯示整個系統目前的網路情況,例如目前的連結,資料包傳遞資料,或是路由表內容,此命令直接輸入即可使用。
引數:
-a :將目前系統上所有的聯機、監聽、Socket 資料都列出來
-t :列出 tcp 網路封包的資料
-u :列出 udp 網路封包的資料
-n :不已程式的服務名稱,以埠號 (port number) 來顯示;
-l :列出目前正在網路監聽 (listen) 的服務;
-p :列出該網路服務的程式 PID

36、 檢測主機連線命令

ping 對方的ip地址

是一種網路檢測檢測工具,它主要用於簡稱遠端主機是否正常,或是兩部主機間的介質是否斷,網線是否脫落或網路卡故障。

37、顯示資料包經過歷程命令

traceroute [-nwig] IP

此命令可以直接輸入使用,用來檢測資料包在網路上傳輸的過程,從本機到遠端的主機完整路徑,幫助管理員解決問題。

引數:
-n :可以不必進行主機的名稱解析,單純用 IP ,速度較快!
-w :若對方主機在幾秒鐘內沒有回聲就宣告不治…預設是 5 秒
-i :用在比較複雜的環境,如果你的網路介面很多很複雜時,才會用到這個引數;
舉例來說,你有兩條 ADSL 可以連線到外部,那你的主機會有兩個 ppp,
你可以使用 -i 來選擇是 ppp0 還是 ppp1 啦!
-g :與 -i 的引數相仿,只是 -g 後面接的是 gateway 的 IP 就是了。

38、route

route

所謂路由是指將資料由來源網路送往目的地網路的操作,在大型網路中,路由是非常複雜的,因為資料包在抵達目的地時,可能經過的節點很多,路由表是儲存在路由器或一些其他連結設定上的窗體,其中記錄著了到指定目的地的網路路徑,以及這些路徑的相關數值

此命令可以直接輸入使用,來檢視本機路由情況

這裡寫圖片描述

39、重啟

reboot

40、 管道符’|’(Enter鍵上方的那個豎線)

利用Linux所提供的管道符“|”將兩個命令隔開,管道符左邊命令的輸出就會作為管道符右邊命令的輸入。連續使用管道意味著第一個命令的輸出會作為第二個命令的輸入,第二個命令的輸出又會作為第三個命令的輸入,依此類推。

41、搜尋文字內容

grep '搜尋字串' filename

grep 指令用於查詢內容包含指定的範本樣式的檔案,如果發現某檔案的內容符合所指定的範本樣式,預設grep指令會把含有範本樣式的那一列顯示出來。

這裡寫圖片描述

42、linux幫助命令

//比如想知道grep命令的資訊
man grep

這裡寫圖片描述

43、輸出重定向

grep '搜尋字串' filename > 要寫入的檔名

這裡寫圖片描述

> 是定向輸出到檔案,如果檔案不存在,就建立檔案;如果檔案存在,就將其清空;一般我們備份清理日誌檔案的時候,就是這種方法:先備份日誌,再用>,將日誌檔案清空(檔案大小變成0位元組);

> > 這個是將輸出內容追加到目標檔案中。如果檔案不存在,就建立檔案;如果檔案存在,則將新的內容追加到那個檔案的末尾,該檔案中的原有內容不受影響。

44、& 放在啟動引數後面表示設定此程式為後臺程式

命令格式:

command &

預設情況下,程式是前臺程式,這時就把Shell給佔據了,我們無法進行其他操作,對於那些沒有互動的程式,很多時候,我們希望將其在後臺啟動,可以在啟動引數的時候加一個’&’實現這個目的。

45、掛載與解除安裝

Liunx採用樹形的檔案管理系統,也就是在Linux系統中,可以說已經沒有分割槽的概念了。分割槽在Linux和其他裝置一樣都只是一個檔案。要使用一個分割槽必須把它載入到檔案系統中。

Linux中樹形的檔案結構,最頂層是/ 目錄。在安裝系統時,你必須選擇把一個主分割槽掛載在/ 目錄下,因為系統需要安裝在/掛載的主分割槽下。否則系統會提示你。這裡又一次提到了掛載。所以掛載就是把目錄和分割槽連線起來,和上面說的WINDOWS下的對映關係是一樣的。不同的是WINDOWS是把分割槽對映到一個碟符,而LINUX下是對映到一個目錄。 這是理解他們不同最重要的地方,而導致不同的是因為檔案系統結構不同。

上面說了Linux的檔案系統是樹形的,安裝的系統必須是在/ 目錄下,因為/目錄下掛載了一個主分割槽。/目錄是樹形的根,其他所有目錄都是他的子節點。 我們安裝系統的時候已經把分割槽1掛載到 / 目錄下了. 而這個時候沒有掛載其他任何分割槽,所以/ 目錄下的所有其他目錄都在這個分割槽下,也就是說,我在任何目錄下讀寫操作實際都是操作的這個1號分割槽。如果我們想使用其他分割槽,就必須把這個分割槽掛載到一個目錄下,這個目錄可以是已經存在的目錄,比如/home,也可以是我們自己建立的目錄,比如/oracle。當然有些目錄比如/lib, /dev, /etc, /usr這些都不能掛載其他分割槽,因為他們都存放著系統需要的檔案,一旦被掛載其他分割槽,那沒OS就無法找到所需的檔案,系統就會崩潰。比如我們把分割槽2掛載到/usr/X11目錄下時,系統就無法通過X11目錄找到分割槽1上的檔案,這個時候系統圖形介面就無法使用了. 雖然檔案還在硬碟上。前面說過,目錄 — 分割槽 是通過掛載吧他們聯絡起來。你更換了分割槽,也就破壞了聯絡,就無法在找到之前的檔案了。我們在看分割槽5和分割槽6,我們把它掛載到/home/ftp 和 /oracle目錄下,這個時候我們在操作這2個目錄是,就是操作對用的分割槽了.

以上掛載部分的理解摘自:Linux 掛載概念 理解

//掛載
mount -引數 裝置名 掛載點
//解除安裝
umount 裝置名

46、檢視磁碟空間使用情況

df -引數

例如:df -h
這裡寫圖片描述

47、檢視某個目錄在哪個分割槽

df 目錄全路徑

這裡寫圖片描述

48、檢視分割槽具體情況

fdisk -l

這裡寫圖片描述

49、顯示所有的環境變數

//列出來所有的環境變數
env

這裡寫圖片描述

  • HOME : 代表使用者的家目錄。還記得我們可以使用 cd ~ 去到使用者的家目錄嗎?或者利用 cd就可以直接回到使用者家目錄了。那就是取用這個功能啦~ 有很多程式都可能會取用到這個變數的值喔!
  • SHELL : 告知我們,目前這個環境使用的 SHELL 是哪支程式? 如果是 bash 的話,預設是/bin/bash 的啦!
  • HISTSIZE : 這個與『歷史命令』有關,亦即是, 我們曾經下達過的指令可以被系統記錄下來,而記錄的『筆數』則是由這個值來設定的。
  • ENV : 這個使用者所使用的個人化環境設定檔的讀取檔案。
  • MAIL : 當我們使用 mail 這個指令在收信時,系統會去讀取的郵件信箱檔案 (mailbox)。
  • PATH : 就是執行檔案搜尋的路徑啦~目錄與目錄中間以冒號(:)分隔, 由於檔案的搜尋是依序由 PATH 的變數內的目錄來查詢,所以,目錄的順序也是重要的喔。
  • LANG : 這個重要!就是語系檔案囉~很多資料都會用到他, 舉例來說,當我們在啟動某些 perl的程式語言檔案時,他會主動的去分析語系資料檔案, 如果發現有他無法解析的編碼語系,可能會產生錯誤喔!一般來說,我們中文編碼通常是 zh_TW.Big5 或者是 zh_TW.UTF-8,這兩個編碼偏偏不容易被解譯出來,所以,有的時候,可能需要修訂一下語系資料。
  • RANDOM : 這個玩意兒就是『隨機隨機數』的變數!目前大多數的 distributions 都會有隨機數產生器,那就是 /dev/random 這個檔案。

50、shell更改

//把我的shell改成chsh
chsh -s /bin/chsh

要讓修改的shell生效的話,需要使用者登出一下。
CentOS中的shell種類:
這裡寫圖片描述

51、命令別名(alias)設定

//給命令ls -al起個別名:lm
alias lm='ls -al'

這裡寫圖片描述

52、萬用字元:*

除了完整的字串之外, bash 還支援許多的萬用字元來幫助使用者查詢與指令下達。 舉例來說,想要知
道 /usr/X11R6/bin 底下有多少以 xt 為開頭的檔案嗎?使用:

 ls -l /usr/X11R6/bin/xt* 

就能夠知道囉

53、Bash shell 的內建命令: type

//[-tpa] 表示引數
type [-tpa] name

不加任何引數時,則 type 會顯示出那個 name 是外部指令還是 bash 內建的指令!

  1. -t :當加入 -t 引數時,type 會將 name 以底下這些字眼顯示出他的意義:
    file :表示為外部指令;
    alias :表示該指令為命令別名所設定的名稱;
    builtin :表示該指令為 bash 內建的指令功能;
  2. -p :如果後面接的 name 為指令時,會顯示完整檔名(外部指令)或顯示為內建指令;
  3. -a :會將由 PATH 變數定義的路徑中,將所有含有 name 的指令都列出來,包含 alias

這裡寫圖片描述

54、shell 宣告、讀取變數

//宣告變數
myVar='jiankunking'
//讀取變數
echo $myVar

這裡寫圖片描述

55、shell變數設定規則

  1. 變數與變數內容以等號『=』來連結;
  2. 等號兩邊不能直接接空格符;
  3. 變數名稱只能是英文字母與數字,但是數字不能是開頭字元;
  4. 若有空格符可以使用雙引號『 ” 』或單引號『 ’ 』來將變數內容結合起來,但須要特別留意, 雙
    引號內的特殊字元可以保有變數特性,但是單引號內的特殊字元則僅為一般字元;
  5. 必要時需要以跳脫字元『 \ 』來將特殊符號 ( 如 Enter, $, , 空格符, ’ 等 ) 變成一般符號;
  6. 在一串指令中,還需要藉由其它的指令提供的資訊,可以使用 quote 『 command 』;(特別
    特別注意,那個 ` 是鍵盤上方的數字鍵 1 左邊那個按鍵,而不是單引號!)
  7. 若該變數為擴增變數內容時,則需以雙引號及 "
    變數名稱 如:『 "
    PATH”:/home』繼續累加內容;
  8. 若該變數需要在其它子程式執行,則需要以 export 來使變數變成環境變數, 如『export PATH』;
  9. 通常大寫字元為系統預設變數,自行設定變數可以使用小寫字元,方便判斷 ( 純粹依照使用者興
    趣與嗜好 ) ;
  10. 取消變數的方法為:『unset 變數名稱』。

56、在變數的設定當中,單引號與雙引號的用途有何不同?

單引號與雙引號的最大不同在於雙引號仍然可以保有變數的內容,但單引號內僅能是一般字元 ,而不會有特殊符號。

[root@linux ~]# name=VBird
[root@linux ~]# echo $name
VBird
//注意這裡
[root@linux ~]# myname="$name its me"
[root@linux ~]# echo $myname
VBird its me
//注意這裡
[root@linux ~]# myname='$name its me'
[root@linux ~]# echo $myname
$name its me

使用了單引號的時候,那麼 $name 將失去原有的變數內容, 僅為
一般字元的顯示型態而已!

57、顯示目前 shell 環境下的所有變數

set

set 這個指令除了會將環境變數列出來之外,其它我們的自訂變數,與所有的變數,都會被列出來。

一般來說,不論是否為環境變數,只要跟我們目前這個 shell 的操作介面有關的變數, 通常都會被設定為大寫字元,也就是說,『基本上,在 Linux 預設的情況中,使用{大寫的字母}來設定的變數一般為系統內定需要的變數』。

使用 set 除了會將系統的預設值秀出來之外,連帶的所有的你自己設定的變數也會被秀出來! 同時需要注意的是,若當時有相當多人同時在線上的話,那麼 你的變數只能給自己使用 ( 除非改的是系統的預設引數檔,如 /etc/profile ),而不會干擾到別人的!就如同前面所說的, 由於你登入 Linux 之後會取得
一個 PID ,而你的設定將只對這個 PID 與子程式有關!此外, 這次登入所進行的變數設定,如果沒有更動到設定檔, 那麼這次設定的變數在下次登入時將被取消掉 ( 因為程式 PID 不見囉! ) !所以囉, 如果你想要你的變數每次都能在你登入的時候自動就設定好了,那麼就必須將你的設定寫入登入時載入的設
定檔!

58、?:(關於上個執行指令的回傳碼)

echo $?

這裡寫圖片描述

一般來說,如果成功的執行該指令,則會回傳一個 0 值,如果執行過程發生錯誤,就會回傳『錯誤程式碼』才對!一般就是以非為 0 的數值來取代。

59、export命令

export命令用於設定或顯示環境變數。
export可新增,修改或刪除環境變數,供後續執行的程式使用。export的效力僅及於該次登陸操作。

//-f  代表[變數名稱]中為函式名稱。
//-n  刪除指定的變數。變數實際上並未刪除,只是不會輸出到後續指令的執行環境中。
//-p  列出所有的shell賦予程式的環境變數。
export [-fnp][變數名稱]=[變數設定值]

60、read命令

read 命令從標準輸入中讀取一行,並把輸入行的每個欄位的值指定給 shell 變數。

//引數:
//-p :後面可以接提示字元!
//-t :後面可以接等待的『秒數!』這個比較有趣~不會一直等待使用者啦!
//read 之後不加任何引數,直接加上變數名稱,那麼底下就會主動出現一個空白行,等待您輸入。
read [-pt] variable

這裡寫圖片描述

61、declare / typeset

declare 或 typeset 是一樣的功能,就是在宣告變數的屬性。如果使用 declare 後面並沒有接任何引數,那麼 bash 就會主動的將所有的變數名稱與內容通通叫出來,就好像使用 set 一樣。

//引數:
//-a :將後面的 variable 定義成為陣列 (array)
//-i :將後面接的 variable 定義成為整數數字 (integer)
//-x :用法與 export 一樣,就是將後面的 variable 變成環境變數;
//-r :將一個 variable 的變數設定成為 readonly ,該變數不可被更改內容,也不能 unset
declare [-aixr] variable

62、陣列屬性 array

陣列的設定方式是:

var[index]=content

一般來說,建議直接以 ${陣列} 的方式來讀取
這裡寫圖片描述

63、與檔案系統及程式的限制關係: ulimit(未測試)

ulimit [-SHacdflmnpstuv] [配額]

引數:
-H :hard limit ,嚴格的設定,必定不能超過設定的值;
-S :soft limit ,警告的設定,可以超過這個設定值,但是會有警告訊息,
並且,還是無法超過 hard limit 的喔!也就是說,假設我的 soft limit
為 80 , hard limit 為 100 ,那麼我的某個資源可以用到 90 ,
可以超過 80 ,還是無法超過 100 ,而且在 80~90 之間,會有警告訊息的意思。
-a :列出所有的限制額度;
-c :可建立的最大核心檔案容量 (core files)
-d :程式資料可使用的最大容量
-f :此 shell 可以建立的最大檔案容量 (一般可能設定為 2GB)單位為 Kbytes
-l :可用於鎖定 (lock) 的記憶體量
-p :可用以管線處理 (pipe) 的數量
-t :可使用的最大 CPU 時間 (單位為秒)
-u :單一使用者可以使用的最大程式(process)數量。

64、額外的變數設定功能

//方式一
 echo $HOME
 //方式二
 echo ${HOME}

在那個 ${variable} 的使用方法中,其實,我們還可以將變數進行一些修訂的工作。 只要加上一些字元標誌,後面再接著使用比對字串,就能夠修改變數的內容了。
eg:從最前面開始比對,若開頭為 / ,則刪除兩個 /之間的所有資料,亦即 /*/
這裡寫圖片描述

65、萬用字元與特殊符號

符號 內容
* 萬用字元,代表 0 個或多個字元(或數字)
? 萬用字元,代表『一定有』一個字母
# 批註,這個最常被使用在 script 當中,視為說明!
\ 跳脫符號,將『特殊字元或萬用字元』還原成一般字元
; 連續性命令的界定(注意!與管線命令並不相同)
~ 使用者的使用者目錄
$ 亦即是變數之前需要加的變數取代值
& 將指令變成背景下工作
! 邏輯運算意義上的『非』 not 的意思!
/ 路徑分隔的符號
> 輸出導向,『取代』
>> 輸出導向,『累加』
單引號,不具有變數置換的功能
具有變數置換的功能
` ` 兩個『 ` 』中間為可以先執行的指令!
( ) 在中間為子 shell 的起始與結束
[ ] 在中間為字元的組合
{ } 在中間為命令區塊的組合

66、組合按鍵

組合按鍵 執行結果
Ctrl + C 終止目前的命令
Ctrl + D 輸入結束(EOF),例如郵件結束的時候
Ctrl + M 就是 Enter
Ctrl + S 暫停螢幕的輸出
Ctrl + Q 恢復螢幕的輸出
Ctrl + U 在提示字元下,將整列命令刪除
Ctrl + Z 『暫停』目前的命令

67、擷取命令: cut、grep(未測試)

什麼是擷取命令啊?說穿了,就是將一段資料經過分析後,取出我們所想要的。 或者是,經由分析關鍵詞,取得我們所想要的那一行! 不過,要注意的是,一般來說,擷取訊息通常是針對『一行一行』來分析的,並不是整篇訊息分析的。
1、cut
這個指令可以將一段訊息的某一段給他『切』出來~ 處理的訊息是以『行』
為單位。

cut -d'分隔字元' -f fields
cut -c 字元區間

引數:
-d :後面接分隔字元。與 -f 一起使用;
-f :依據 -d 的分隔字元將一段訊息分割成為數段,用 -f 取出第幾段的意思;
-c :以字元 (characters) 的單位取出固定字元區間;

2、grep
剛剛的 cut 是將一行訊息當中,取出某部分我們想要的,而 grep 則是分析一行訊息, 若當中有我們所需要的資訊,就將該行拿出來。

grep [-acinv] '搜尋字串' filename

引數:
-a :將 binary 檔案以 text 檔案的方式搜尋資料
-c :計算找到 ‘搜尋字串’ 的次數
-i :忽略大小寫的不同,所以大小寫視為相同
-n :順便輸出行號
-v :反向選擇,亦即顯示出沒有 ‘搜尋字串’ 內容的那一行!

68、排序命令: sort, wc, uniq(未測試)

1、sort
sort 是很有趣的指令,他可以幫我們進行排序,而且可以依據不同的資料型態來排序。 例如數字與文字的排序就不一樣。此外,排序的字元與語系的編碼有關,因此, 如果您需要排序時,建議使用 LC_ALL=C來讓語系統一,資料排序比較好一些。

sort [-fbMnrtuk] [file or stdin]

引數:
-f :忽略大小寫的差異,例如 A 與 a 視為編碼相同;
-b :忽略最前面的空格符部分;
-M :以月份的名字來排序,例如 JAN, DEC 等等的排序方法;
-n :使用『純數字』進行排序(預設是以文字型態來排序的);
-r :反向排序;
-u :就是 uniq ,相同的資料中,僅出現一行代表;
-t :分隔符,預設是 tab 鍵;
-k :以那個區間 (field) 來進行排序的意思。

這裡寫圖片描述

2、uniq

uniq [-ic]

引數:
-i :忽略大小寫字元的不同;
-c :進行計數

3、wc
統計指定檔案中的位元組數、字數、行數,並將統計結果顯示輸出。

 wc [-lwm]

引數:
-l :僅列出行;
-w :僅列出多少字(英文單字);
-m :多少字元;

69、查詢系統中安裝了哪些rpm軟體包

rpm -qa

70、查詢系統已安裝的軟體

rpm -q 軟體名

這裡寫圖片描述

71、定時任務 crontab

crontab (選項) (引數)

選項
 -e:編輯該使用者的計時器設定;
 -l:列出該使用者的計時器設定;
 -r:刪除該使用者的計時器設定;
 -u<使用者名稱稱>:指定要設定計時器的使用者名稱稱。
引數
 crontab檔案:指定包含待執行任務的crontab檔案(crontab檔案中一行行的指令或者一個shell指令碼檔案的全路徑)。

crontab檔案的含義:
使用者所建立的crontab檔案中,每一行都代表一項任務,每行的每個欄位代表一項設定,它的格式共分為六個欄位,前五段是時間設定段,第六段是要執行的命令段,格式如下:
minute hour day month week command 順序:分 時 日 月 周
其中:
minute: 表示分鐘,可以是從0到59之間的任何整數。
hour:表示小時,可以是從0到23之間的任何整數。
day:表示日期,可以是從1到31之間的任何整數。
month:表示月份,可以是從1到12之間的任何整數。
week:表示星期幾,可以是從0到7之間的任何整數,這裡的0或7代表星期日。
command:要執行的命令,可以是系統命令,也可以是自己編寫的指令碼檔案。
在以上各個欄位中,還可以使用以下特殊字元:

星號(*):代表所有可能的值,例如month欄位如果是星號,則表示在滿足其它欄位的制約條件後每月都執行該命令操作。
逗號(,):可以用逗號隔開的值指定一個列表範圍,例如,“1,2,5,7,8,9”
中槓(-):可以用整數之間的中槓表示一個整數範圍,例如“2-6”表示“2,3,4,5,6”
正斜線(/):可以用正斜線指定時間的間隔頻率,例如“0-23/2”表示每兩小時執行一次。同時正斜線可以和星號一起使用,例如*/10,如果用在minute欄位,表示每十分鐘執行一次。

這裡寫圖片描述

72、shell指令碼

  1. shell指令碼是一個文字檔案,命令的集合,有執行許可權
    執行方式(./檔名)
  2. shell指令碼是以.sh文結尾的檔案
  3. 如果不能執行,可能是沒有執行的許可權,可以修改這個sh檔案的執行許可權

作者:jiankunking 出處:http://blog.csdn.net/jiankunking

相關文章