• ベストアンサー

シェルスクリプトに手をだしてみたいのですが。。。

Linuxに触れて半月ちょっとの私ですがこれまでRedHat7.3のインストール、ftpの実装、sambaの実装、カーネルの再構築をこなしてきました。 で、次なにしようかなぁと思っていたところ、シェルスクリプトというもの を発見しましたのでこれに手を出してみようかと思っています。 1.BourneShellの作成手順のようなものを詳しく説明してくれてるサイトを教えてください。自分でも探してみましたがこれより詳しくかつ優しく教えてくれてるサイト知ってる人いませんか? (Cshって下記サイトでいってるとおり手出さない方が良くて、BourneShell知っておけば十分なんですよね?)   http://www.oiden.net/Flets/bangai03/   http://warp.syns.net/10/ 2.「シェルスクリプトを使用して何をしたいのか」を当然決めないと作れるものも作れませんが、現時点で想像つくのが指定時間にファイルのバックアップをとる(指定時間なんてできんのか?)とかしか思いつかないのですが、「こんなの最初に作ればスキルアップになんじゃない。」ってゆうのないですか?出来れば答えも一緒にわかるとうれしいです。   なにぶんLinux初心者でなおかつ周りに教えてくれる人もなく、頼れるのは 教えてgooのみの悲しい状況です。 漠然とした質問で大変恐縮なのですがどなたか回答ください。

質問者が選んだベストアンサー

  • ベストアンサー
  • me_no_car
  • ベストアンサー率24% (22/90)
回答No.1

プログラムの知識があればシェルは簡単ですよ。 1. http://lagendra.s.kanazawa-u.ac.jp/ogurisu/manuals/sh-text/sh/ このサイト読めばだいたいは分かると思います。 2. 可能ですよ。作成したシェルスクリプトをクーロンに登録すればOKです。 クーロンについてはオンラインマニュアルを読んでください。(man cron)

hanada
質問者

お礼

ご回答ありがとうございます。 お答え頂いたサイトすばらしいです。まさにこういうサイトを探しておりました。 ありがとうございます。 あと、cronというコマンドは知りませんでした。sleepとかで間隔をあけるしかないのかなあとか馬鹿なことを考えていました。 そもそもそれじゃシェルスクリプトが起動してからの時間になっちゃうから指定時間(pm5時とか)は無理じゃないですかねぇ。 無知とは恐いですね。 

その他の回答 (5)

  • a-kuma
  • ベストアンサー率50% (1122/2211)
回答No.6

蛇足ながら。 > >私は、シェルにパラメータで値を渡し、cutしたりpasteしたりコマンドの動きを体得しているようなところです。 > どういうことですか??? > 存在するあるファイルの文字列を新規ファイルへ指定行、指定文字数分cutしたりpasteしたりする > シェルスクリプトを作成されたってことですか? cut とか paste ってコマンドがあることは知ってますか? > hanada さん LIBERALIST さんは、それらのコマンドを使ったシェルスクリプトを書いた、ということです。 ランコマンドのスクリプトを読んでみると分かりますが、 cut コマンドは良く使います。 awk や sed でも同じことができますが、何かの(コマンドの出力を含む)文字列から ある範囲を切り取るのに、(軽いので)よく使います。

hanada
質問者

お礼

ガーン。。。知りませんでした。。。 確かに「カット&ペーストってどうやってやってるのかなあ?」とは思っていましたが、ずばりそのもののcut、pasteというコマンドがあるのですね。 お恥ずかしい限りです。

noname#5645
noname#5645
回答No.5

ベテラン回答者さんたちの後で大変恐縮ですが、再び初心者の#4です。 >指定文字数分cutしたりpasteしたりするシェルスクリプト そうです。仕事で、今やっているのがHTMLのフォームに入れたデータを、DBのプライマリキーとのマッチングに使うためにシェルスクリプトで加工するので、それをサンプルとしてってだけなのですが。 でも結構現実的な使い方かなぁと思っております。

hanada
質問者

お礼

そうですか。仕事で使われるためにシェルスクリプトの作成されてるのですか。 実用性があるぶん作りがいがありそうですね。 私はここ2日で「linuxログイン時に時間を判断して挨拶(おはようとか、こんばんはとか)を標準出力するシェルスクリプト」、「cronを使って毎日定時にファイルのバックアップをとるシェルスクリプト」を作りましたが、なんかこう作りきったという実感がわきません。 スキルアップのために、何を作ればいいのかまたも悩んでる最中です。 やっぱり仕事を通してとかじゃないと、独学だと厳しいものがあるような気がします。

noname#5645
noname#5645
回答No.4

