60歳からITエンジニアを目指す無謀なブログ

60歳で定年し、職種を変更してIT技術者を目指すブログです。

bash シェルスクリプト を少し

ー--------------.bashrc file-------------------------------------------

# .bashrc

# Source global definitions
if [ -f /etc/bashrc ]; then
        . /etc/bashrc
fi

# User specific environment
if ! "$PATH" =~ "$HOME/.local/bin:$HOME/bin:"
then
    PATH="$HOME/.local/bin:$HOME/bin:$PATH"
fi
export PATH

ー--------------.bashrc file-------------------------------------------

上の.bashrcの意味

if [ -f /etc/bashrc ];  <<- /etc/bashrc が普通のファイルなら

. /etc/bashrc <<- /etc/bashをsourceする。.(ドット)はsourceと同じ意味

         現在のシェルに実行環境を引き継ぐ

  "$PATH" =~ "$HOME/.local/bin:$HOME/bin:"  <<- 比較して一致するか?

先頭に!がついているので否定となり、

$PATHが$HOME/.local/bin:$HOME/binと一致しないなら、

PATH="$HOME/.local/bin:$HOME/bin:$PATH"を実行する

[  ]テストコマンドで 中にスペースが必要で、posix正規表現で変数、文字列に”クォート必要

bash特有でクォート不要、テストコマンドではない、式を複数入れて評価できる

 

 

 

オプション 使用例 オプションの意味
-z test -z string string の文字列長が 0 ならば真となる。
-n test -n string string の文字列長が 0 より大ならば真となる。
-d test -d file file がディレクトリならば真となる。
-f test -f file file が普通のファイルならば真となる。
-s test -s file file が 0 より大きいサイズならば真となる。
-e test -e file file が存在するならば真となる。
-r test -r file file が読み取り可能ならば真となる。
-w test -w file file が書き込み可能ならば真となる。
-x test -x file file が実行可能ならば真となる。

略式 test コマンド

[ 文字列1 = 文字列2 ]
[ 数値1 オプション 数値2 ]
[ オプション 評価対象 ]

apache Basic認証 アクセス制限 .htpasswd生成

.htaccessファイルに以下を記載します。

 

AuthUserFile .htpasswd
AuthGroupFile /dev/null
AuthName "Please enter your ID and password"
AuthType Basic
require valid-user

 

 

パスワードファイル .htpasswdを生成します。

$>htpasswd -c .htpasswd ユーザー名 [ENT]

このあとパスワードを入力するよう促されるのでパスワードを入力します。

生成されたパスワードは

ユーザ名:fir:$apr1$bmFq2hvA$fHC00dBY6kI4fay/

のようにハッシュ化されたテキストで保存されています。

 

以上でこのディレクトリにApache経由でアクセスされると

”Please enter your ID and password"メッセージが出ます。

 

 

PHP フォーム変数$の受け渡し

 

index.htmlファイルに以下のようにフォーム入力のhtml記載をします。

 

 <form action="confirm.php" method="post">
        <table>
            <tr>
                <th><label for="last_name">Last Name<br><span>*Required</span></label></th>
                <td colspan="3"><input id="last_name" type="text" name="last_name" size="79" /></td>
            </tr>

 

 

method= "post"または"get"を記載します。

このフォームをpostメソッドでconfirm.phpファイルに送信したいので

action="confirm.php"と記載します。

 

フォームではnameで変数名を記載します。

 name="last_name"

ー----

phpファイル側では

$_POST['last_name'] で取得できます。

または

extract($_POST)でフォームから入力された変数に持つ配列を再び、各name変数として

展開してくれるので$last_nameが使えるようになる

$

 

 

PHP フォーム変数$の受け渡し

 

index.htmlファイルに以下のようにフォーム入力のhtml記載をします。

 

 <form action="confirm.php" method="post">
        <table>
            <tr>
                <th><label for="last_name">Last Name<br><span>*Required</span></label></th>
                <td colspan="3"><input id="last_name" type="text" name="last_name" size="79" /></td>
            </tr>

 

 

method= "post"または"get"を記載します。

