如何編寫和使用文字批次命令文件

如何編寫和使用文字批次命令文件

如何編寫並使用典型的文字批次命令檔?

我說的是一個包含以下命令的檔案:

sudo -i
sudo apt-get update
sudo apt-get upgrade
sudo apt-get autoremove
sudo apt-get autoclean
sudo apt-get check
exit

我想我可以用 Leafpad 寫它,但...

  1. 我必須在哪裡保存它?

  2. 哪種格式?哪個名稱和副檔名?

  3. 之後,在 LXTerminal 會話中,我如何使用它,只需一個命令(理想情況下,如果有一種方法可以在每次系統啟動時自動使用它)?

非常感謝您抽出時間!

答案1

在類 UNIX 世界中不存在「批次」檔。我們使用包含“she-bangs”的腳本。要製作這樣的腳本,請開啟文字編輯器(如 Leafpad)並以以下行開頭:

#!/path/to/interpreter

/path/to/interpreter用於解釋腳本的二進位檔案的位置在哪裡。在 Linux 中,我們通常使用「bash」(Bourne Again SHell),這是優秀的 Bourne Shell 的「演進」。 bash 所做的基本上是從 PATH 環境變數中包含的路徑(通常包括 /bin、/sbin、/usr/bin、/usr/sbin 等)運行帶有腳本中指定參數的二進位。

但除了大量選項之外,您還可以使用其他解釋器,例如 Python、Perl、Ruby、sh、csh、zsh、dash、ksh。

在她的爆炸下面是你的劇本。在您的具體情況下,要執行指定的命令,我們可以在以下腳本中使用 bash:

#!/bin/bash

# the line above sets bash as the interpreter

# note that "sudo" is not required here because we will run the script as super user later.

apt-get update
# updates APT repositories

apt-get upgrade
# check for software upgrades and upgrade them

apt-get autoremove
# remove obsolete packages

apt-get autoclean
# remove stored .deb files

apt-get check
# update package cache and check for broken dependencies

現在儲存您的文件。不需要副檔名,但出於象徵性原因,請使用 .sh 副檔名對其進行命名。我們將以超級使用者身分執行腳本,因此無需更改檔案權限。

打開終端機並 cd 到儲存腳本的路徑。假設您將其儲存為 script.sh。運行以下命令:

chmod +x script.sh

chmod表示“更改模式”,用於更改誰可以對腳本執行什麼操作。+x為所有使用者添加執行權限,這允許任何人運行該腳本,就好像它是任何其他程式一樣。我不會詳細列出所有不同權限的含義,但是這個問題很好地總結了它們。之後,您可以輸入:

sudo ./script.sh

不要忘記 ./ 部分,並且 .、/ 和 s 之間不要留任何空格。該sudo命令將以 root 權限運行./script.sh,因此需要您的密碼(當然,您必須是系統管理員)。

答案2

在 Windows 世界中稱為「批次」文件,在 *NIX 世界中稱為「腳本」。在大多數情況下,腳本是一個包含多個命令或以特定方式排列的命令的檔案。以下是您應該了解的幾件事:

基本結構

通常你會看到這樣的東西:

#!/bin/sh
# Comments 
printf "Hello world"

第一行指定解釋器(通常稱為shebang行),第二行是註解(後面的任何內容#都不會被解釋,只是純文字),第三行是實際命令

在終端機中,您可以在沒有 shebang 行的情況下呼叫檔案。這將導致腳本被當前的 shell(又稱命令解釋器)讀取和解釋。例如,我正在運行mkshshell。我指定#!/bin/sh它將由 Ubuntu 的預設 shell - 運行dash。每個 shell 都有一些關於其命令語法的細節,因此您必須相應地自訂您的腳本。

編寫腳本

這必須在文字編輯器中完成,但您也可以在 LibreOffice Writer 中編寫,然後以純文字格式儲存。就我個人而言,我只使用命令列文字編輯器(nano大部分或vim);這裡的類比是editWindows 7 之前的 Windows 版本。

檔案名稱和副檔名在 *NIX 系統上並不重要,因為系統會讀取檔案的前幾個位元組來確定其類型。我養成了添加.sh擴展的習慣,但實際上 - 這是沒有必要的。

使腳本可執行

這是使用chmod 755 scriptName.sh命令製作的。這意味著所有者(您)對所有者群組中的使用者(例如檔案所有者可以是,因此如果您屬於群組,則可以讀取和執行該檔案)以及其他任何人的read-write-execute權限。永遠不要寫權限給別人!如果您擁有超級使用者權限,可能會導致一些壞的情況(也就是說您可能會被駭客攻擊,惡意使用者會更改您的腳本,以便它仍然保留您的個人資訊)。read-executeadminadminread-execute

運行腳本

您始終可以透過導覽至終端中的腳本位置並鍵入 來執行腳本./scriptName

要在任何地方執行任何命令(包括腳本),它們必須儲存在包含在變數中的系統上的某個位置$PATH。這就是我的意思:

$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/home/xieerqi/bin

$PATH變數告訴我,如果腳本或可執行二進位檔案位於/usr/local/sbin/usr/local/bin或任何其他目錄中,我只需將其鍵入終端即可執行該命令。

現在,對於您自己的腳本,您應該建立bin資料夾,並將腳本儲存在其中。如果您使用的bash設定.profile檔包含以下行:

# set PATH so it includes user's private bin if it exists
#if [ -d "$HOME/bin" ] ; then
#    PATH="$HOME/bin:$PATH"
#fi

如果您取消註釋(刪除#)最後三行(從iffi),您的個人bin資料夾將包含在$PATH變數中。

相關內容