2012年9月18日 星期二

將常用的「命令 + 參數」合成「新命令」,方便執行

Linux 裏常有些操作命令加入參數後,真是長得記不住。雖然,可以按「↑」鍵,把之前下過的命令找回來。但是,不常下的命令,或是不知多久前下過的命令,想要找回來可有點麻煩。
    最好的方法就是把這個「命令」和「參數」先寫在一檔案中,再執行這個檔案以下達命令,而且
快速又不用擔心打錯字
主要步驟有三:編輯命令檔、改變命令檔模式、及執行。命令檔模式若不修改,就會影響執行的方式。詳細說明如下:

一、編輯命令檔案

這裏提供三個方式,以編輯命令 "lla" 取代 "ls -a" 為例,
[SiB@Celeron-D ~]$ echo "ls -a" > lla
[SiB@Celeron-D ~]$ gedit lla
[SiB@Celeron-D ~]$ vim lla
第一列的命令,對剛才執行過的命令相當方便。第二、三列命令則分別為「文字介面」及「圖形化介面」的文字編輯程式,也可使用其它文字編輯程式。
注意:LibreOffice Write 這類文書程式,較不適用,它會加入許多控制用字元。執行時,會造成不可預期的錯誤。

二、修改命令檔模式

文字編輯成的命令檔,在 Linux 中預設是不能執行的。為了讓這個新命令能像其它命令一樣方便執行,就要修改它的模式,讓它具有執行能力。此命令有三個寫法:
[SiB@Celeron-D ~]$ chmod 755 lla
[SiB@Celeron-D ~]$ chmod u+x,g+x,o+x lla
[SiB@Celeron-D ~]$ chmod a+x lla
上面三個例子的結果都是一樣,將 lla 這個命令文字檔設定成:擁有者(可讀、寫、執行)、同群組(可讀、執行)、其他用戶(可讀、執行)。
第一個命令是以「二進位」方式指定模式,對「二進位」不熟悉者,可忽略。
第二個命令的 u 指擁有者, g 為同群組,而 o 則是其他用戶。至於 +x 是增加「執行」模式。

第三個命令的 a 則為包含 u g o 三者,同時設定之。

註一:Linux 裏文字檔的預設模式為:擁有者(可讀、寫)、同群組(可讀)、其他用戶(可讀)。
註二:若只想讓擁有者具有(可讀、寫、執行)模式,同群組及其他用戶可不設定。

三、執行「新命令檔」

編輯、設定完成的「新命令檔」可以試著執行看看,
[SiB@Celeron-D ~]$ lla
[SiB@Celeron-D ~]$ sh lla
第一個命令是適用於「新命令檔」已設定妥執行模式。
第二個命令則是未設定執行模式,需藉由 sh 去解譯命令再執行。

註:使用哪一種形式執行「新命令」,端看「新命令」檔是否已設定執行模式而定。

四、決定「新命令檔」的存放目錄

依照上一步驟,下達執行「新命令」時,必須將「工作目錄」切換到與「新命令檔」同一目錄,否則無法執行。例:lla 在用戶的「家目錄, ~/」,但「工作目錄」在 ~/test,
[SiB@Celeron-D test]$ lla
bash: lla: 找不到指令...
這對時常在不同目錄切換的用戶,即使可以利用「相對路徑」或「絕對路徑」來執行「新命令」,也是十分不方便。最好的方法是,將這個「新命令」加入「搜尋路徑」中包含的目錄,就可以在任何目錄執行「新命令」。首先,查明「搜尋路徑」包含哪些目錄,
[SiB@Celeron-D ~]$ env | grep PATH
PATH=/usr/lib64/qt-3.3/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/SiB/.local/bin:/home/SiB/bin
[SiB@Celeron-D ~]$
可以看到用戶 SiB 的「家目錄,/home/SiB」下的 bin 被包含在「搜尋路徑」中。但是,卻沒有在用戶 SiB 的「家目錄」下看到。
    因為,系統的預設是將 bin 加入「搜尋路徑」,可是 bin 這個目錄未建立。在將「新命令」搬移到 bin 目錄之前,要先建立 bin 這個目錄。
[SiB@Celeron-D ~]$ mkdir bin
[SiB@Celeron-D ~]$ mv lla bin
[SiB@Celeron-D ~]$ cd test
[SiB@Celeron-D test]$ lla
..fontconfig  .pulse.Xauthority
...gconf.pulse-cookie  .xsession-errors
.bash_history  .gimp-2.8.putty.xsession-errors.old
   . . . . . .
[SiB@Celeron-D ~]$
上例中,包含建立目錄、搬移「新命令」及執行「新命令」。

註:第三個命令是將「工作目錄」切換到 ~/test。

已測試版本:

  • Fedora: 14, 17

沒有留言:

張貼留言

感謝你耐心看完本文,歡迎留下任何指正、建議,筆者會儘快回應。(English is also welcome.)