このフォームをpostメソッドでconfirm.phpファイルに送信したいので

action="confirm.php"と記載します。

 

フォームではnameで変数名を記載します。

 name="last_name"

ー----

phpファイル側では

$_POST['last_name'] で取得できます。

または

extract($_POST)でフォームから入力された変数に持つ配列を再び、各name変数として

展開してくれるので$last_nameが使えるようになる

$

 

 

.htaccess ファイルの意味

目的

Webサーバーの基本的な動作を、ディレクトリ単位で制御するための構文を記載したファイル

 

 

/.htaccess - ルート配下に置いた .htaccessファイル  ---(a)
/img/.htaccess - /img ディレクトリ配下に置いた .htaccessファイル ---(b)

置いた場所の配下に全てに影響を与えるので
/img/ フォルダは(a), (b) 両方の.htaccess ファイルの影響を受ける

 

 

RewriteRuleディレクティブ

RewriteRule 正規表現パターン 置換URL [フラグ]

例)

http://www.example.com/blog/hello.html?num=10
ホスト名:http://www.example.com/
クエリー:?num=10
従ってこのホスト名とクエリーの間のblog/hello.htmが正規表現
パターンマッチ検索の対象となる
http://www.example.com/blog/hello.html?num=10

^blog/hello\.html$ //^は先頭、$は末尾、.はメタ文字なのでエスケープシー  
          // ケンスする
上記はbで始まり、lで終わる、かつその間の文字の並びも全て規定されているので ’blog/hello.html’のみにマッチする

これがもし、^blog/hello\.html だったら
'blog/hello.html/css/' にもマッチする






リライトとリダイレクトの違い
・リライト URL表示そのままで置換された同じサーバ内のディレクトリで表示

・リダイレクト 別URL表示に変換され表示する



DirectoryIndex ディレクティブ


DirectoryIndex ディレクティブでは、ディレクトリインデックスを、index.html 以外に設定することができる。
複数のディレクトリインデックスを指定している場合は、最初に見つかったものを返す。

 

 

CSS

セレクタの種類

  1.  タイプセレクタ
    <p> xxxxx</p>   @html file
    p { color :#fff0000;}    @css file 

  2.  idセレクタ

            <p id="red">  @html  file

            #red { color: #fff0000;}   @css file

  3.    classセレクタ

    <p  class="red">             <<------  異なる場所で

               <address class="red">   <<------ 同じ”red”クラスを定義できる

      .red { color: #fff0000;}   @css file

 

優先順位
  IDセレクタ > Classセレクタ >タイプセレクタ(通常のセレクタ

 

pyenvの使い方(備忘録)

  • インストールできるバージョンの確認

    >pyenv install --list

      pypy-2.6.0-src

      pypy-2.6.0

      pypy-2.6.1-src

      pypy-2.6.1

      pypy-4.0.0-src

      pypy-4.0.0

  •  使用可能なインストール済みPythonのバージョン確認
    >pyenv  versions

      system

    * 3.9.0 

    *が付いている方が選択中のバージョン

  • 使用するPythonの切り替え

    >pyenv global system  どこのディレクトリでもsystemを適用
    >pyenv local system      <--- このコマンド実行ディレクトリでのみsystemに切換

  • 現在のPythonのバージョン確認
    >python --version  または python3 --version

    ここで管理されるのはpyenv install でインストールされたPythonだけだと思われる

  • 仮想環境作成 ーあるバージョンのコピー環境を作成できる
    準備pyenvのインストールとsource実行
    > git clone https://github.com/pyenv/pyenv-virtualenv.git $(>
    > pyenv root)/plugins/pyenv-virtualenv $ echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.zshrc $ sourcesource . ~/.bash_profile

    >mkdir myproj
    > cd myproj
    > pyenv virtualenv 3.9.0  my3.9.0_env         <---- 仮想環境my3.9.0_envを作成
    >pyenv versions   <----- バージョンを確認

      system

      3.9.0 (set by /.python-version)

      3.9.0/envs/my3.9.0_env

      my3.0.0_env        <------新たに作成された仮想バージョン