お願い&諸注意
- 自分用の備忘録&HTMLの練習用に作ったモノなのであんまりマジマジと見んといてね
- 何かあれば連絡下さい
リンク集
-
[配信講義] CMSI計算科学技術特論A
MPI, OpenMP, BLAS, LAPACK, ...
html
-
html における特殊文字の出力
[
」や「]
」) や「>」、「<」、「&」など、 html における特殊文字を単なる文字として html ソースに入れるとき、 場合により Emacs などのエディタが記号として認識することがある。 特に「かっこが閉じていない」場合などは、ソースコードの色つけなどが変わってしまう場合もある。 その場合は「[
」で「[
」を、 「]
」で「]
」を表示させるとよい。 「<」は「<」、「>」は「>」、「&」は「&」など。 - Linux (Ubuntu) で html を PDF や PNG に変換する方法
- 基本的にはブラウザ (Firefox) で行えばよい。
- ブラウザで「印刷」をクリックする。
-
するとページ設定などの画面が出てくるので、「印刷」をクリック。
- 最後にどのプリンターで印刷するか聞かれるので「ファイルに出力する」を選択 (出力ファイル名も決定することができる) 。
- あるいは
wkhtmltopdf
というコマンドがあるらしい。 -
インストール:
sudo apt-get install wkhtmltopdf
(これで下記のwkhtmltoimage
コマンドも一緒にインストールできる) -
Web 上の html を (ダウンロードして) PDF に変換:
wkhtmltopdf http://www.kusastro.kyoto-u.ac.jp/~kentagch/index.html index.pdf
-
Web 上の html を (ダウンロードして) PNG に変換:
wkhtmltoimage http://www.kusastro.kyoto-u.ac.jp/~kentagch/index.html index.png
-
手元の html を PDF に変換 (自分の環境では上手く行かない...):
wkhtmltopdf index.html index.pdf
-
手元の html を PNG に変換 (自分の環境では上手く行かない...):
wkhtmltoimage index.html index.png
Emacs
-
エディタの文字色を見る方法(例えば、bash の「
if
」の色を見たい場合)
[参考: Emacsで、特定の文字の色を変更する]-
文字色を調べたい文字にカーソルを合わせ
と打って Enter。こうすると face (文字や背景の色などの組み合わせ) の名前を知ることができる。M-x describe-face
-
こうすると、
と出てくる。この状態でもう1度 Enter。Describe face (default 'font-lock-keyword-face' ):
-
すると、その face に関する情報が出てくる。「if」の色は「Purple」らしい。
-
例えばこのサイトを参照すると、Emacs の 「Purple」は「
#a020f0
」らしい (html での<font color="purple"></font>
とは異なる色なので注意)。 -
なお、face の一覧を見たい場合は
と打って Enter するとよい。M-x list-faces-display
-
文字色を調べたい文字にカーソルを合わせ
bash
- 環境変数
-
「
$?
」: 直前で実行したコマンドの終了コード (ステータス) を示す環境変数-
直前で実行したコマンドの終了コードの確認:
command ; echo $?
- 参考: 実行したコマンドの終了コードを表示する
-
直前で実行したコマンドの終了コードの確認:
- if文
- bash の if 文は条件式に指定されたコマンドの終了ステータスを判定し分岐を行う。
- 終了ステータスが0の場合は真、その他の場合は偽になる。
-
if文の基本形 (bash):
if 条件式1 ; then
処理1
elif 条件式2 ; then
処理2
else
処理3
fi - testコマンド (or [ ] コマンド)
- if 文の条件式中に多く用いられる、真偽の値を返すことに特化したコマンド。
- 真の場合は0, 偽の場合1を返す(正常終了)。
- エラー終了の場合は2を返す(test コマンドに与える引数の形がおかしい場合など)。
- シェルスクリプトでは [ ] コマンドを用いることが多い。
-
test コマンドの基本形:
test 条件
-
[ ] コマンドの基本形:
[ 条件 ]
- [[ ]] コマンド
- double braket [[ ]]の方が single braket [ ] より機能が充実している。
- &&, ||, Pattern matching, 正規表現などを用いることが可能。
- [[ ]] における Pattern matching 以下のように、「+」で1回以上の繰り返しなど、expr とは正規表現が少し異なる形を取る。
^
: 文字列の開始- Bashの括弧のノウハウ (まとめ)、Bash における括弧類の意味
- パターンマッチングの例: 「#」から始まる行と空行を無視する
- ()
- {}
while read line
do
if [[ "$line" =~ ^# || "$line" =~ ^$ ]]; then
continue
fi
(無視しない行に対して行う処理)fi <
(入力ファイル名)
testコマンドの条件部
基本は外部サイト(例えばここ)にも書かれているが、手元にも置いておきたいので掲載。- 文字列比較
- 整数値比較
- 論理
- ファイルの判定
- ファイル属性の判定
- 標準入出力が端末か判定
- シェルオプションと変数
文字列
| 文字列の長さが0より大きければ真 (文字列が null だと偽) |
-n 文字列
| |
-z 文字列
| 文字列の長さが0であれば (文字列が null だと) 真 |
文字列A = 文字列B
| 文字列Aと文字列Bが等しければ真 |
文字列A == 文字列B
| |
文字列A != 文字列B
| 文字列Aと文字列Bが等しくなければ真 |
整数1 -eq 整数2
| 数値1と数値2が等しければ真 |
整数1 -ne 整数2
| 整数1と整数2が等しくなければ真 |
整数1 -lt 整数2
| 整数1が整数2より小さければ真 |
整数1 -le 整数2
| 整数1が整数2以下ならば真 |
整数1 -gt 整数2
| 整数1が整数2より大きければ真 |
整数1 -ge 整数2
| 整数1が整数2以上ならば真 |
! 条件
| 条件が偽であれば真 |
条件1 -a 条件2
| 条件1と条件2がともに真であれば真 |
条件1 -o 条件2
| 条件1か条件2のどちらかが真であれば真 |
TRUE
| 常に真 |
FALSE
| 常に偽 |
( 条件 )
| ()内を優先して評価する(「(」、「)」を使用する場合はバックスラッシュなどでエスケープすること) |
-e ファイル名
| ファイルが存在するとき真 |
-f ファイル名
| ファイルが通常のファイルのとき真 |
-d ファイル名
| ディレクトリのとき真 |
-s ファイル名
| ファイルの長さが0ではない(ファイルが空ではない)とき真 |
-L ファイル名
| ファイルがシンボリックリンクのとき真 |
-h ファイル名
| |
ファイル1 -ef ファイル2
| ファイル1がファイル2のハードリンクのとき真 |
-r ファイル名
| ファイルが存在し、読み出しの権限がユーザーにあるとき真 |
-w ファイル名
| ファイルが存在し、書き込み権限がユーザーにあるとき真 |
-x ファイル名
| ファイルが存在し、ファイルの実行権限がユーザーにあるとき真 |
-O ファイル名
| ファイルの実体の所有者が実効ユーザーIDと同じとき真 |
-G ファイル名
| ファイルの実体の所属グループが実効グループIDと同じとき真 |
-u ファイル名
| ファイルの実体にsetuidビットが立っているとき真 |
-g ファイル名
| ファイルの実体にsetgidビットが立っているとき真 |
-k ファイル名
| ファイルの実体にstickyビットが立っているとき真 |
ファイル1 -nt ファイル2
| ファイル1の修正時刻がファイル2の修正時刻より新しいとき真 |
ファイル1 -ot ファイル2
| ファイル1の修正時刻がファイル2の修正時刻より古いとき真 |
-t 0
| 標準入力が端末のとき真 |
-t 1
| 標準出力が端末のとき真 |
-t 2
| 標準エラー出力が端末のとき真 |
-t 数値
| 数値番目のファイルディスクリプターが端末のとき真 |
-o オプション
| シェルオプションが定義されているとき真 (最新の bash では使えない場合も) |
-v 変数名
| 変数が定義されているとき真 (最新の bash では使えない場合も) |
&&と||
- &&: 直前のコマンドが正しく実行されたとき、直後のコマンドを実行
-
使用法:
command1 && command2 # command1が正しく実行されたとき、command2を実行
- ||: 直前のコマンドでエラーが起きたとき、直後のコマンドを実行
-
使用法:
command1 || command2 # command1でエラーが起きたとき、command2を実行
シェルスクリプトで数字かどうか判断する方法 (expr だけじゃない)
とりあえずここを見るに、single braket の拡張が double braket っぽい参考: Shell Style Guide by Google
シェルスクリプトで数字かどうか判断する方法 (expr だけじゃない)
メール関係
- PCの買い替えに伴うThunderbirdのデータの移行
- 参考: Thunderbird のページ、STUDIO SERO 様のページ
- バックアップPDF: Thunderbird のページ、STUDIO SERO 様のページ (要 password)
- 移行を行うきっかけ: 新しいPCで自分のアカウントにログインしたが、サーバに昔のデータが残っていなかったため
- 手順概略
- 右上メニュー>ヘルプ>「トラブルシューティング情報」をクリック
- アプリケーション基本情報>プロファイルフォルダー>「フォルダーを開く」をクリック
- 「********.default」というフォルダーが開く、このフォルダーにメールのデータが入っている
- 古い環境でのフォルダ (aaaaaaaa.default) をコピーして、新しい環境に移植する
- 新しい環境でのデータフォルダ (bbbbbbbb.default) の横に古い環境でのデータフォルダをコピーする
- 新しい環境でのフォルダ名を _bbbbbbbb.default に変更して先ずは削除しないでおく
- 古い環境でのフォルダ名 aaaaaaaa.default を新しい環境でのフォルダ名 bbbbbbbb.default に変更
- 以上で作業は終わりのはずなので Thunderbird を再起動して確認
- 上手く行ったならば _bbbbbbbb.default は削除しても構わない
- 詳細な設定
- 差出人情報
- 右上メニュー>設定>「アカウント設定」をクリック
- 署名(htmlソース、*は適宜変更):
<div class="PlainText"><font size="2"><span style="font-size:10pt">________________________________________________________________<br> 田口 健太 (TAGUCHI, Kenta)<br> 京都大学大学院理学研究科宇宙物理学教室<br> (Department of Astronomy, Graduate School of Science, Kyoto University)<br> <a href="mailto:kentagch*kusastro.kyoto-u.ac.jp">kentagch*kusastro.kyoto-u.ac.jp</a><br> 090********</span></font></div>
- 署名(上記htmlソースの実行結果、*は適宜変更)
________________________________________________________________
田口 健太 (TAGUCHI, Kenta)
京都大学大学院理学研究科宇宙物理学教室
(Department of Astronomy, Graduate School of Science, Kyoto University)
kentagch*kusastro.kyoto-u.ac.jp
090******** - 自分に Cc を送る方法
- 右上メニュー>設定>「アカウント設定」をクリック
- 「送信控えと特別なフォルダー」をクリック
- 「次のメールアドレスを Cc に追加する」に記入、「Kenta TAGUCHI <kentagch*kusastro.kyoto-u.ac.jp>」など
- 自分の携帯電話に自動転送する方法
- 右上メニュー>「メッセージフィルダー」をクリック
- 以下の画面で「新規」を押して転送用のフィルターを作成する
- 以下でフィルターを設定する (自分に Cc を送るように設定している場合は差出人が自分の場合を省かないと無限ループが発生してしまうので注意)
- 宇物メーリングリスト管理
- TLSとかの宇宙物理のMLはmailmanというのを用いている
- 人をMLから入れたり消したりする方法
- 参考: Mailman のページ
- 基本的には、「入会を申し込む」で強制入会させればよい(「招待」は招待メールを相手に送り判断を仰ぐことになるので2度手間)
- 歓迎メール: 強制入会させた時に相手にメールを送る、特に知らせることがないなら「いいえ」
- リスト管理者への通知: 「はい」でいいと思う
- KUMOI の転送先変更
- 京都大学全学アカウント管理から可能
- メール (html 形式) を送るコマンド
-
基本形:
echo "本文" | mail -s "タイトル" kentagch@kusastro.kyoto-u.ac.jp # mail コマンドの基本形、@は半角に変えること
-
送り主メールアドレス指定: 「
-r
」オプションの後にメールアドレスを記述 (-r from@...
) - 送信先メールアドレス指定: オプションを指定しないでメールアドレスを記述。複数の送信先を指定する場合は半角スペースを開ける。
-
CC メールアドレス指定: 「
-c
」オプションの後にメールアドレスを記述 (-c from@...
) 。複数のアドレスに CC したい場合は、その都度「-c
」オプションをつけること。 -
BCC メールアドレス指定: 「
-b
」オプションの後にメールアドレスを記述 (-b from@...
) 。複数のアドレスに BCC したい場合は、その都度「-b
」オプションをつけること。
-
送り主メールアドレス指定: 「
- 細かい注意
echo
コマンドの「-e
」オプションを用いれば「\n
」で改行はできる。 ただし色の変更はできない。echo -e "1行目\n2行目" | mail -s "タイトル" kentagch@kusastro.kyoto-u.ac.jp # 改行する例1
(echo "1行目"; echo "2行目") | mail -s "タイトル" kentagch@kusastro.kyoto-u.ac.jp # 改行する例2
echo -e "\e[31m赤文字\e[m" | mail -s "タイトル" kentagch@kusastro.kyoto-u.ac.jp # echo コマンドで標準出力の文字に色をつける方法は適用できない
- html メールにする方法
echo -e "(html source)" | mail -a 'Content-Type:text/html; charset=UTF-8' -s "タイトル" kentagch@kusastro.kyoto-u.ac.jp # html メールの例
- これだと色を始め、表なども使える
- ただし改行ができない (「
<br>
」などを挟む必要がある)
-
ファイルを添付する方法
(uuencode input.pdf attach.pdf; uuencode input.jpg attach2.jpg; echo "本文 (plain text)") | mail -s "タイトル" kentagch@kusastro.kyoto-u.ac.jp # ファイル添付の例
- これは input.pdf を attach.pdf, input.pdf を attach.pdf として添付する例
- エンコードの関係か、Thunderbird でダウンロードした時の表示が変になっている (が気にしなくてよい?)
-
この方法は、本文が plain text でないと使えないっぽい。html メールにする方法があれば教えて下さい (マルチパートメールなので、「
-a 'Content-Type: multipart/alternative; boundary=boundary'
」などと指定すればよいのだろうか?)。
- いずれにせよ、メールアプリのように使い勝手のよい環境を自作するのは極めて困難であると思った。妥協は必要である。


ssh
- 公開鍵認証
- 自室の PC から宇宙物理の共用計算機 (sgr) にログインするための鍵を作成する
- クライアント側 (自室の PC) で公開鍵と秘密鍵の組を作成する
ssh-keygen -t rsa
- ~/.ssh ディレクトリがなければ作成すること
- ~/.ssh ディレクトリのパーミッションは 700 にすること
- Enter passphrase で 他の文字を入力せずに Enter すれば、パスワードなしの鍵が出来る
- 公開鍵をサーバに転送する
- サーバにログインし、以下のように公開鍵を置いておく
- この場合も ~/.ssh/ がなければ作成し、パーミッションは 700 にしておくこと。
- 既に authorized_keys が存在する場合は (他のクライアントからログインするための鍵であると思われるので) 上書きしないように注意する:
cat ~/.ssh/id_rsa.pub_tmp >> ~/.ssh/authorized_keys 既存の公開鍵の下に付け足す
rm cat ~/.ssh/id_rsa.pub_tmp
- PC を放置していても接続を切らないようにする方法
- nohup
- ssh でログインしてコマンドを実行する
scp id_rsa.pub kentagch@sgr.kusastro.kyoto-u.ac.jp:.ssh/id_rsa.pub_tmp # @は半角に変えること
mv ~/.ssh/id_rsa.pub_tmp ~/.ssh/authorized_keys
正規表現
awk
- 参考文献
- 実行方法
- 入力ファイルを与える
- awk 'スクリプト' [入力ファイルのパス]
- awk -f スクリプトファイルのパス [入力ファイルのパス]
- パイプラインを用いる
- cat file | awk 'スクリプト'
- 入力ファイルを与えない場合: 標準入力がプログラムの入力となる
- awk 'スクリプト'
- パターンとアクション
- awk のスクリプトは「パターン-アクション」と「関数定義」から構成される:
- アクションは中かっこ { } によって囲まれる
- awkでは入力を1行ずつ読み、その都度、各パターンとのマッチングが行われる。
- パターンが真となるレコードに対して、対応するアクションが実行される。
- パターンを省略するとすべてのレコードにアクションが実行される
- {アクション} を省略するとパターンが真となるレコードを表示する。
- 入力ファイルが複数ある場合は、まず入力ファイル1が1行目から順に処理される。入力ファイル1の最終行を処理した次に入力ファイル2の1行目が処理される
- パターンには/正規表現/、式、「パターン,パターン」、BEGIN、ENDがある(他にもあるかも)
- 正規表現は左右2つの「/」によって囲まれる(上の例2参照)
- パターンに正規表現を用いた場合、対応する文字列を含む行にのみアクションが実行される(上の例2参照)。その文字列が同じ行に複数回含まれる場合もアクションは1回のみ。
- 正規表現についてはここやここあたりを参照(自分でも時間があれば纏めたい...)
- 式: ここ参照予定
- BEGINパターンを指定したアクションは処理の開始直前に1度だけ実行される
- ENDパターンを指定したアクションは処理の終了直前に1度だけ実行される
- gawk と mawk
イメージ:
パターン {アクション}
パターン {アクション}
function 関数名 (引数の並び) {文}
function 関数名 (引数の並び) {文}
例1: 全ての行に対してアクションを実行する(パターンが省略された場合)
awk '{アクション}'
awk '/ISF/'
