【初心者向け】Bash初心者が覚えておくべきコマンドをまとめてみた

Linuxと電子部品と音楽のブログ

【初心者向け】Bash初心者が覚えておくべきコマンドをまとめてみた

Caramel OS

Linuxをコマンドで管理したいけどよくわからない、簡単に書けるものからBashを勉強したい!
シェルスクリプトって何?どうやったらLinuxのプログラムが作れるの?
どのプログラミング言語も難しすぎる!
そんな人はこのサイトを読めばBashの基本的なスクリプトの書き方が一通り身につきます。

超初心者でもわかりやすい事を重要にしております。
一定のスキルがある方は他のサイトを見ることをお勧めします (このページを見てくださいお願いします)

宣伝タイム! (すみません)
管理人はLinuxディストリビューションを自分で作って公開しています
是非、ダウンロードをお願いします!

Bashを始めるなら最初に知るべきこと


Hello world!を書く前から覚えておくべき内容が2つあります。

#!/bin/bash
#1行目に書いてある内容はBashのスクリプトを書く時には絶対書いてください。
#シャープが書いてある場合は、そこから行の最後までがコメントになります。
#コメントに書いてある内容はプログラムの処理には影響を与えません。

1行目の内容はとにかく暗記!暗記!暗記!これだけは覚えてくださいすみません…
とにかく、どのプログラムを書く際にも1行目はこの文章を書くこと!
処理内容は2行目からです。
コメントに関しては簡単ですね。

まずはHello world!から


echoコマンドを利用してコンソールに出力できます。

echo "Hello world!" #正常に表示できます
echo Hello world!   #これだと"Hello"しか出力できません

はい、これだけです。簡単です。
ターミナルにHello world!と出力されます。なんて簡単!
「” (ダブルクォーテーション)」は一単語しか出力しない場合は不要ですが、クセとして付けるようにしましょう。

変数を使えるようにしよう


どの言語においても変数を利用しないとそれらしいプログラムは書けないので変数を使えるようにします。
C言語などとは違い、変数の準備は不要です。
ifコマンドを使用して条件分岐を行います。

hoge=1 #これで変数を作ったことになります
hogehoge="Hello world!" #これも変数です
hogehogehoge = 1 #間にスペースがあるのはエラーになります、よってこれはNG
echo "$hogehoge" #このように出力もできます

たったこれだけです。やはり簡単!
変数hogeとhogehogeを準備してhogehogeの中身を表示します。

条件分岐をしよう


変数が作れたら次は条件分岐をしたくなりますよね?ね?(威圧)
というわけで、条件で処理を分岐できるようにします。

hoge=0
if [ "x$hoge" = "x0" ];then
    echo "hogeの中身は0です"
elif [ "x$hoge" = "$1" ];then
    echo "hogeの中身は1です"
else
    echo "hogeの中身は$hogeです"
fi

if["x$hoge"="x0"];then  #単語ごとにスペースがないとエラーになります!
if[ $hoge = 0 ];then  #これでも処理はできますが非推奨です

これに対する実行結果はこうなります。

hogeの中身は0です

ちょっとコードの文字数が増えてそれらしくなってきましたね。
単語ごとに絶対にスペースを挟むのがポイントです。
まずは、一行目で変数hogeを用意します。
次に、ifという命令を使用して条件分岐を行っています。
書式は、

if [ "x$変数名" = "x数値や文字" ];then
    条件が成立した時の処理
elif [ 1行目のifが成立しなかったときの式 ];then
    1行目の条件が成立せず、3行目の条件が成立した時の処理
else
    すべての条件がそろわなかったときの処理
fi

です。
elifは省略することもできますし追加することもできます。
elseは省略することもできます。
if命令にはもっと出来ることが沢山あるのですが、語りすぎると初心者向けという観点から外れてしまうのでこれ以上の事は各自で調べてみてください…

入力をできるようにしよう


これで一応最低限の処理はできるようになったので、処理の内容をユーザーが選べるようにコンピュータに入力待ちをさせられるようにします。
readコマンドを使って入力させられます。
先ほどのifで頭が混乱しかけた方もいると思いますので(私です)簡単に書きます。

