不惑にしてまだ何者でもない者のブログ

Arduino関連、Raspberry Pi関連、プログラミング学習

LinuCレベル1取得に向け勉強中:第6章 シェルおよびスクリプト

2020-10-08 13:56:06 | LinuC
LinuCレベル1合格教本で、勉強を進める。
今回は、第6章 シェルおよびスクリプトである。


シェル環境のカスタマイズ



シェル変数環境変数
設定変数名=値export 変数名もしくはexport 変数名=値
一覧表示setenv
削除unset 変数名unset 変数名

エイリアスの設定

  • alias [エイリアス名='実行内容']:エイリアスの定義・確認
    • エイリアスを無効にして実行するには、先頭に「\」を付ける。
  • unalias エイリアス名:エイリアスの解除

コマンドの連続実行

  • command1; command2:command1に続いてcommand2を常に実行
  • command1 && command2:command1が成功したらcommand2を実行
  • command1 || command2:command1が失敗したらcommand2を実行

bashシェルの環境設定


全員が参照ユーザー個別で参照
ログイン時に読み込み/etc/profile
  1. ~/.bash_profile
  2. ~/.bash_login
  3. ~/.profile
bash起動時に読み込み/etc/bash.bashrc(CentOS)
/etc/bashrc(Debian)
~/.bashrc
ログアウト時に読み込み
-
~/.bash_logout

  • cat .bashrc:エイリアスの確認
  • vi .bashrc:エイリアスの設定
  • set -o:オプション設定の状況確認
  • set +/-o オプション名:bashシェルのオプション指定
    +:オプションを無効化
    -:オプションを有効化

シェルスクリプト

シェルスクリプトの基本的な書き方

  • シェルスクリプトを実行するときの構文
    • bash シェルスクリプト名
    • source シェルスクリプト名
    • . シェルスクリプト名
    • ./シェルスクリプト名
  • スクリプトが格納されているディレクトリを$PATHに追加する
    • $PATH=PATH:/ディレクトリ名
  • シバン(shebang)行でシェルを指定。
    • #!/bin/bash

変数の利用


主な特殊変数
変数表示するもの
$0スクリプトファイル名
$1,$2,...引数($1は1つめの引数、$2は2つめの引数...)
$@引数すべてをスペースで区切って出力
$*引数すべてを$IFSで指定された値で区切って出力
$#引数の数
$?直前の処理の成否(成功は0、失敗は0以外)
$$シェルのPID

制御構文の利用

主な制御構文
制御構文意味
if条件分岐
case条件分岐(多岐分岐)
for繰り返し(値リスト)
while繰り返し(条件指定)
  • if文の書式
if 条件式1
then
 条件式1に合致した場合の処理
elif 条件式2
 条件式2に合致した場合の処理
else
 どの条件にも合致しなかった場合の処理
fi

ファイル・ディレクトリに関する条件式
条件式意味
-f ファイル名ファイルが存在
-d ディレクトリ名ディレクトリが存在
-e ファイル/ディレクトリ名ファイル/ディレクトリが存在
-r ファイル/ディレクトリ名ファイル/ディレクトリが読み取り可能

!条件式条件を満たさない(NOT) 条件式1 -a 条件式2条件1と条件2の両方を満たす(AND) 条件式1 -o 条件式2条件1と条件2のどちらかを満たす(OR) -n 文字列文字列の長さが0ではない(文字列が存在する)
数値の条件式
条件式意味
値1 -eq 値2値1と値2が等しい
値1 -ne 値2値1と値2が等しくない
値1 -lt 値2値1が値2より小さい(値2を含まない)
値1 -le 値2値1が値2以下(値2を含む)
値1 -gt 値2値1が値2より大きい(値2を含まない)
値1 -ge 値2値1が値2以上(値2を含む)

その他論理式など
条件式意味
!条件式条件を満たさない(NOT)
条件式1 -a 条件式2条件1と条件2の両方を満たす(AND)
条件式1 -o 条件式2条件1と条件2のどちらかを満たす(OR)
-n 文字列文字列の長さが0ではない(文字列が存在する)

  • exit 終了ステータス:引数で指定した終了ステータスを格納し、その次の処理の際に利用できる。

四則演算とcase文の利用

  • expr 数値1 演算子 数値2:四則演算の結果を出力!条件式条件を満たさない(NOT) 条件式1 -a 条件式2条件1と条件2の両方を満たす(AND) 条件式1 -o 条件式2条件1と条件2のどちらかを満たす(OR) -n 文字列文字列の長さが0ではない(文字列が存在する)
    +:足し算、-:引き算、\*:掛け算、/:割り算、%:剰余
  • case文の書式
case 変数名 in
 値1) 値1だった場合の処理;;
 ・・・
 *) どの値にも合致しなかった場合の処理;;
esac

繰り返し構文

  • for文の書式
for 変数名 in 値1 値2・・・(値リスト)
do
 繰り返す処理
done
  • while文の書式
while 条件式
do
 繰り返す処理
done

関数の利用

  • function文の書式
function 関数名() {
 処理
}

スクリプトのデバッグ

bash実行時にデバッグ情報を出力するオプション
オプション意味
-v実行するコマンドを出力
-x実行するコマンドや変数への代入など、処理内容を出力
  • シバンの箇所にオプションを指定すると、それ以降は常にデバッグ情報を出力するようになる。
  • setコマンドのオプションで囲む(set -x; ;set +x)ことにより、その部分だけデバッグ情報を出力することができる。

trapコマンドの利用

  • trap "処理" シグナル:シグナルが送られた場合、指定した処理を実行

感想

内容として難しいわけではないが、結局覚えていられるかが問題。
あと、途中途中で出力メッセージに使われている英語が気になる。
  • echo $0 is necessary 2 arguments
    → echo $0 requires 2 arguments
  • echo $2 is exists
    → echo $2 exists

コメント    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« paizaラーニング『Web技術入... | トップ | LinuCレベル1取得に向け勉強... »
最新の画像もっと見る

コメントを投稿

LinuC」カテゴリの最新記事