
我知道如何建立自訂終端命令,這對我在資料夾中編譯所有 java 類別非常有用。我還看到,為了執行此操作,人們通常會創建一個資料夾~/bin 並將文件.sh 與他們希望運行的行放在一起,但我無法很好地理解它,例如,我創建了一個包含某些行的compile.sh
-gcc file -o file
-gcc file1 -o file1
但正如我正在閱讀的那樣,我還需要向隱藏在我的主資料夾中的名為 .bashrc 的文件中添加一行,我不知道該怎麼做,有沒有更簡單的方法來編輯該文件?完成後,我的自訂命令將是 .sh 檔案的名稱(編譯)?
答案1
製作可供電腦所有使用者使用的 Bash 腳本的最簡單方法是將它們放在/usr/local/bin
.但這需要您具有管理員權限。
建立您的腳本:
打開您最喜歡的文字編輯器並編寫您希望腳本運行的所有命令,每行一個命令。
您可以透過以 . 開頭的行向 Bash 腳本新增註解
#
。完成後,將下面的這一行新增為腳本頂部的第一行。它稱為“shebang”,告訴 shell 使用哪個解釋器來執行腳本。
#!/bin/bash
這是完整腳本的簡單範例,運行您在問題中提到的兩個命令:
#!/bin/bash # Compile 'file': gcc file -o file # Compile 'file1': gcc file1 -o file1
將腳本移動到正確的位置:
您應該為所有使用者放置自己的腳本的位置是
/usr/local/bin
。由於目錄由 user 擁有
root
,因此您必須是管理員並用於sudo
將檔案移至該目錄。我假設您在主目錄中建立了腳本
~/my_script.sh
。只需打開終端機並輸入以下命令,並將其替換SCRIPTNAME
為您想要為其指定的名稱。該名稱將是您必須鍵入才能運行它的命令。檔案.sh
副檔名不是必需的。sudo mv ~/myscript.sh /usr/local/bin/SCRIPTNAME
設定正確的所有者和權限:
該腳本應該由 擁有並可寫
root
,但對每個人都可讀和可執行。下面的兩個命令可以確保這一點:sudo chown root: /usr/local/bin/SCRIPTNAME sudo chmod 755 /usr/local/bin/SCRIPTNAME
運行您的腳本並享受:
現在,您只需
SCRIPTNAME
在終端中鍵入(或無論您如何稱呼它),腳本就會執行。
答案2
雖然編寫腳本是一種非常方便的執行方式一個文件中的許多指令,我建議使用只需要一兩個命令的函數。
以下面的函數定義為例
compile()
{
gcc "$1" -o "${1%%.*}" && printf "<<< Compiled successfully\n"
}
透過將其放入.bashrc
檔案中(然後運行source ~/.bashrc
或開啟新的終端選項卡),您可以從任何地方運行此命令,而無需~/bin
添加到PATH
變數中,並提供檔案名稱作為命令列參數,如下所示
compile somecode.c
附帶說明,您只需gedit ~/.bashrc
從命令列呼叫即可編輯該文件
對於那些想知道"$1"
and是什麼意思的人來說"${1%%.*}"
, the"$1"
指的是第一個命令行參數(在本例中"somecode.c"
),至於"${1%%.*}"
- 這是參數擴展,特別是刪除後綴的參數,並且會丟棄點後的任何內容。換句話說,那就變成somecode.c
了somecode
。欲了解更多信息,請閱讀bash 手冊頁關於參數擴充的部分
答案3
在開始討論之前,我想澄清一下,您不是在建立新命令,而是在建立可以作為可執行檔運行的腳本。但它們的行為方式與命令相同,因為您可以從任何地方運行它們。
如果您的主資料夾中沒有名為「bin」的資料夾,請建立一個。
現在打開一個終端機視窗並輸入nano ~/.bashrc
。
這將打開一個編輯器。在此文件的底部,新增一行,內容為PATH="$HOME/bin:$PATH"
.
現在按 CTRL+O(字母 o,不是零)儲存文件,然後按 Enter。使用 CTRL+X 退出編輯器。登出並重新登入以使變更生效,如果不起作用,請重新啟動電腦。
現在,您在 bin 資料夾中建立的任何腳本都可以在終端機視窗中的任何位置存取。
您可以使用 nano、gedit(Ubuntu 圖形文字編輯器)或任何您想要的文字編輯器來建立這些腳本。只需記住將腳本保存在 ~/bin 資料夾中並使文件可執行即可。有兩種方法可以做到這一點:
GUI:右鍵單擊該檔案並轉到權限選項卡,然後選取「允許作為程式執行」方塊。
終端 :chmod +x /location/of/your/file