私も初心者です。こちらの過去ログは本当にためになりますね。 ちなみに仕事でsolarisを使ってまして、みんなcshを使ってますが、自宅のマシンがbashなのでbashで仕事の合間に遊んでいます。 >当然決めないと作れるものも作れません ですよね。私はホームページも開店休業中です。 私は、シェルにパラメータで値を渡し、cutしたりpasteしたりコマンドの動きを体得しているようなところです。 で、これからはカーネルの勉強をしてみようかなぁと思ってます。

hanada
質問者

お礼

>こちらの過去ログは本当にためになりますね。 同感です。これがなかたっらどうなってるんだか。トホホ・・・ >私は、シェルにパラメータで値を渡し、cutしたりpasteしたりコマンドの動きを体得しているようなところです。 どういうことですか??? 存在するあるファイルの文字列を新規ファイルへ指定行、指定文字数分cutしたりpasteしたりするシェルスクリプトを作成されたってことですか? >で、これからはカーネルの勉強をしてみようかなぁと思ってます。 私はつい最近カーネルの再構築に失敗してOSを再インストールするはめになりました。こんなお馬鹿なことにならないよう気をつけてください。 ご回答ありがとうございました。

  • a-kuma
  • ベストアンサー率50% (1122/2211)
回答No.3

勉強のための勉強ってのもつまらないので、必要があったとき(無理矢理作ってもOK)で良いとは思います。 質問でも書かれているように、cron のように自分でコマンドをたたけないとき、もしくは、 「いつも似たようなコマンドをたたいているなあ」と感じたときが、シェルスクリプトに触れる 良い機会、かと。 で、シェルスクリプトって、良い教科書ってなかなか無いんですよね。最初のプログラムが シェルスクリプトだとちょっと厳しいかも。 どんな言語でも参考になるソースがあって、それをいじりながら、ってのが上達の近道かと思うのですが、 スクリプトの場合には、ランコマンド(rcX.d 配下のあれ)が、そこそこ短くて、且つ、きちんと動く ものなので、参考にすると良いと思います。

hanada
質問者

お礼

>最初のプログラムがシェルスクリプトだとちょっと厳しいかも。 一応仕事でC言語は知ってるつもりです。(5年目) 基本的な条件分岐などは、書式がちょびっと違うだけでif文、for文、while文等、似てるところもありますよね。結構親しみやすいかも。。。 >ランコマンド(rcX.d 配下のあれ)が、そこそこ短くて、且つ、きちんと動くものなので、参考にすると良いと思います。 ランコマンドのシェルスクリプトちょっと覗きましたが、初心者の私はちんぷんかんぷんでした。 けど、どんなシェルスクリプト作るかも決めてないくらいなので、参考にできるチェルスクリプト郡がこんなにたくさんあったのには感動です。参考にしますありがとうございました。

  • astronaut
  • ベストアンサー率58% (303/516)
回答No.2

いきなり,csh-whynot に行き着かれるとは,とっても筋がよろしいようです.教えてgooは卒業しても良いのでは? シェルスクリプトについては http://www.linux.or.jp/ から http://www.linux.or.jp/JF/JFdocs/Bash-Prog-Intro-HOWTO.html にたどり着けます.

hanada
質問者

お礼

>いきなり,csh-whynot に行き着かれるとは,とっても筋がよろしいようです.教えてgooは卒業しても良いのでは? サイトに書いてあった事を書いただけです。 サイトについては、そうですよね。まずはlinuxをいじくってるならhttp://www.linux.or.jp/を見にいくべきですよね。 また何かにつまったたらまずはここから問題解決を目指すようにします。 ありがとうございました。

