【LPIC1対策(5)】主題105:シェル、スクリプト、およびデータ管理

スポンサーリンク


本記事ではLPIC1(Ver4.0)102試験に合格するため『主題105:シェル、スクリプト、およびデータ管理』について自分が勉強したことをまとめました。

LPIC1(Ver4.0)102試験の出題範囲はLPICのサイト(102試験範囲)に掲示されており、以下の様になっています。




目次

目次



事前準備

1.Linuxの環境を用意する


LPICを勉強する上でLinuxの環境で実際に動かしてみるとよいです。Windows上でも仮想Linux環境を構築すれば簡単にLinuxを動かすことができます。以下にWindows上でubuntuを構築する方法をまとめました。参考にしてください。


Windows上でubuntuを構築する方法

2.テキストを購入する


Linux教科書 LPICレベル1 Version4.0対応』を参考にしながら勉強しました。このテキストにそって重要なところのみピックアップしてまとめているので大元はこちらのテキストを参照してください。



(105.1)シェル環境のカスタマイズと使用



コマンドの実行結果をシェル変数に代入する方法

【コマンド実行結果をシェル変数に代入】
> シェル変数=$(コマンド)
> シェル変数=コマンド



シェル変数および環境変数に関するコマンド

シェル関数は設定されたシェルだけが使用する変数であり、子プロセスには引き継がれない
一方、環境変数はシェル、プログラム、子プロセスに引き継がれる。
シェル変数は「変数名=値」で指定できる。
一方、環境変数は「exportコマンド」や「declareコマンド」で指定をすることができる。
現状のシェル変数一覧は「setコマンド」や「declareコマンド(引数なし)」で確認できる。
現状の環境変数一覧は「envコマンド」や「printenvコマンド」で確認できる。


exportコマンド(環境変数を定義)

【環境変数を定義】
> export [オプション]

コマンド詳細
https://webkaru.net/linux/export-command/

補足
・シェル変数を残して、環境変数のみ消す
⇒「export -n シェル変数」


envコマンド(環境を変更)

【環境を変更】
> env [オプション] [変数名=値]

コマンド詳細
http://itpro.nikkeibp.co.jp/article/COLUMN/20131226/527382/?rt=nocnt


printenvコマンド(環境変数を表示)

【環境変数を表示】
> printenv [オプション] [変数名]

コマンド詳細
http://itpro.nikkeibp.co.jp/article/COLUMN/20071205/288821/


setコマンド(シェルのオプションを設定)

【シェルのオプションを設定】
> set [-o][+o] [オプション]

コマンド詳細
http://itpro.nikkeibp.co.jp/article/COLUMN/20060227/230881/

補足
・引数なしsetコマンドでシェル変数と環境変数の両方の一覧を表示
・-oでオプション有効
・+oでオプション無効



シェル関数に関するコマンド

シェル内のすべての変数と関数を表示するのは「setコマンド」、「declareコマンド(引数なし)」


functionコマンド(シェル関数を定義)

【シェル関数を定義】
> function 関数名() { コマンド; }
> function 関数名 { コマンド; }
> 関数名() { コマンド; }

コマンド詳細
http://itpro.nikkeibp.co.jp/article/COLUMN/20140317/544003/

補足
・引数は「$1」,「$2」,・・・という変数名に格納
・「$0」にはスクリプト名が入っている。引数は$1からスタートすることに注意
・戻り値は「$?」という変数名にに格納
・引数の数は「$#」
・すべての引数「$*」
・シェルのPID「$$」


declare -f コマンド(シェル関数を表示)

【シェル関数を表示】
> declare -f [関数名]

コマンド詳細
https://www.ibm.com/support/knowledgecenter/ja/ssw_ibm_i_72/rzahz/rzahzdeclare.htm

補足
・関数名は既存の変数名および関数名と重複しないこと
・変数の属性や値は表示可能 関数の定義はできない


unsetコマンド(関数を削除)

【関数を削除】
> unset 関数名

コマンド詳細
http://itpro.nikkeibp.co.jp/article/COLUMN/20060227/230919/



エイリアスに関するコマンド


aliasコマンド(エイリアスの登録)

【エイリアスの登録】
> alias [エイリアス名 = コマンド]

