Kシェルを勉強したいのですが、まだ始めたばかりなのでシェルスクリプトを
見てもよくわかりません。オライリージャパンの「入門kornシェル」だけを購入
したのですが、ほかにKシェルの勉強に役立つ本は何かありますでしょうか?
また、Kシェルを勉強できるホームページなどご存知でしたらお教え下さい。

KシェルはBシェルに関連していると聞きましたが、Bシェルの本など見ても
通用するのでしょうか?

Kシェルを勉強して、自分でシェルを作れるようになることが目的です。
Kシェルを勉強することに関して、何か役に立つ情報をご存知でしたらお教え
ください。

よろしくお願いいたします。

A 回答 (3件)

 すみません。


 どうも今検索したら少し前くらいにだと思いますが、トッパンは現在出版活動を停止してしまったようです(私も今年に入ってから手に入れたばかりだったのでまだあるものと思い込んでいました)。
 ですので、他のShellなどもあわせた書籍なども紹介している一覧ページのURLを紹介いたします。その中では日経BPの「UNIXUNIXシェルプログラミング徹底解説」などがKorn Shellにも対応しています。

# 「Korn Shellプログラミング」も載ってます。もし中古で気合を入れて探すなら
# 資料にはなるかも…。

 紹介した本が絶版で申し訳ありませんでした。深くお詫びいたします。

参考URL:http://www.yfcbookshelf.com/unix%20mokuji.htm
    • good
    • 0
この回答へのお礼

わざわざご丁寧にありがとうございました。
参考URLに問い合わせてみました。
「Korn Shell プログラミング」は結果的に見つからなくてもかまいません。
アドバイスどうもありがとうございました。

お礼日時:2001/10/17 10:23

KシェルはBシェルの上位互換(より便利)なので,Bシェルについて勉強したことは,Kシェルでも通じます。



また,シェルスクリプトについての勉強なら,Bシェル本の内容でほとんどの範囲をカバーできます。Kシェル独自の部分は,使えば便利だけど他のもので代用できる,というのが殆どですから。(GNU配布のツール 及び 同等品 がない環境だと代用品なくて困るけど)

一方,インタラクティブなシェルについてだと,Bシェル本はKシェルの非常に便利な機能の解説がなくて困ります。しかし,この点は「入門kornシェル」を既にお持ちなので,問題ないでしょう。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。
やはり、Bシェルの勉強はKシェルで通用するのですね。
よかったです。
なんとか頑張って勉強してKシェルが組めるようになりたいと思います。
アドバイスありがとうございました。

お礼日時:2001/10/17 10:19

 株式会社トッパンから出版されている「KornShellプログラミング」(4800円、B=ローゼンバーグ・著、小畑喜一・監訳、磯谷正孝/林秀幸・訳)という本がかなりK Shellスプリクトを書くのに参考になると思います。


 宜しければさがしてみてください。
 以上、参考になれば幸いです。

この回答への補足

早速のご回答誠にありがとうございました。
そのような本があるとは知りませんでした。教えて下さり、感謝いたします。

株式会社トッパンを検索してみましたら、トッパンなんとかという会社も
含めましていろいろ出てきて、どれが目的の会社なのか分かりませんでした。
もしよろしければ、その本を入手できるサイトか、その会社のホームページ
のURLなど教えていただけないでしょうか?
普通の本屋で買える物なのでしょうか?

お手数ですがよろしくお願いいたします。

補足日時:2001/10/11 16:03
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aと関連する良く見られている質問

Qクレジットカードとponta(ローソン)のポイント

航空チケットをコンビニで支払おうか迷っています。

今、楽天カード(クレジットカード)とpontaをもっています。

もし、航空チケット(13万くらい)をローソンで楽天カード(VISA)により

支払った場合(pontaを添えて)は、楽天カード、pontaのそれぞれにポイントはたまるのでしょうか?

Aベストアンサー

Loppiからのチケット類は、Pontaのポイントは付かないですね。

http://www.lawson.co.jp/ponta/static/about/point.html
こちらのポイントが付与されない商品・サービスを参照してください。


ただし、来店ポイントは付くみたいですが。

QなぜLinuxでKornシェルが使えるのでしょうか?

Linux初心者です。
シェルについてわからないことがあり、質問させていただきます。

Linux(Red Hatを使っています)の
/bin/shと/bin/cshは、それぞれ/bin/bash、/bin/tcshのシンボリックリンクファイル、
なのに対して、なぜkshだけは/bin/kshそのままなのでしょうか?

また、KornシェルはAT&T社が開発したものだそうですが、
これはLinuxで使う際にライセンスの問題に触れないのでしょうか?

よろしくお願いいたします。

