如何在 Linux 中創建自定義命令

在本文中,我們將向您展示如何在 Linux 中創建自定義命令,這將允許您使用您選擇的簡單名稱創建“快捷方式”命令。 更好的是,您可以像這樣組合多個命令並在一個單詞中運行它們。 有用,對吧? 隨著您對 Linux 的熟悉程度越來越高,您會在論壇和教程中遇到可能非常複雜(且奇怪)的命令。 考慮以下示例以在一列中打印文件列表:

                      ls -l --color | awk '{print $ 9}'
                    

這給了我們以下輸出:

到目前為止,一切都很好。 但是如果你想經常使用這個命令呢? 這封信很難記住寫,也不容易打印,而且太長了。 現在添加數十個具有相似(或更高)難度級別的其他團隊,很容易看出我們需要一個新的解決方案。

步驟 1. 使用文件名在文本編輯器中打開文件

假設我們想將新命令命名為“files”。 我們使用文本編輯器“vi”通過發出以下命令創建一個名為“files”的新文件:

                      vi files
                    

此命令將打開一個基本編輯器,您可以在其中輸入文本。 默認情況下,它將處於“閱讀”模式,您將無法添加新文本。 通過按鍵盤上的“插入”鍵將其更改為插入模式。

現在復制並粘貼以下文本。 您可以通過右鍵單擊將其快速粘貼到終端中。

                      #!/bin/bash
# Print list of files in one column
ls -l --color | awk '{ print $9 }'
                    

如您所見,當 INSERT 模式打開時,它被插入到 vi 中:

這稱為“腳本”,它包含三個部分:

  1. 它以“#! /bin/bash”
  2. 以井號 (#) 開頭的行是註釋
  3. 其餘球隊。 將第三行替換為要簡化的複雜命令

現在按“Esc”鍵退出“插入”模式。 按 Shift + Z + Z 保存文件(按住 shift 鍵並按 z 兩次)。

該文件現在將保存在當前文件夾中。 您可以通過輸入以下內容來顯示其內容:

                      cat files
                    

這給出了以下輸出:

第 2 步:為我們的腳本分配正確的權限

如果我們只是列出目錄中的文件,您可以看到我們的新文件就是其中之一。

但是,這是一個常規文件,而不是可以執行的文件。 ls 命令以綠色顯示可執行文件。 因此,我們需要告訴 Linux 我們的新文件是可執行的。 我們通過引入以下內容來做到這一點:

                      chmod 755 files
                    

這會更改文件權限並使其可執行。 現在“ls”將文件顯示為綠色:

是時候啟動我們的團隊了!

第 3 步:指定腳本的路徑

不幸的是,我們不能只在當前目錄中鍵入“文件”來運行我們的新腳本。 出現錯誤消息:“找不到命令”:

這是因為 Linux 在 $ PATH 變量引用的一組特定目錄中查找常規命令。 而我們當前的目錄不在此列表中。

所以我們有三個選擇:

  1. 每次手動提供我們腳本文件的完整位置
  2. 將“當前目錄”添加到 $PATH 變量
  3. 將我們的腳本文件移動到 $PATH 引用的現有文件夾

讓我們看看如何做到這三個:

方法一、手動輸入完整位置

當我們早些時候嘗試只鍵入“文件”時,我們收到了一條錯誤消息。 但是我們可以為我們的腳本文件指定當前目錄,如下所示:

                      ./files
                    

它的工作原理如下所示:

不幸的是,如果我們在不同的文件夾中,它將無法工作。 我們必須展示完整的路徑,即痛苦。

方法 2. 將“當前目錄”添加到 PATH 變量中

這種方法和第一種方法有同樣的問題。 我們可以說 Linux 總是在“當前目錄”中尋找腳本和命令。 這樣我們就不必使用“./”了。 我們可以像這樣臨時將當前目錄添加到 $PATH 中:

                      PATH="$PATH:."
                    

現在只需鍵入“文件”,如下所示:

但是,這種方法有兩個問題:

  1. 如前所述,您不能從除您自己的目錄之外的任何目錄訪問腳本
  2. $PATH 中的更改是暫時的。 當用戶會話結束時,它將被重置!

要永久更改 $PATH,我們需要編輯此文件:

                      ~/.bash_profile
                    

和以前一樣,我們可以使用 vi 編輯器:

                      vi ~/.bash_profile
                    

再次按 Paste 進入 INSERT 模式並導航到 PATH 變量所在的行,如下所示:

現在將以下內容添加到 PATH 行的末尾:

                      :.
                    

這是一個冒號 smile後跟一個句點 (.)。 像以前一樣按 Esc 和 Shift + z + z 將文件保存在 vi 中。 但是,在重新加載 ~/.bash_profile 之前,更改不會生效。 使用以下命令執行此操作:

                      source ~/.bash_profile
                    

您可以通過調用 $PATH 變量來檢查更改是否發生。 您應該會在該行的末尾看到一個添加,如下所示:

即使在用戶會話結束後,更改現在仍將持續存在。 但是,您仍然無法從任何文件夾執行命令。 為此,我們需要方法 3。

方法 3:將文件添加到您現有的 $PATH 目標(推薦)

在我看來,這是添加自定義命令以便您可以從任何地方訪問它的最佳方式。

首先,使用 echo $PATH 獲取 $PATH 位置列表,如方法 2 所示。

每個文件夾位置用冒號 ( smile您可以在上面的屏幕截圖中看到 /usr/local/bin 文件夾是路徑之一。

因此,我們只需使用以下命令將自定義命令移動到此位置(或 $PATH 中的任何其他文件夾):

                      mv files/usr/local/bin
                    

現在我們可以更改我們的工作文件夾並從任何地方訪問腳本!

在此屏幕截圖中,我已將腳本移至 /usr/local/bin 並將一個文件夾移至“cd ..”。 而且團隊還在工作!

這是在 Linux 中創建自定義命令的正確方法。 這只是在 Linux 中編寫腳本的冰山一角。 您可以編寫複雜的邏輯循環並執行條件語句。 您還可以使用它為現有命令創建別名,或將它們組合在一起以自動執行! 如果這是您第一次涉足 Linux 腳本,請準備好在未來使用豐富的功能和功能。

快樂的腳本!

相關文章