関連するQ&A

  • 権限の違うシェルスクリプトの実行

    3つのシェルスクリプトがあります。 ●root権限で実行  aaa.csh ●ユーザ指定権限で実行 bbb.csh ●root権限で実行 ccc.csh この3つのシェルスクリプトはaaa.csh →bbb.csh →ccc.cshの順番でバッチ処理として cronに設定したいのですが、 権限が違うのでroot権限のcrontabとユーザ指定のcrontabに それぞれ設定しなくてはいけません。 あまりスマートではないかと思い、 何かよい方法はないかと質問させて頂きました。 3つのシェルスクリプト1つシェルスクリプトにまとめてroot権限のcrontabに設定してしまう方法とかどうでしょうか? ちなみにスクリプトの処理の内容は単純なファイルコピーなどです。 意味分かりますでしょうか? よろしくお願いします。

  • 他ユーザーのシェルスクリプト実行

    他ユーザーのシェルスクリプトを実行する際に「rsh」や「ssh」を使用しないで実行 する方法が知りたいです。 また、シェルはCのプログラムから実行させたいのでパスワードの入力を求められたり するのは避けたいです。 フルパスを直接指定すれば実行は出来ましたが、ユーザーが変わっていないので ほしい結果が得られませんでした。 OSはredhat linuxです。

  • ディレクトリを削除するシェルスクリプト

    Linuxにて、あるディレクトリ内の子ディレクトリの作成日が1ヶ月以上前のものを削除するシェルスクリプトを作成したく思っております。 対象のディレクトリには名前の一部に作成日(YYYYMMDD)を付与していますのでそれを利用してどうにかできないかと考えております。ただ実際にどう実現すればいいか分からず困っています。何か良い案がある方がいらっしゃればご教授願いたく思っております。 OS:REDHAT Enterprise Server4(カーネル:2.6.9-67)

  • Linux起動時にシェルスクリプトを走らせるには?

    いつも参考にさせていただいてます。 私はRedHat7.0でLinuxを勉強中です。 現在、Linuxの起動時にシェルスクリプトを走らせようと思っているのですがうまくいきません。 まだ初心者で手順自体が違っているかもしれませんので、大まかで構いませんので手順を教えてください。

  • シェルスクリプトの引数

    シェルスクリプトの引数 linuxのシェルスクリプトの引数に関しての質問です。引数の数が一桁くらいならいいのですが、200万個の引数を使うとなると、いちいち引数を手で書くわけにはいきません。引数をテキストから直接読み込むことはできませんか?

  • シェルスクリプト 自身のファイルパスを取得する方法

    基本的なことかもしれないのですが、教えて下さい。 シェルスクリプトをLinuxで作成しています。 シェルスクリプトを実行して、実行したスクリプトまでの絶対パスを取得したいのですが、方法がわかりません。 いろいろ調べて、 dirname $0 という方法で出来るような記述も見つけたのですが、$0ではスクリプト名を取得することしか出来ず、ファイルパスを取得することが出来ませんでした。 OS : Linux カーネル : 2.6 です。 他に必要な情報があれば教えて下さい。 よろしくお願いいたします。

  • シェルスクリプト間で排他をとりたい

    環境 linux(redhat) 使用シェル bash シェルスクリプトAとシェルスクリプトBを作成し、 シェルスクリプトAが動作している間は、シェルスクリプトBの動作を禁止したいと考えています。 例えば、シェルスクリプトAが起動している状態で、シェルスクリプトBが起動されたとき、シェルスクリプトBは、シェルスクリプトAが起動していることを検知して、自発的に処理を終了するようにしたいと考えています。 上記のような仕組みをシェルスクリプトで実現可能でしょうか? 基本的には、シェルスクリプトの先頭で、ある資源のロックを行い、終了時にロックの解放ができれば、その仕組みは実現可能と考えています。 (シェルの異常終了時は、ロックが自動的に解放されることが望ましい) 上記のようなことをシェル(bash)で実現可能でしょうか。 bash単独での方法、もしくはbashからperl,C言語作成の実行モジュールを呼び出す方法でもかまいません。 (ちなみにperl(もしくはC言語作成のモジュール)単独では実現可能なことはわかっています)

  • シェルスクリプトでFTPの実行結果を取得するには

    OS redhat linux シェル bornシェル でftpを実行するスクリプトを作っていますが、 ftpの実行結果は取得できるのでしょうか? ftp -n < ftpCom.txt 宜しくお願いします。

  • シェルについて

    cshやbash、zsh、tcshなど色々ありますがどう違うのでしょうか。 これまであまり考えずにSoalrisやLinuxにログインして普通に作業してきましたが、ただtabやバックスペースが使用できないというだけでzshやtcshにして使用してきました。 ただこれだけ色々シェルがあるとしたら使用方法がいろいろ違うのではないかと思っております。 シェルスクリプトを作成する時の文法が違うとかでしょうか。

  • Linux シェルスクリプトについての質問です

    Linux上で 日頃、簡単な シェルスクリプトを書き実行していますが、 この頃、より自動化をしたいと思い、シェルスクリプトの中に キーボードのキーを 押したかの様な動作をさせられないかを考えています。 やりたいことは、シェルスクリプトを実行すると、knoppix の partimage にてファイル等を 指定して、1行で実行は出来るのですが、続行するのは F5 キー を押したり Enter キーを押したりの作業が必要です。 この問題は、何か他ので対処が出来るのかもしれないですが、今後、どうしても キーをおさなきゃならない環境が来たときにも対処が出来るように シェルスクリプトでこのような事が可能なのかを知りたく質問させて頂きました。 どなたか分かれば回答を宜しくお願いします。