コマンド詳細
http://itpro.nikkeibp.co.jp/article/COLUMN/20060227/230707/


unaliasコマンド(エイリアスの削除)

【エイリアスの削除】
> unalias エイリアス名

コマンド詳細
http://itpro.nikkeibp.co.jp/article/COLUMN/20060227/230915/


\コマンド(エイリアスの設定無視)

【エイリアスの設定無視】
> \ エイリアス名

補足
・エイリアスを無視してそのままの変数名を指定する



bashの設定ファイルと起動する順序

代表的なbash設定ファイルは以下

補足
・ログイン時には/etc/profile⇒bash起動し、/etc/bash.bashrcから設定
・対話型シェル時(非ログインシェル)には~/.bashrcから設定となる
・/etc/profileなどのbash起動時にファイルがなくても、エラーにはならない。


ログイン時の起動順序

ログイン
⇒/etc/profile
⇒(/etc/bash.bashrc)
⇒~/.bash_profile
⇒~/.bash_login
⇒~/.profile
※/etc/bash.bashrcはディストリビューションによっては使えないものあり


コマンドラインから別シェル起動(非ログイン時)の起動順序

シェル起動
⇒~/.bashrc



(105.2)簡単なスクリプトのカスタマイズまたは作成



シェルスクリプトの実行権について

・シェルスクリプトは読み込み権がないと実行できない
・ただし、バイナリ形式なら実行権のみでOK
・「bash シェルスクリプト」なら、子シェルにて実行するため、実行権がなくても読み取りのみあれば実行できる



スクリプト実行に関するコマンド


sourceコマンド(スクリプト実行)

【スクリプト実行】
> source ファイル名もしくはスクリプト名 [引数1] [引数2]・・・
> ./ファイルもしくはスクリプト [引数1] [引数2]・・・

コマンド詳細
http://www.atmarkit.co.jp/ait/articles/1712/21/news015.html


execコマンド(シェルを引き継いでコマンド実行)

【シェルを引き継いでコマンド実行】
> exec コマンド

コマンド詳細
http://itpro.nikkeibp.co.jp/article/COLUMN/20060227/230761/



シェルスクリプトの制御構造


testコマンド(条件式の真偽を判定)

【条件式の真偽を判定】
> test 条件式
> [条件式]

オプション

コマンド詳細
http://itpro.nikkeibp.co.jp/article/COLUMN/20060227/230901/

補足
・数値のテストでは以下を使用
A -eq B : A=Bであれば真
A -ge B : A>=Bであれば真
A -gt B : A>Bであれば真
A -le B : A<=Bであれば真
A -lt B : A<Bであれば真
A -ne B : A!=Bであれば真
=や!=も使える


readコマンド(ファイルの読み取り)

【ファイルの読み取り】
> read [オプション] [ファイル名]

コマンド詳細
http://itpro.nikkeibp.co.jp/article/COLUMN/20060227/230866/

補足
・「-n」オプション:標準出力からの入力を待ち受ける
・変数には$がつかないことに注意
・readの引数からあふれた分は最後にすべて格納される

【引数あふれの例】
> read a b c < A B C D E F

としたら、a=”A”,b=”B”,c=”C D E F”


shiftコマンド(引数を1ずらす)

【引数を1ずらす】
> shift [N]

コマンド詳細
http://itpro.nikkeibp.co.jp/article/COLUMN/20060227/230882/?rt=nocnt

補足
・$N番目の引数を$N-1にずらす
・ただし、$0はずらす対象にはならない
・引数の数「$#」と合わせて「shift $#」として使われることが多い


seqコマンド(連続した数字列の生成)

連続した数字の列を出力・表示するコマンド

【連続した数字列の生成】
> seq [オプション] [初期値 [増分]] 終了値

コマンド詳細
https://webkaru.net/linux/seq-command/

補足
・初期値から終了値まで増分ずつ増加させた数字の列を作成
・初期値を指定しないと、1から終了値まで増分1での数字列作成
・増分を指定しないと、初期値から終了値までの増分1での数字列作成


letコマンド(計算式を評価)

【計算式を評価】
> let 変数=算術式

コマンド詳細
http://www.atmarkit.co.jp/ait/articles/1801/05/news009.html

