Diary-nagataka-シリコンバレーで働きたい!という夢への日々

外資ITで働くエンジニアが趣味や日々の事など書いてます(技術の話は別ブログ http://wanna-be-geek.seesaa.net/ )

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
  1. --/--/--(--) --:--:--|
  2. スポンサー広告
  3. このエントリーを含むはてなブックマーク

[メモ]同じbashなのに...Macでexpr useradd groupaddなどなどしたらコケたー

どうも、四月からは社会人という事で、ちょっと意識を変えて、手帳を能率手帳に変更したながたかです。

大学に入ってからこれまで五年間程手帳を使ってきて出来上がった自分の手帳選びでの必須条件は
メモ欄が充実している事
月刊表示と週間表示の両方がある事
バーチカルタイプである事
なので、以下の商品を選びました。


初めてA5サイズを買ったのですが、案外これが丁度いいサイズかなと使い始めて思っています。

今日さっそく読書メモなど1ページ近くゴソゴソ書いてました。

1年経って、仕事/プライベート共に、沢山の予定と、そしてメモの殴り書きが書かれた状態で役目を終える事を願います^^


さてさて、昨日なんですが、バイト先の製品がMacOS上で動かせるか検証するという仕事をしていました。

そのために、Linux版のインストーラスクリプトを改良していたのですが、意外な所でコケてたのでメモ。

Linux用のインストーラスクリプトを実行したら(bash)、何やらexprでmatchを用いて比較をしている箇所でsyntaxエラーが出ていたんですね。

なので、ちょっと見てみたところ、文法上特に問題はなさそう。

expr match [文字列1] [文字列2]
みたいな使い方をします。http://www.bookshelf.jp/texi/sh-utils/sh-utils-ja_5.html#SEC26

一応 CentOSで動かしてみてもやっぱり問題無し。

なのでmacのターミナル上でmanしてみたら意外な結果に

以下manの結果

NAME
expr - evaluate expression

SYNOPSIS
expr expression

DESCRIPTION
The expr utility evaluates expression and writes the result on standard
output.

All operators are separate arguments to the expr utility. Characters
special to the command interpreter must be escaped.

Operators are listed below in order of increasing precedence. Operators
with equal precedence are grouped within { } symbols.

expr1 | expr2
Returns the evaluation of expr1 if it is neither an empty string
nor zero; otherwise, returns the evaluation of expr2.

expr1 & expr2
Returns the evaluation of expr1 if neither expression evaluates
to an empty string or zero; otherwise, returns zero.

expr1 {=, >, >=, <, <=, !=} expr2
Returns the results of integer comparison if both arguments are
integers; otherwise, returns the results of string comparison
using the locale-specific collation sequence. The result of each
comparison is 1 if the specified relation is true, or 0 if the
relation is false.

expr1 {+, -} expr2
Returns the results of addition or subtraction of integer-valued
arguments.

expr1 {*, /, %} expr2
Returns the results of multiplication, integer division, or
remainder of integer-valued arguments.

expr1 : expr2
The ``:'' operator matches expr1 against expr2, which must be a
regular expression. The regular expression is anchored to the
beginning of the string with an implicit ``^''. expr expects
"basic" regular expressions, see re_format(7) for more informa-
tion on regular expressions.

If the match succeeds and the pattern contains at least one regu-
lar expression subexpression ``\(...\)'', the string correspond-
ing to ``\1'' is returned; otherwise the matching operator
returns the number of characters matched. If the match fails and
the pattern contains a regular expression subexpression the null
string is returned; otherwise 0.

Parentheses are used for grouping in the usual manner.

EXAMPLES
1. The following example adds one to the variable a.
a=`expr $a + 1`

2. The following example returns the filename portion of a pathname
stored in variable a. The // characters act to eliminate ambiguity
with the division operator.
expr //$a : '.*/\(.*\)'

3. The following example returns the number of characters in variable
a.
expr $a : '.*'

DIAGNOSTICS
The expr utility exits with one of the following values:
0 the expression is neither an empty string nor 0.
1 the expression is an empty string or 0.
2 the expression is invalid.

STANDARDS
The expr utility conforms to IEEE Std 1003.2 (``POSIX.2'').

BSD July 3, 1993


との事。
matchというキーワードは無いらしい。

ヤレヤレ、なので
len=`expr match $0 \\\/.*`

len=`expr $0 : \\\/.*`
と、コロン:を使った形に書き換えOK。

これで大丈夫と思いきや、まだエラーが出てる。

またまたexprでsyntax errorとか言ってる。

なので見てみると、今度はsubstrで文字列を切り出してる箇所でエラー。

expr substr string position length
ってな使い方をして、対象文字列stringのposition番目からlength分だけ文字列を切り出す働きをするのだけどエラー。

これも先ほど同様manして探してみると、何故か無い...

しかもこれはさっきのmatchみたく別の表現も見あたらず...検索したらこんな方法での代用を見っけた。
http://megawatt.blogdns.net/blog/194

上記を参考に
script_path=`expr substr ${script_path} 1 $len`

script_path=`echo ${script_path} | cut -b1-$len`
と変更


ただし、-bオプションはバイト数を引数にとるので、対象文字列が何なのかチェックが必要
日本語などのマルチバイト文字を扱う場合には注意が必要


う~ん、ディレクトリ構成とかでコケるかと思いきや、意外な所でコケたもんだ。

ほいで、最後にuseradd, groupaddでエラーが出た。
調べてみると、Macにはそれらのコマンドは無いとの事

http://www.osxgnu.org/software/pkgdetail.html?project_id=231&cat_id=205
上記のようにコマンドを追加するツールも配布されている模様。
やり方はココhttp://apple-tart.net/dokuwiki/doku.php?id=mac
ひとまず今回はこれは使わず、元からあるコマンドで代用する方法を探す


方法
http://blog.livedoor.jp/rotton79/archives/64928467.html
http://d.hatena.ne.jp/agw/20071028/1193629076

上記を参考に
・グループの追加
sudo dscl . -create /Groups/testGroup gid 108
※idの値に特に意味は無い
・ユーザの追加
sudo dscl . -create /Users/testUser gid 108
sudo dscl . -create /Users/testUSer name testUser testUser
sudo dscl . -create /Users/testUser passwd 'test'
sudo dscl . -create /Users/testUser uid 128

みたいな書き換えを行いエラー消滅♪

ちなみに、ユーザの削除は
sudo dscl . -delete /Users/<ユーザ名>
とすればいい。

あと、ちょっとしたトコロでは、スクリプト内でifconfigをして結果をパイプしている箇所でコケた。

何故かと思い調べてみると、Macの場合eth0はen0と表記するんですね。。

そのためeth0なんてもんは知らんってな具合のエラーが出てました。

なのでこれも修正。



ふぅ、結構疲れたぞ。。

けどまぁMacとUnixの双方を知れる良いトレーニングになり、昨日のバイトは充実してました。

まだまだ全然スキルの無い自分だけど、一歩一歩日々前進出来たらいいな。


さてさて、それではノシ


スポンサーサイト
  1. 2010/01/10(日) 01:24:20|
  2. mac
  3. | トラックバック:0
  4. | コメント:0
  5. このエントリーを含むはてなブックマーク

MacBookAir!!

ttp://www.apple.com/jp/macbookair/
う、薄い。。薄すぎる。。
ほすぃ。。
ポートが少ない気がするけど、まぁノートだし、外出先では十分か?
家ではハブを使えばいいわけだし。

従来のHDDではなくSSDというのがオプションで選べるというのも気になる。
SSD...実は初めて聞きました^^;
調べてみよっと!
  1. 2008/01/16(水) 13:27:38|
  2. mac
  3. | トラックバック:0
  4. | コメント:2
  5. このエントリーを含むはてなブックマーク

マシンパワ~~!

研究室でMac Proを使い始めて三日。

この子はメモリを2Gにアップグレードしてもらっています^^

2Gのマシンなんて使うのはじめて!

帰宅して自分のMac Bookをいじっていると、今までは気にならなかったけど、Mac Proをいじってしまったせいで遅いと感じる事がいくつかでてきた。

アプリの起動時間に関しては大分違う気がする。。

くそ、これがXeon・メモリ2Gにアップグレード済みのMac ProとCore Duo(Core2ではない)・メモリ512MBのデフォルトのままのMac Bookのパウァの差か(><)

けどMac Bookの黒は見てくれが最高ですよ^^

この子も出来る限り長い間使いたいなぁ。

しかし就職したらやっぱりWindowsの方が何かと便利なんだろうか?
というか、Windowsじゃないと不都合に遭遇してしまうのでしょうか。。

…いや、やっぱMacを使いたいなぁ。

じゃぁ、メモリを2Gに増やしてParallelsでグリングリンWindowsも動かしちゃえばきっと無問題~♪
  1. 2007/07/29(日) 01:33:21|
  2. mac
  3. | トラックバック:0
  4. | コメント:2
  5. このエントリーを含むはてなブックマーク

Macを

今使っているMacBookを買ったのと同時に
「Mac OS X 10.4 Tiger UNIX的システム構築」アスキー
Tiger  UNIX的システム構築

という本を買って色々インストールしながら
「このMacが学校のワークステーションに匹敵するマシンになるのか~楽しみだ^^」
なんて思ってたんですが、、

いろいろ問題が起き、トラブルシューティングが出来る程知識が無い俺は半ば諦めモードで、フリーのアプリをちょこっといれてそれを使いつつ、インストールしたけどうまく動かないモノは放置という状態が1年近く続いていました(--;)

けど、昨日研究室にて、先生に質問しながら研究室のPCのXのトラブルシューティングをしたり、研究室の環境を説明してもらったりしていて、自分の知識の無さを痛感するとともに、
やっぱ自由自在にUNIX系のシステムを操れるってカッコいいなぁ
と思い、またガチャガチャMacさんをいじっております!

とにかくいろいろいじり倒して、UNIXシステムの理解を深めるんだ!
という事で、今日はずっと、いろんなサイトを参考にしながらXやら、他のUNIX系アプリをいじっていたんですが…やっぱり思うように動かないorz

少しMacのデスクトップから離れて、WindowMakerを入れてGnomeの環境を構築したり、いろいろやってみたくてやる気満々で作業を始めたんですが…動かんやんか!

クソ~~~一体ナンデなんだ~~~(イライラ)

スーパーハッカーへの道はハンパじゃなく遠いぜorz
(ちなみに「ハッカー」っていうのはすごくコンピュータに精通している人に対して使う良い言葉であって、普通の人が「ハッカー」と聞いてイメージする、人のシステムに侵入したり、コンピュータを使ってなにか悪い事をする人の事は「クラッカー」というそうです)

既に意気消沈気味のワタシ。。

やりたい事が沢山あるのにその入り口で立ち往生してしまう自分orz
けど、ここで諦めたら以前と同じだ!
今回は諦めずにTigerワークステーション実現に向けて頑張るんだぁぁぁぁ!!

色んなサイトをまわりながら改めて思ったんだけど、オープンソースってのはなんだか良いシステムだなぁって事。
良いってのはつまり、便利でいいって意味はもちろんあるけど、それよりも、
このパケージを作った人は誰にも強制されずに、お金ももらわず、ただ楽しいからこれを作ったり、こんなのがあったら便利だと思ったからこれを作ったんだろうなぁ
という事に改めて尊敬の念を抱きました。

自分のサイトで質問に丁寧に答えたりしている人もいて、なんだか、大げさだけど、人間がちょっと善いものに思えたりした自分w
オープンソースの精神って善いもんですね^^


な~んて、世のsuperなハッカー達に思いを馳せつつ作業をしていると、何故かFirefoxが突然終了し、起動できなくなりましたw
さらに、Xが起動直後に終了してしまうという事態に...

こりゃ再インストールかしなきゃダメか??

...頑張ります(T_T)
  1. 2007/05/20(日) 15:01:15|
  2. mac
  3. | トラックバック:0
  4. | コメント:0
  5. このエントリーを含むはてなブックマーク
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。