web-dev-qa-db-ja.com

bashシェルスクリプトを学ぶにはどうすればよいですか?

私はMacユーザーでありWeb開発者であり、ワークフローを管理するための自動化ツールを作成したいと考えています。あるタイプのウェブサイトを起動するための単一のコマンドを言います。

Bashシェルスクリプトのどの部分を学ぶ必要がありますか?とてもたくさんあります:

  • sed
  • awk
  • grep
  • 見つける

または、Webプロジェクトのコマンドライン自動化をアーカイブするために何か他のことを学ぶ必要がありますか?

5
Amit Erandole

他のスクリプト言語やプログラミング言語とは異なり、シェルスクリプト重くはOSから提供されるコマンドラインアプリケーションに依存していることに注意する必要があります。つまり、OS XはBSDであるため、Linuxで機能するものの多くは、コンピューターではわずかに異なり、多くのチュートリアルが役に立たなくなります。一般に、例外はありますが、コマンドラインツールの機能と柔軟性はLinuxのツールよりも少ないと予想できます。

shellに慣れておらず、Shellを学ぶ必要性があまりない場合は、コマンドラインからお気に入りのWebスクリプト言語(PHP、Ruby、Python)を使用することをお勧めします。関数のライブラリ全体でおそらくより一貫性のあるAPIがあるという利点があります。


bash自体で、学ぶ

  • 条件(ファイルを処理する際の防御プログラミングのためのtest/[...]の使用を含む)
  • ループ
  • 変数の割り当て
  • 関数
  • 入力と出力のリダイレクトと配管
  • プログラムとシェル関数の呼び出し(出力をキャプチャして戻り値を読み取る方法を含む)、通常の呼び出しとコマンド置換の両方。
  • オプション。私はset -uが大好きで、これを処理できないスクリプトを使用することを拒否します。
  • 変数タイプ、配列、グロブ

ここでの問題は、bashがジョブ制御などでシステムに非常に結びついており、複雑なスクリプトを作成する場合、学習曲線がかなり急になることです。

私の経験では、* bashのマニュアルページのセクションは不要です。十分に長くしてください。すべて何らかの形で適用できます(SUに関する質問に答えるだけの場合)。


(私の経験では)シェルスクリプトで一般的に使用されるプログラムのいくつか:

  • ファイルの処理とナビゲーション:findlscdrmmvcpchmodchownchflagsddln
  • プログラムの実行:xargsfind -exec
  • データ変換:sortwccatsedawkgrep

OSXに固有のものはおそらく次のとおりです。

launchctlopendsclPlistBuddyplutilosascriptautomatornetworksetupsystemsetupgrowlnotify(Growlがある場合)

そしてもちろん、あなたがやりたいことの正確な性質に応じて、他のものがあります...

date(BSDバリアント— GNUとは大きく異なります)、mountfsckkillsendmail


いくつか、例えばnetcatでは、サードパーティのパッケージをインストールする必要があります。 Homebrew、MacPorts、またはFinkを使用します。

スクリプトがこれらのコマンドラインプログラムを頻繁に使用する場合、またはそのような方法で記述できる場合は、bashスクリプトがこれを自動化するための優れた方法です。


OS Xを使用しているので、AppleScript(AppleScript Editor経由)とAutomatorも調べてください。これらの両方をシェルスクリプトと組み合わせて、非常にうまく統合されたスクリプトソリューションを実現できます。他のOSXアプリケーション(Webブラウザなど)の制御を検討している場合、これらは不可欠です。コマンドラインでopenを使用してさまざまなブラウザでURLを開くことができますが、データを取得します。ロードされたタブからAutomatorまたはAppleScriptが必要です。

また、Rubypythonなどの他のスクリプト言語もMacにプリインストールされており、簡単なヘルパーユーティリティを簡単に作成するために使用できます。これらは、bashおよび通常のUNIXユーティリティに代わるものです。それはあなたがやりたいことの性質に依存します。

少数のファイルをディスク内で移動し、それらを圧縮してSSH経由で転送する場合は、bashがおそらく最良の選択です。 realプログラミングロジック(多くのオブジェクトまたは数値を含むもの)ができたらすぐに、他のスクリプト言語を調べる必要があります。

11
Daniel Beck

(OS Xおよびbash中心の)ブックマークのリストを OS Xターミナルチュートリアル-スーパーユーザー に投稿しました。

スクリプト言語を学ぶための最良の方法の1つは、既存のスクリプトを変更することです。次のようなものを見てください:

自由にダウンロードできるコード例を含む数冊の本:

1
Lri

あなたにとっては、20〜25個のコマンドの基本的な使用法で十分であり、Linuxの基本的なアーキテクチャが必要だと思います。作業の種類に応じて、次のbashコマンドについてのみ学習を開始できます。

vi、ls、find、sed、awk、grep、cat、サービスの起動とシャットダウン、netstat、nmap、traceroute、ping、mv、cp、rmなど。

これらは、bashで使用される最も一般的なコマンドです。

それ以外に、このチュートリアルに従うことができます:

http://www.faqs.org/docs/bashman/bashref_toc.html

http://blog.emson.co.uk/2009/06/18-useful-bash-scripts-for-web-developers/

また、いくつかのプロセスを自動化するための基本的なシェルスクリプトを学ぶ必要があります。

0
Farhan