站長新書 站長開講 首頁 最新文章 站長著作及審校 FreeBSD 筆記 Linux 筆記 Windows 筆記 虛擬化筆記 網管人雜誌 遊山玩水 關於本站
站長新書 VMware vSphere ICM 團購開跑了!!

邁向 RHCE 之路 (Day06) - 萬用字元、History 指令、Shell 基本概念

前言

接著要說明在使用各種指令時常常會搭配使用的萬用字元。

如下範例即為上述符合條件的應用,利用 * 配合指令 ls 查看 /dev/ram 下檔案,只要零個或多個條件滿足即符合此條件,因此我們可看到結果如下:

 #ls /dev/ram*
  /dev/ram0  /dev/ram10  /dev/ram12  /dev/ram14  /dev/ram2  
  /dev/ram4  /dev/ram6   /dev/ram8   /dev/ram1   /dev/ram11
  /dev/ram13  /dev/ram15  /dev/ram3  /dev/ram5   /dev/ram7  
  /dev/ram9

也可將 * 符號利用於切換路徑上,例如我們常常會切換到網路卡設定檔路徑如下,透過 * 我們可進行目錄的快速切換

 #ls /etc/sysconfig/network-scripts/ifcfg-eth0         //透過補位鍵輸入路徑
  /etc/sysconfig/network-scripts/ifcfg-eth0
 #ls /e*/s*/n*s/i*0                                    //透過 * 切換路徑
  /etc/sysconfig/network-scripts/ifcfg-eth0

利用 配合指令 ls 查看 /dev/ram 下檔案,只要單一個字元即滿足符合條件,因此我們可看到結果如下

 #ls /dev/ram?
  /dev/ram0  /dev/ram1  /dev/ram2  /dev/ram3  /dev/ram4  
  /dev/ram5  /dev/ram6  /dev/ram7  /dev/ram8  /dev/ram9

利用 [1-5] 配合指令 ls 查看 /dev/ram 下檔案,只要此指定數字區段內任一個字元即滿足符合條件,因此我們可看到結果如下

 #ls /dev/ram[1-5]
  /dev/ram1  /dev/ram2  /dev/ram3  /dev/ram4  /dev/ram5

我們先利用指令 touch 來建立一連串檔案後利用 [acf] 配合指令 ls 查看指定的英文字元名單符合條件者 (即 a, c, f 只要其一符合即可),因此我們可看到結果如下

 #touch file{a,b,c,d,e,f,g,x,y,z}
 #ls
  filea  fileb  filec  filed  filee  filef  fileg  filex  filey  filez
 #ls -l file[acf]
  -rw-r--r--. 1 root root 0 Oct 12 09:39 filea
  -rw-r--r--. 1 root root 0 Oct 12 09:39 filec
  -rw-r--r--. 1 root root 0 Oct 12 09:39 filef

如果指定的英文字元不在搜尋名單中怎辨? 前面有說過只要其中有符合的條件即列出 (也就是 或),如下列搜尋條件中可看到 fileo 並不在所有檔案中因此未顯示且指令也不會發生錯誤,我們可看到結果如下:

 #ls -l file[afo]
  -rw-r--r--. 1 root root 0 Oct 12 09:39 filea
  -rw-r--r--. 1 root root 0 Oct 12 09:39 filef

利用 [a-g] 配合指令 ls 查看檔案,只要此指定英文字元區段內任一個字元即滿足符合條件 (即 a, b, c, d, e, f, g 只要其一符合即可),因此我們可看到結果如下

 #ls -l file[a-g]
  -rw-r--r--. 1 root root 0 Oct 12 09:39 filea
  -rw-r--r--. 1 root root 0 Oct 12 09:39 fileb
  -rw-r--r--. 1 root root 0 Oct 12 09:39 filec
  -rw-r--r--. 1 root root 0 Oct 12 09:39 filed
  -rw-r--r--. 1 root root 0 Oct 12 09:39 filee
  -rw-r--r--. 1 root root 0 Oct 12 09:39 filef
  -rw-r--r--. 1 root root 0 Oct 12 09:39 fileg

利用 [^a-g] 配合指令 ls 查看檔案,排除此指定英文字元區段內任一個字元即滿足符合條件 (即 a, b, c, d, e, f, g 只要其一符合即排除),因此我們可看到結果如下

 #ls -l file[^abcdefg]
  -rw-r--r--. 1 root root 0 Oct 12 09:39 filex
  -rw-r--r--. 1 root root 0 Oct 12 09:39 filey
  -rw-r--r--. 1 root root 0 Oct 12 09:39 filez

History 指令

我們可使用指令 history 來了解執行過的指令,並可配合相關快速捷徑來達成再次執行 history 內的指令。

如下範例即為上述說明的應用:

 #history
   1  history
   2  cat /etc/passwd
   3  touch 111
   4  ls
   5  cat /etc/group
   6  history
 #!!                            //執行最後一行指令
  history
 #!c                            //再次執行離目前最接近 c 字元的指令
  cat /etc/group
 #!4                            //執行 history 中第四行指令
  ls

Shell Scripts 基本知識

以下為建立 Shell Scripts 的基本知識

  1. 開頭為 #! 之後接著要使用的 Shell (例如 #!/bin/bash),而在 Script 中通常使用 # 來表示該行為註解
  2. 建立 Script 完成後記得 給予 x 權限 (chmod u+x)
  3. 若您將建立好的 Script 存放於使用者路徑設定中,則可直接使用檔案名稱來執行 Script 而不用輸入絕對路徑或相對路徑來執行該 Script,舉例如下:

以下為 Root 路徑設定資訊

 #echo $PATH
  /usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

以下為使用者 weithenn 路徑設定資訊,所以若使用者建立好 Script 後存放於家目錄下 bin 資料夾中即可不用輸入絕對路徑或相對路徑來執行該 Script

 $echo $PATH
 /usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/home/weithenn/bin
Go To Oddmuse OrgGo To FreeBSD OrgCreative Commons 2.5 Taiwansitestates.com