初心者向けのシェルスクリプト–LinuxでBashスクリプトを作成する方法
シェルスクリプトは、Linuxのプロセス自動化の重要な部分です。スクリプトは、一連のコマンドをファイルに書き込んでから実行するのに役立ちます。
これにより、特定のコマンドを何度も作成する必要がなくなるため、時間を節約できます。毎日のタスクを効率的に実行でき、自動実行のスケジュールを設定することもできます。
新しいセッションの起動時に特定のメッセージを表示したり、特定の環境変数を設定したりするなど、起動時に実行する特定のスクリプトを設定することもできます。
スクリプトのアプリケーションと使用法はたくさんあるので、詳しく見ていきましょう。
この記事では、次のことを学びます。
- bashシェルとは何ですか?
- bashスクリプトとは何ですか?どのように識別しますか?
- 最初のbashスクリプトを作成して実行する方法。
- シェルスクリプトの基本的な構文。
- システムのスケジュールされたスクリプトを確認する方法。
- cronジョブを介してスケジュールすることでスクリプトを自動化する方法。
学ぶための最良の方法は練習することです。 Replitを使用してフォローすることを強くお勧めします。実行中のLinuxシェルに数分以内にアクセスできます。
Bashシェルの概要
Linuxコマンドラインは、シェルと呼ばれるプログラムによって提供されます。何年にもわたって、シェルプログラムはさまざまなオプションに対応するように進化してきました。
さまざまなユーザーがさまざまなシェルを使用するように構成できます。しかし、ほとんどのユーザーは、現在のデフォルトのシェルを使い続けることを好みます。多くのLinuxディストリビューションのデフォルトのシェルは、GNU Bourne-Again Shell(bash)です。 BashはBourneシェル( sh
)に引き継がれます 。
シェルを最初に起動すると、 .bashrc
にある起動スクリプトが使用されます。 または.bash_profile
シェルの動作をカスタマイズできるファイル。
シェルをインタラクティブに使用すると、 $
が表示されます ユーザーからのコマンドを待っているとき。これはシェルプロンプトと呼ばれます。
[username @ host〜] $
シェルがrootとして実行されている場合、プロンプトは#
に変更されます 。スーパーユーザーシェルプロンプトは次のようになります:
[root @ host〜]#
Bashは、GUIで効率的に実行するのが難しい特定の操作を単純化できるため、非常に強力です。ほとんどのサーバーにはGUIがないことを忘れないでください。コマンドラインインターフェイス(CLI)の機能の使い方を学ぶのが最善です。
Bashスクリプトとは何ですか?
bashスクリプトは、ファイルに書き込まれる一連のコマンドです。これらは、bashプログラムによって読み取られて実行されます。プログラムは行ごとに実行されます。
たとえば、コマンドラインを使用して、特定のパスに移動し、フォルダーを作成して、その中にプロセスを生成できます。
コマンドをbashスクリプトに保存して実行することで、同じ一連の手順を実行できます。スクリプトは何度でも実行できます。
Bashスクリプトをどのように識別しますか?
.sh
のファイル拡張子 。
命名規則により、bashスクリプトは .sh
で終わります。 。ただし、bashスクリプトは、 sh
がなくても完全に正常に実行できます。 拡大。
スクリプトもshebang
で識別されます 。シバンはbash#
の組み合わせです およびbang!
bashシェルパスをたどりました。これはスクリプトの最初の行です。 Shebangは、bashシェルを介して実行するようにシェルに指示します。 Shebangは、bashインタープリターへの絶対的な道です。
以下は、シバンステートメントの例です。
#! /bin/bash
bashプログラムのパスはさまざまです。後でそれを識別する方法を説明します。
スクリプトには、スクリプトを実行するユーザーに対する実行権限があります。
実行権はx
で表されます 。以下の例では、私のユーザーは rwx
を持っています (読み取り、書き込み、実行)ファイル test_script.sh
の権限
実行可能スクリプトは、他のファイルやフォルダとは異なる色で表示されます。
私の場合、実行権限のあるスクリプトは緑色で表示されます。
Hello World
を出力する簡単なスクリプトをbashで作成しましょう 。
hello_world.shという名前のファイルを作成します
touch hello_world.sh
bashシェルへのパスを見つけます。
which bash
私の場合、パスは / usr / bin / bash
です。 これをシバンに含めます。
echo
コンソールへの「HelloWorld」。
スクリプトは次のようになります:
#! usr/bin/bash
echo "Hello World"
ファイルhello_world.sh
を編集します 選択したテキストエディタを使用して、上記の行を追加します。
次のコマンドを使用して、ファイルのアクセス許可を変更し、スクリプトの実行を許可します。
chmod u+x hello_world.sh
chmod
特定のユーザーのファイルの既存の権限を変更します。 + x
を追加します ユーザーu
へ 。
スクリプトは次の方法で実行できます。
./ hello_world.sh
bash hello_world.sh
。
出力は次のとおりです:
Bashスクリプトの基本構文
他のプログラミング言語と同様に、bashスクリプトは一連のルールに従って、コンピューターが理解できるプログラムを作成します。このセクションでは、bashスクリプトの構文について学習します。
構文variable_name=value
を使用して、変数を定義できます。 。変数の値を取得するには、 $
を追加します 変数の前。
#!/bin/bash
# A simple variable example
greeting=Hello
name=Tux
echo $greeting $name
タックスは、Linuxのマスコットであるペンギンの名前でもあります。
以下は、数学計算のためにbashでサポートされている演算子です。
オペレーター | 使用法 |
---|---|
+ | 追加 |
- | 減算 |
* | 乗算 |
/ | 分割 |
** | べき乗 |
% | モジュラス |
いくつかの例を実行してみましょう。
以下の構文を使用して、数式を計算して変数に格納することもできます。
var =$((expression))
例を試してみましょう。
#!/bin/bash
var=$((3+9))
echo $var
上記の方法を使用して分数が正しく計算されず、切り捨てられます。
10進計算の場合 、 bc
を使用できます 出力を特定の小数点以下の桁数にするコマンド。 bc
(Bash Calculator)は、特定の小数点以下の計算をサポートするコマンドライン計算機です。
echo "scale =2; 22/7" | bc
scale
出力に必要な小数点以下の桁数を定義します。
場合によっては、ユーザー入力を収集して関連する操作を実行する必要があります。
bashでは、 read
を使用してユーザー入力を受け取ることができます コマンド。
read variable_name
カスタムメッセージでユーザーにプロンプトを表示するには、 -p
を使用します フラグ。
read -p "Enter your age" variable_name
例:
#!/bin/bash
echo "Enter a numner"
read a
echo "Enter a numner"
read b
var=$((a+b))
echo $var
比較は、ステートメントが true
と評価されるかどうかを確認するために使用されます またはfalse
。以下に示す演算子を使用して、2つのステートメントを比較できます。
操作 | 構文 | 説明 |
---|---|---|
平等 | num1 -eq num2 | はnum1はnum2と同じです |
以上 | num1 -ge num2 | はnum1がnum2より大きい |
より大きい | num1 -gt num2 | はnum1がnum2より大きい |
以下 | num1 -le num2 | はnum1がnum2よりも小さい |
未満 | num1 -lt num2 | はnum1がnum2よりも小さい |
等しくない | num1 -ne num2 | はnum1がnum2と等しくない |
構文 :
if [ conditions ]
then
commands
fi
例 :
2つの数値を比較して、それらの関係を見つけましょう:
read x
read y
if [ $x -gt $y ]
then
echo X is greater than Y
elif [ $x -lt $y ]
then
echo X is less than Y
elif [ $x -eq $y ]
then
echo X is equal to Y
fi
出力:
条件付きステートメント(意思決定)
条件は、ブール式( true
に評価される式)です。 またはfalse
)。条件を確認するには、 if
を使用できます 、 if-else
、 if-elif-else
ネストされた条件。
条件文の構造は次のとおりです。
-
if ... then ... fi
ステートメント -
if ... then ... else ... fi
ステートメント -
if..elif..else..fi
-
if..then..else..if..then..fi..fi ..
(ネストされた条件文)
構文 :
if [[ condition ]]
then
statement
elif [[ condition ]]; then
statement
else
do this by default
fi
意味のある比較を作成するには、AND -a
を使用できます。 およびまたは-o
同様に。
次のステートメントは次のように解釈されます。Ifa
40より大きくb
6未満です。
if [$ a -gt 40 -a $ b -lt 6]
例 :辺の長さを読んで三角形のタイプを見つけましょう。
read a
read b
read c
if [ $a == $b -a $b == $c -a $a == $c ]
then
echo EQUILATERAL
elif [ $a == $b -o $b == $c -o $a == $c ]
then
echo ISOSCELES
else
echo SCALENE
fi
出力 :
テストケース#1
テストケース#2
テストケース#3
forループを使用すると、ステートメントを特定の回数実行できます。
数字でループする:
以下の例では、ループは5回繰り返されます。
#!/bin/bash
for i in {1..5}
do
echo $i
done
文字列でループする:
文字列をループすることもできます。
#!/bin/bash
for X in cyan magenta yellow
do
echo $X
done
whileループは条件をチェックし、条件が true
のままになるまでループします 。ループの実行を制御するためにカウンターをインクリメントするcounterステートメントを提供する必要があります。
以下の例では、((i + =1))
i
の値をインクリメントするcounterステートメントです 。
例:
#!/bin/bash
i=1
while [[ $i -le 10 ]] ; do
echo "$i"
(( i += 1 ))
done
ファイルsample_file.txt
があるとします。 以下に示すように:
ファイルを1行ずつ読み取り、出力を画面に印刷できます。
#!/bin/bash
LINE=1
while read -r CURRENT_LINE
do
echo "$LINE: $CURRENT_LINE"
((LINE++))
done < "sample_file.txt"
出力:
複雑なコマンドの出力をスクリプトに含める必要がある場合は、バックティック内にステートメントを記述できます。
構文:
var=`コマンド
`
例 : tmpfs
を使用してマウントポイントのリストの出力を取得するとします。 彼らの名前で。次のようなステートメントを作成できます。df-h | grep tmpfs
。
これをbashスクリプトに含めるために、バックティックで囲むことができます。
#!/bin/bash
var=`df -h | grep tmpfs`
echo $var
出力:
実行時にスクリプトに引数を与えることができます。
$ @
1から始まるパラメータの位置を表します。
#!/bin/bash
for x in $@
do
echo "Entered arg is $x"
done
次のように実行します:
./ script arg1 arg2
cronジョブを介してスケジュールすることでスクリプトを自動化する方法
Cronは、Unixライクなシステムに存在するジョブスケジューリングユーティリティです。毎日、毎週、毎月、または1日の特定の時間に実行するようにジョブをスケジュールできます。 Linuxでの自動化は、cronジョブに大きく依存しています。
cronをスケジュールするための構文は次のとおりです。
# Cron job example
* * * * * sh /path/to/script.sh
ここでは、 *
表現は、それぞれ分、時間、日、月、平日を表します。
以下は、cronジョブのスケジューリングの例です。
SCHEDULE | スケジュールされた値 |
---|---|
5 0 * 8 * | 8月の00:05。 |
5 4 * * 6 | 日曜日の04:05。 |
0 22 * * 1-5 | 月曜日から金曜日までの毎日22:00。 |
cronについて詳しくは、このブログ投稿をご覧ください。
crontabの使用
crontab -l </ code> 特定のユーザーに対してすでにスケジュールされているスクリプトを一覧表示します。
find
コマンドは、特定のパターンに基づいてファイルを見つけるのに役立ちます。ほとんどのスクリプトは.sh
で終わるため 、次のような検索スクリプトを使用できます:
find . -type f -name "*.sh"
どこで、
。コード> 現在のディレクトリを表します。それに応じてパスを変更できます。
-タイプf
探しているファイルタイプがテキストベースのファイルであることを示します。*。sh
.sh
で終わるすべてのファイルに一致するように指示します 。
findコマンドについて詳しく知りたい場合は、他の投稿を確認してください。
まとめ
このチュートリアルでは、シェルスクリプトの基本を学びました。意味のあるプログラムを書くのに役立つ例と構文を調べました。
このチュートリアルから学んだお気に入りのことは何ですか? Twitterで教えてください!
私の他の投稿はここで読むことができます。
macrovectorによって作成された作業ベクトル-www.freepik.com
-
Windows 10にBash(Linuxシェル)をインストールして使用する方法[チュートリアル]
WindowsでLinuxシェルを設定して使用する方法は次のとおりです– Linux用Windowsサブシステムを使用します ( WSL 。 このチュートリアルは、2020年以降の最新バージョンのWindows10を対象としています。古いソフトウェアを使用するべきではないため、古いバージョンのWindows10でWSLを使用する方法やWindows8/7 / XP/3.1の他の方法については説明しません。 Windowsを使用する必要がある場合は、セキュリティパッチをまだ受けているバージョンを使用してください! WSL は優れたツールであり、Linuxを離れたことがないかのよ
-
Windows 10 に Linux Bash シェルをインストールする方法
Bash Shell は、非常に長い間 Linux の一部であった単純なコマンドライン ユーティリティであり、現在、Microsoft はそれを Windows 10 に直接追加しています。これは、仮想マシンでも、コンテナーでも、Windows 用にコンパイルされたソフトウェアでもありません。代わりに、Linux ソフトウェアを実行するための完全な Windows サブシステムであり、Windows で Android アプリを実行するための Microsoft の廃止された Project Astoria に基づいています。 これで、デュアルモード オペレーティング システムとは何かがわか