一般的なテキスト バッチ コマンド ファイルを作成し、その後使用するにはどうすればよいですか?
私が話しているのは、以下のコマンドを含むファイルです。
sudo -i
sudo apt-get update
sudo apt-get upgrade
sudo apt-get autoremove
sudo apt-get autoclean
sudo apt-get check
exit
Leafpad で書けると思うんですが…
どこに保存すればいいですか?
どの形式ですか? 名前と拡張子はどれですか?
その後、LXTerminal セッションで 1 つの命令のみを使用して、これを使用するにはどうすればよいですか (理想的には、システムの起動時に毎回自動的に使用する方法がある場合)?
お時間をいただきありがとうございました!
答え1
Unix のような世界には「バッチ」ファイルはありません。「she-bangs」を含むスクリプトを使用します。このようなスクリプトを作成するには、テキスト エディター (Leafpad など) を開いて、次のような行から始めます。
#!/path/to/interpreter
スクリプトを解釈するために使用されるバイナリの場所はどこに/path/to/interpreter
ありますか。Linux では通常、古き良き Bourne Shell の「進化版」である「bash」(Bourne Again 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
実行される./script.sh
ため、パスワードが必要になります (もちろん、システム管理者である必要があります)。
答え2
Windows の世界では「バッチ」ファイルと呼ばれているものは、*NIX の世界では「スクリプト」と呼ばれます。ほとんどの場合、スクリプトは複数のコマンドまたは特定の方法で配置されたコマンドを含むファイルです。ここで知っておくべきことがいくつかあります。
基本構造
通常は次のようなものが表示されます。
#!/bin/sh
# Comments
printf "Hello world"
最初の行はインタープリター(一般的には行と呼ばれますshebang
)を指定し、2番目はコメント(それ以降は#
解釈されず、プレーンテキストのみ)、3番目は実際のコマンドです。
ターミナルでは、シェバン行なしでファイルを呼び出すことができます。これにより、スクリプトが現在のシェル (コマンド インタープリタとも呼ばれます) によって読み取られ、解釈されます。たとえば、私はシェルを実行しています。Ubuntuのデフォルト シェル - によって実行されるようにmksh
指定します。すべてのシェルにはコマンドの構文に関する特定の仕様があるため、それに応じてスクリプトを調整する必要があります。#!/bin/sh
dash
スクリプトを書く
これはテキスト エディターで行う必要がありますが、LibreOffice Writer で記述してプレーン テキストで保存することもできます。個人的には、コマンド ライン テキスト エディターを (nano
ほとんどの場合vim
) 使用しています。ここでの類似点は、edit
Windows 7 より前のバージョンの Windows です。
*NIX システムではファイル名と拡張子は重要ではありません。システムはファイルの最初の数バイトを読み取ってその種類を判断するからです。私は.sh
拡張子を追加する習慣がついてしまいましたが、実際は不要です。
スクリプトを実行可能にする
これはコマンドを使用して作成されますchmod 755 scriptName.sh
。これは、read-write-execute
所有者 (あなた)、read-execute
所有者のグループに属するユーザー (たとえば、ファイルの所有者は である可能性があるadmin
ため、グループに属している場合はadmin
、ファイルを読み取って実行できます)、およびread-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
最後の 3 行 ( からまで)#
の前のコメントを解除 ( を削除) すると、個人用フォルダーが変数に含められます。if
fi
bin
$PATH