Aベストアンサー

 なぜシンボルリンクになっているかと言うと、bashはshの、cshはtcshの、それぞれ機能拡張版という形になっています。それぞれ元になったシェルの後方互換は保っているために、たとえばアプリによっては/bin/shというパスが内部で使われていても、その代替としてbashが処理を肩代わりするために、シンボルリンクとして“擬似的に”shをbin下に置いているんです。

 Kornシェルのライセンスの経緯については、詳しくありませんが、確かLinuxに搭載されているkshはベル研究所のDavid Korn氏が作った物をAT&Tが製品としてリリースしたのより、以前のバージョンを元に作られたクローンじゃなかったかと記憶しています。
 ライセンス的に問題のあるものは、含まれていないと思いますよ?どうしても気になるのであれば、RedHatに問い合わせをしてみるとか、コミュニティーに直接聞かれたほうがいいかと思います。(たとえばFedora Projectとか)

QモバイルPonta クレジットカードみたいなもの?

モバイルPontaってクレジットカードみたいなものでしょうか?
カードで持つか、携帯で持つかの違いだけですか?

Aベストアンサー

違います。
そもそもPontaはポイントサービスなので、クレジットカードとはまったく別物です。
クレジットカードと組み合わされたPontaカードが多いので混同されているのでしょう。

で、モバイルPontaですが、たぶん、カードか携帯かを選ぶのではなく、まずカード会員になり、モバイルとしても使いたい場合に設定するものだと思います。
(単に私がその流れで設定して使用しているので)

私はローソンとケンタッキーだけでしか使ってませんが、モバイルPontaが使えるのはローソンだけで、ケンタッキーではカードを出すしかありません。


使い方の違いは、カードではもちろん、支払いの時に店員にカードを渡します。

モバイルPontaでは、次のようになります。
(1) 「支払いはEdyで」のように、電子マネーで支払う意思を伝える。
(2) おサイフケータイをレジのリーダー部分に置き、レジの画面に表示された電子マネーのアイコン(私の場合はEdy)を選択する。
(3) 支払い完了して渡されたレシートを見ると、下の方に「Ponta会員ID ********」「来店ポイント 1P」「買上ポイント *P」「ポイント残高 ***P」といったPontaポイントが付けられているのが確認できる。

つまり、Pontaカードの存在を意識することなく、おサイフケータイで支払いをすると、勝手にPontaポイントも手続きが済んでいる、ということです。
便利ですよ。

違います。
そもそもPontaはポイントサービスなので、クレジットカードとはまったく別物です。
クレジットカードと組み合わされたPontaカードが多いので混同されているのでしょう。

で、モバイルPontaですが、たぶん、カードか携帯かを選ぶのではなく、まずカード会員になり、モバイルとしても使いたい場合に設定するものだと思います。
(単に私がその流れで設定して使用しているので)

私はローソンとケンタッキーだけでしか使ってませんが、モバイルPontaが使えるのはローソンだけで、ケンタッキーではカード...続きを読む

QBシェルでのユーザパスワード変更

Bシェルのスクリプトを実行しユーザパスワードの変更を自動で
行いたいと思っています。

#!/bin/sh

passwd 変更したいユーザ名
abcd ・・・(変更したい人のパスワードです[新しいパスワード用])
abcd ・・・(変更したい人のパスワードです[新しいパスワードの聞きなおし用])

このようにシェルを組み実行したところ
コマンドプロンプトにてパスワードの入力
を聞かれてしまい、シェルにパスワードを
指定しているのですが認識してくれません。
この問題を解決するにはどのような
シェルの記述方法があるのでしょうか。

ご回答よろしくお願いします。

Aベストアンサー

passwdコマンドは必ず端末から入力するように作られているので、シェルスクリプトからパスワードを入力するなどは基本的にできません。

もしできるとしても記載されている方法では、abcdというコマンドをpasswdコマンドの次に実行せよという意味であり、入力という意味になりません。リダイレクションの勉強をしてください。

解決するには、
・擬似端末上でpasswdコマンドを実行させて、その擬似端末に生のパスワードを送り込む
・Cかperlでcrypt関数をつかってパスワードを暗号化してから、passwdファイルを生成したりchpass(OSによる)に渡したりする
のいずれかになると思いますが、リダイレクション以前の技術では非常に骨が折れると思います。仮にできたとしてもパスワードがもれるような穴ができかねません。

QローソンポイントはPontaへ。ならば、GEOや昭和シェルなどで今まで貯まったポイントは使える。

現在、旧ローソンパスVISAカードを持っています。(JMBではありません)
こちらのポイントが5000ほど貯まっています。

先日、ローソンのポイントはPontaとなりましたが、
このポイントを、ゲオや昭和シェルなどで使用できるのでしょうか?

Aベストアンサー

はい使えます。
ただしレンタルは、会員登録が必要です

QBシェルのawkコマンドについて

Bシェルのawkコマンドについてですが、例えばプロンプトから
% ls -l hoge.txt | awk '{print $5}'

と入力すると、hoge.txtのファイルサイズが出力されますが、同様のことをBシェルの中で行おうと思っています。