補足
・整数のみ使用可能(小数点は使用するなら「bcコマンド」)


if文(条件分岐)

【if文(条件分岐)】
if 条件式
    then
        (条件式が真のときの処理)
    else
        (条件式が偽のときの処理)
fi


case文(条件分岐)

【case文(条件分岐)】
case スイッチ値 in
    スイッチ値1)
        (スイッチ値=スイッチ値1のときの処理);;
    スイッチ値2)
        (スイッチ値=スイッチ値2のときの処理);;
    :
    :
esac

補足
・各スイッチ処理の最後には「;;」をつける


for文(繰り返し処理)

【for文(繰り返し処理)】
for 変数名 in 変数名に代入するリスト
do
    (処理)
done

補足
・変数名には「$」はつけない


while文(繰り返し処理)

【while文(繰り返し処理)】
while 条件文
do
    (処理)
done



スクリプトインタプリタの設定

スクリプトを解釈して実行するプログラムの設定を行う
スクリプトの先頭に#!でシェルの種類を指定すること
例えば、bashシェルなら先頭に「#!/bin/bash」をつける


子シェルを生成してスクリプトを実行する

【子シェルでスクリプト実行】
$bash スクリプト


シェル内部でスクリプトを実行する

【シェル内部でスクリプト実行】
$ . スクリプト



(105.3)SQLデータ管理



代表的なSQLコマンド

代表的なSQLコマンドと内容は以下


SELECT文(テーブル参照)

【テーブル参照】
> SELECT 列名[,列名…] FROM テーブル名;


WHERE句(テーブル検索)

【テーブル検索】
> SELECT 列名[,列名…] FROM テーブル名 WHERE 検索条件;


LIMIT句(オフセットと行数指定)

【オフセットと行数指定】
> SELECT 列名[,列名…] FROM テーブル名 LIMIT [オフセット] 行数;

補足
・オフセット省略時は0となる


ORDER BY句(結果をソート)

【結果をソート】
> SELECT 列名[,列名…] FROM テーブル名 ORDER BY 列名 [DESC];

補足
・デフォルトは昇順(ASC)
・降順にしたい場合はDESCをつける


GROUP BY句(グループ化、集計)

【グループ化、集計】
> SELECT 列名[,列名…],集計関数(集計したい列名) FROM テーブル名 GROUP BY グループにしたい列名;

集計関数
・count(列名)・・・行数のカウントをする
・sum(列名)・・・合計
・avg(列名)・・・平均
・max(列名)・・・最大値
・min(列名)・・・最小値

補足
・グループにしたい列名をもつ行に対して、集計したい列名の集計を行って表示を行う


INSERT文(行追加)

【行追加】
> INSERT INTO テーブル名 (列名1[, 列名2,…]) VALUE (値1[, 値2, …]);


UPDATE文(行更新)

【行更新】
> UPDATE テーブル名 SET 列名1=値1 [, 列名2=値2, …] WHERE 検索条件;


DELETE文(行削除)

【行削除】
> DELETE FROM テーブル名 WHERE 検索条件;


JOIN句(テーブル結合)

【テーブル結合】
> SELECT テーブル名.列名 [,…] FROM テーブル1 JOIN テーブル2 ON テーブル1.列名 = テーブル2.列名



関連するページ


LPIC-1 試験対策のまとめページ

【LPIC1対策】LPIC-1試験対策 まとめ
LPICレベル1の出題範囲について自分が勉強したことをまとめました。


(次の章) 【LPIC1対策(6)】主題106:ユーザインターフェイスとデスクトップ

【LPIC1対策(6)】主題106: ユーザインターフェイスとデスクトップ
本記事ではLPIC1(Ver4.0)102試験に合格するため『主題106: ユーザインターフェイスとデスクトップ』について自分が勉強した...


(前の章) 【LPIC1対策(4)】主題104:デバイス、Linuxファイルシステム、ファイルシステム階層標準

【LPIC1対策(4)】主題104:デバイス、Linuxファイルシステム、ファイルシステム階層標準
LPIC1(Ver4.0)101試験に合格するため『主題104:デバイス、Linuxファイルシステム、ファイルシステム階層標準』について自分が勉強したことをまとめました。







以上!!!

スポンサーリンク

フォローする

スポンサーリンク