ひしだまHPの更新履歴。 主にTRPGリプレイの元ネタ集、プログラミング技術メモと自作ソフト、好きなゲームや音楽です。
ひしだまの変更履歴
cronとsu
cronの設定の書き方の例を追加。
suでコマンドを実行することが出来るのを知ったので追加。
知ってるコマンドだと思っても、他の人がやっている事を見るのは勉強になる^^
シェルの先頭の#!
シェルスクリプトの先頭行に「#!/bin/sh」とよく書くけど、あれの意味が初めて分かった!
今まで「シェルの種類」を書くものだと思ってた。シェルにはshだのkshだの色々あるから。
実は、実行権限の付いたテキストファイルを直接実行するときに「そのファイル(自分自身)を どのコマンドを使って実行するか」を指定するものらしい。
(だから、shコマンドの引数としてスクリプトファイルを指定する場合には、先頭行に書いたシェルの種類の指定は意味なかったんだなぁ。そこに付けた「-x」オプションが無視された(ように思えた)のも同じ理由か。「#」から始まる行は単なるコメントだし)
そんでもって、主要な使い道がシェルのスクリプトだから/bin/shとか/bin/kshとか書かれているのをよく目にしていただけであって、実はどんなコマンドでも出来るみたいだ。
と言ってもtailとかに使ってもあまり意味は無いので(爆)、awkとか、ある程度プログラムが書ける(=スクリプト)ファイルで使う想定なんだろうな〜。
awkのプログラムを標準入力から
でも$の扱いだけは気をつける必要あり。
シェルのリダイレクトの間違い
UNIXのリダイレクトの「2>&1」と「>ファイル」の順序の間違いに気付かされたので、あわてて訂正。
そうかー、そういう理由だったのかー。直感的には分かりづらいっすね。
DOSのリダイレクションはどうかな、と思ったら、UNIXと同じ順番らしい。こっちは合ってた。
awk(と懐かしのC)
awkのメモを作成。
ついでに、UNIXコマンド一覧の「ファイル内容関連」を、ファイル内容の表示関連と編集関連に分割。awkは編集関連ね。
…編集と表示って、意外と区別が付けづらいなー…。
awk。大学時代に、情報工学科のyaccとlexの実習としてawkのインタープリターをC言語で作ったなぁ。(だから四則演算クラスなんてものも、あまり違和感無く作れた)
しかしその割に、awkの文法の細かい所は結構忘れてしまった(苦笑) まぁ使ってないと忘れるよなー。「BEGIN」を見て、そんなものがあったなー!!と懐かしかった(爆)
awkの文法や関数はC言語に似てるんだけど、printfはC言語より柔軟なので、実装するのは意外と面倒だったり。なにせ変数は数値でも文字列でも扱えるので、%dや%s等の書式を、C言語のvsprintfなんかにそのまま渡すわけにはいかない。結局自分で書式を解釈してやらないといけないんだよねー。
ついでに「\n」もC言語ではプリプロセッサーが解釈するから、awkインタープリターでは自作しないといけない。
おお、そういえば、あの頃はローカル変数の宣言に「auto」を付けてたなぁ。
「static」「extern」「auto」のそれぞれの直後にタブを入れると、タブが8桁なら、変数名の桁がぴったり並ぶので綺麗かと。そうなるとregisterはちょっと長いので、#defineしてみたり。
つーか、今どきregister宣言なんか使わねー(爆)
iconvのコードセットコンバーター作成方法
iconv用の文字コードの新しい変換パターン(コードセット・コンバーター)を作る、geniconvtblというコマンドの使用方法をメモ。
コマンドの使用方法というよりは、その元となるソースファイルの文法のメモ。
Solarisのページには コードセット・コンバーターを「容易に作れる」と書いてあるけど、具体的なソースファイルの書き方については載っていない(嘆)
とは言っても、ソース自体のサンプル(?)は存在しているので、見よう見まねでなんとか理解できた(と思う)。
ぱっと見た感じではC言語風なんだけど、独自の言語だ。丹念に見ていけば、文法の種類は限られている。
#includeは本当にC言語のヘッダーファイルを読み込んでいるっぽいが、iconv_openとかのC言語の関数が在るので、それと親和性が高いのだろう。
mapをずらずら書く程度なら、iconvを使わずに 自分で変換プログラムを作ったって大差ない気がしないでもないけど、ファイル入出力とかを考えなくて済む分、geniconvtblを使ってもいいかも。
| « 前ページ | 次ページ » |

