読者です 読者をやめる 読者になる 読者になる

基本的に怠Diary

学習ログを残したい

シェルスクリプトで遊ぼう!

Ubuntu shell

なんも作る気起きないのでもう作らない。

飽きるまでこのUbuntuノートで遊ぶ。

それの第一弾。





シェルスクリプトで遊ぶ時獄編
0.始める前に



シェルスクリプト今回が初めてなので本読みながら作成しています。

私が使っているのは新しいLinuxの教科書です。

Amazon CAPTCHA


まあやる気さえあれば本なんてなくてもいいですよ。

さて作業スペースを用意しなければならないですね。

私は

mkdir ~/study
cd ~/study

でhome直下に作成しました。

ここから始めていきます。

1.はろわ!

アルティメットめちゃんこ天才プログラマも、そのへんのプログラマ

多分これから初めてます。

まずはvimで作成!

vim hello.sh







次にhello.shの中に以下を記述!

#!/bin/bash
echo hello world


して

./hello.sh

を実行すると実行できません。

だって実行権限ないんだもん!


chmod +x ./hello.sh

を叩いて再び実行すると

hello world




とでます! はいはいすごいすごい。

ちなみにchmodとはファイルの権限を操作するコマンドで、

x(実行)権限を+してるわけです。

以後権限を与えることを忘れてはいけないです。



#!/bin/bash
え、なにこいつ

よく調べたり本見たりするとこいつはどこのbashを使うのかを明示的に

書いてるやつで、これ指定しないと知らないシェルが動いちゃう可能性があるので

しっかりと使いたいシェルを指定しましょう。



2.1から100!

クソみたいな茶番はまだ続きます。

ぼくしってる! forぶんとかwhileぶんでひょうじするんだろ!



#!/bin/bash
seq 1 100

は?







3.lsとgrep足したようななにか


指定したパスを渡してそのパス下をlsしてgrepする的なやつ

名前は適当に lgr.sh

#!/bin/bash↲
filePath=$1↲
regax=$2↲
if [ -d "$filePath" ]; then↲
    if [ -n "$regax" ]; then↲
        ls "$filePath" |grep "$regax"↲
    else↲
        ls "$filePath"↲
    fi↲
else↲
    echo "ファイルパスが無効です。"↲
fi↲

んでこいつを作った後いつものchmodのコマンドを叩いて

./lgre.sh /var ^b
的なことすると先頭がbの/var直下のファイル名を表示してくれますよ。

ここから説明

まず$1$2の説明ですが、今回でいえば

$1 が /var で
$2 が ^b  になります。

コマンドライン引数みたいなもん。超楽なんですけど〜。

んで-nは空白でない場合真の結果を返すようです。

後は条件ごとにコマンドわけてます。





わりと楽しかったです。

次回以降はfunction分けて結構大きめなスクリプト組めたらいいなーって思ってます。