echo -n "入力:"  #echoコマンドに「-n」を付属させると改行なしで文字を出力できます
read hoge  #入力待ちさせると共に変数の準備もしてくれます
echo "$hogeを入力しました。"  #「$」を入れないと、出力に「read」とそのまま出てしまいます

はい!これだけです!ドヤッ!()
ポイントは、変数の中身を表示させたい場合には、「$」を変数名の先頭に置くことです。


変数の計算をしよう

ここで繰り返し(ループ)命令を紹介したいところなのですが、コンピュータが何かものを数える時には専用の箱が必要になります。(変数の事です
なので変数の中の数値を数学式のようなもので変えたいと思います。

hoge=1  #変数hogeは1です
hoge=2  #変数hogeの値を2に変更しました
ans=$((100-$hoge))  #変数ansの値を計算します (100-2)
echo "$ans"  #98と表示されます

やっぱりBashって超簡単!
ポイントは、3行目の式を描くところは「$((式))」となっている所と、変数名の先頭に「$」を付けるところです。

四則計算すべての方法を載せておきます。

+  足し算
-  引き算
*  掛け算
/  割り算
** 累乗(例:3**2 ⇒ 9)
%  剰余(割り算の余り)

簡単な繰り返しをしよう

繰り返しを一切使わないプログラムも存在しますが、使えた方がいいので紹介します。
Bashの繰り返し命令には様々なものがありますが、広く使えるfor命令を使うのがおすすめです。

for hoge in {1..9};do
    echo "$hoge回目のループ"
done

このコードでは1~9をコンピュータが数えてターミナルに出力します。

ループが終わるとdoneの下の行に処理が移ります。

条件で繰り返したい場合はこうします。

for ((hoge=0;hoge<5;hoge++));do  #hoge++はhogeの値を1増やします
    echo "$hoge回目のループ"
done
echo "hogeが5に達したので終了します"

このような感じになります。
ちなみに、変数の中身を1増やす処理を専門用語で「インクリメント」といいます。
1行目の命令を解説すると、

for ((変数の初期化;ループ条件;ループが返ってきたときの処理));do

という具合です。「;」は全てセミコロンです。コロン「:」ではありません。

もっと簡単に書きたい場合は、

hoge=0
for hoge<5;do
    echo "$hoge回目のループ"
    hoge=$((hoge+=1))
done
echo "hogeが5に達したので終了します"

とすることもできます。していることは全く同じです。
hoge=$((hoge+=1))はhoge++と同じ処理です。

ここまで読むのに大分疲れたと思いますが、あともう少しです!


無限ループとその中断をしよう

Bashで同じ処理を無限に繰り返してほしい時には次のようなことができます。
whileという命令を使用します。

while true;do
    処理
done

while :;do
    処理
done

とっても簡潔で見ていて清々しい!
ちなみにBashにおいてコロン「:」は、trueを表します。無条件で式を成立させたいときに使います。
ですが、本当に無限に処理が続いてしまうとその次の処理に移れなくなってしまうので同時にbreakという命令も覚えていただきます。

hoge=0
while true;do
    echo "hogeの値は$hogeです"
    if [ "x$hoge" = "x5" ];do
        break
    fi
    hoge=$((hoge+=1))
done
echo "hogeの値が5になったので処理を終了します"

こんな感じで少しコードの行数が増えてしまいました…
理論的に解説するとwhile true;doで無限ループを開始してその中にif命令を用意しておき、その命令の内容に従ってbreak命令でループから脱出するという流れです。

本当はもっと紹介したい命令が沢山あるのですがLinuxもBashも入門という方はひとまずここまで覚えて頂ければ完璧です!Excellent!
お疲れ様でした!


Bashの旅はここから始まる

ここまで読んでくださった皆様お疲れさまでした!
皆様に感謝感謝です!
ですが…これは全てBashの基礎のうちの基礎であり、プログラムはこの基本的な処理をいくつも重ねていくことによって成り立っていきます。
私はこのブログを通して皆様の楽しいLinuxライフを陰ながら応援しております!
ありがとうございました!

 

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

Please note that posts that do not contain Japanese are ignored. (Spam measures) (コメントには日本語を含めてください)