下記のように、配列arrayにはスペース区切りで3つのデータが入っており、N番目のデータを取得したいという場合に、Nに変数を使用して取得する方法がわかりません。

#!/bin/sh

array="AA BB CC"
num=3 # CCを取得したい
echo $array | awk '{print $num}'

上記で実行すると、"AA BB CC"のようにすべて出力されてしまいます。awkで出力する箇所を${数値}で指定すればうまくいくのですが、ランダムで決めた数値(1~3)をnumに入れて取得したい場合、このようなことは可能でしょうか。

もし不可能な場合でも、awk以外に何かコマンドがあればご教授願います。なお、作成するのはBシェルになります。

Aベストアンサー

' ' で囲まれた中では、$によるシェル変数置換は効きません。" " で囲むとシェル変数置換が行われます。ただ、
echo $array | awk "{print $num}"
と書くと、$num が 3 のため、
echo $array | awk "{print 3}"
となり、3が表示されるだけです。

echo $array | awk "{print \$$num}"
echo $array | awk '{print $'$num'}'
のどちらか好みのほうを使ってください。私の好みは後者です。

他には、cut コマンドも使えるかと思います。詳しくは、man cut を。

Qクレジットカードのローソンpontaカード

でローソンの店頭で公共料金の支払いはできますか?

Aベストアンサー

できません。公共料金を払えるのは現金だけです
セブンイレブンならnanaco払いは可能です

QUNIX(Bシェル)のプロンプトについて

Bシェルのプロンプトの設定は環境変数PS1に変えたい文字列を入れればOKですが、現在自分のいるディレクトリ名を表示させたい場合はどのようにしたらいいでしょうか。
PS1="["`pwd`"]" などと設定してもディレクトリが変わったらその設定したときのディレクトリ名のままです。
 また、ユーザ名も表示したいのですがsuコマンドでユーザ名を切り替えた場合プロンプトに表示させたユーザ名も変更させることはできるのでしょうか?

Aベストアンサー

純粋な sh でそれをやれとは酷な要求ですねぇ。

まず、su に関しては、最悪でも /usr/bin (unix によっては /bin ?)
より前のパスに、su っていう名前のシェルスクリプトを置いて、
適当にいじればいいかと思います。こっちは不可能ではない。

でも、cd は sh の仕様によっては無理かもしれません。シェルス
クリプトでは、親のディレクトリを変更できません。alias 機能が
あって、cd を上書きできたとして、本来の cd を実行できる機能
がないと、やはりつまづきます。最近の sh なら、alias に似た
function 機能がありますが、例えば SunOS の sh だと、cd コマ
ンドの上書きはできないようです。FreeBSD の sh と、Laser5
linux の bsh なら、次のようにできると思います。
cd () { command cd $1; PS1="`pwd` "; }

Q昭和シェル石油でのオイル交換について。

昭和シェル石油でのオイル交換について。


神奈川県の中井町井ノ口( テルモ前 )のシェル石油にて、ブレーキオイルの交換を考えていますが、やって頂けるのでしょうか?

金額もわかれば教えて頂きたく思います。


因みに車は、タントカスタム( L375S )RSです。
宜しくお願い致します。

Aベストアンサー

ガソリンスタンドには整備士はいません
国家整備士うんぬんんってデカデカで宣伝してるところもありますが
ハッキリいってお笑いです
いちいち国家整備士なんて言い方するところが更に・・
整備資格がたまたま国の資格であるだけなのにいかにもって感じで・・

この言い回しをすると調理師も国家調理師・・ 爆笑です

さて、いまどきの車はABSが標準装備であったりします
アンチャンバイトのレベルのスタンド店員に
それらを理解して的確な作業が行えるとは思いません

ワタシがディーラーの整備士だったころ
スタンドでブレーキオイルを交換してから
ABSランプが点灯したとの入庫を数件経験しています
見るとあっちこちブレーキオイルで汚したままで
更に外したと思われる部材がきちんとついてない・・

トラブルの元なのでやめたほうがいいと思います
ブレーキですからね もしものことを考えると・・

Qシェルの中から他のシェルを呼び出す

例えば、ひとつのシェルファイル( aaa.sh )の中に、
-------------------------
#!/usr/bin/csh
set HOME=/home/test/tmp
bbb.sh
-------------------------
と記述した場合、bbb.shで変数$HOMEを使いたいと思いましたが、
使えないようです。(HOME: 未定義の変数と表示されます)
どなたか、これ以外の方法で、このように
シェルからほかのシェルを呼び出して、変数も引き継がれるような方法ご存知ないでしょうか?
多分こーやれば、こうなるかも!みたいなご回答でも結構ですので情報提供をお願いします。

どうぞ宜しくお願い致します。

Aベストアンサー

たぶん環境変数は引き継がれます。
setenvを使えばいいように思います?


人気Q&Aランキング