私はMacユーザーでありWeb開発者であり、ワークフローを管理するための自動化ツールを作成したいと考えています。あるタイプのウェブサイトを起動するための単一のコマンドを言います。
Bashシェルスクリプトのどの部分を学ぶ必要がありますか?とてもたくさんあります:
または、Webプロジェクトのコマンドライン自動化をアーカイブするために何か他のことを学ぶ必要がありますか?
他のスクリプト言語やプログラミング言語とは異なり、シェルスクリプト重くはOSから提供されるコマンドラインアプリケーションに依存していることに注意する必要があります。つまり、OS XはBSDであるため、Linuxで機能するものの多くは、コンピューターではわずかに異なり、多くのチュートリアルが役に立たなくなります。一般に、例外はありますが、コマンドラインツールの機能と柔軟性はLinuxのツールよりも少ないと予想できます。
shellに慣れておらず、Shellを学ぶ必要性があまりない場合は、コマンドラインからお気に入りのWebスクリプト言語(PHP、Ruby、Python)を使用することをお勧めします。関数のライブラリ全体でおそらくより一貫性のあるAPIがあるという利点があります。
bash
自体で、学ぶ
test
/[
...]
の使用を含む)set -u
が大好きで、これを処理できないスクリプトを使用することを拒否します。ここでの問題は、bash
がジョブ制御などでシステムに非常に結びついており、複雑なスクリプトを作成する場合、学習曲線がかなり急になることです。
私の経験では、* bash
のマニュアルページのセクションは不要です。十分に長くしてください。すべて何らかの形で適用できます(SUに関する質問に答えるだけの場合)。
(私の経験では)シェルスクリプトで一般的に使用されるプログラムのいくつか:
find
、ls
、cd
、rm
、mv
、cp
、chmod
、chown
、chflags
、dd
、ln
xargs
、find -exec
sort
、wc
、cat
、sed
、awk
、grep
OSXに固有のものはおそらく次のとおりです。
launchctl
、open
、dscl
、PlistBuddy
、plutil
、osascript
、automator
、networksetup
、systemsetup
、growlnotify
(Growlがある場合)
そしてもちろん、あなたがやりたいことの正確な性質に応じて、他のものがあります...
date
(BSDバリアント— GNUとは大きく異なります)、mount
、fsck
、kill
、sendmail
いくつか、例えばnetcat
では、サードパーティのパッケージをインストールする必要があります。 Homebrew、MacPorts、またはFinkを使用します。
スクリプトがこれらのコマンドラインプログラムを頻繁に使用する場合、またはそのような方法で記述できる場合は、bash
スクリプトがこれを自動化するための優れた方法です。
OS Xを使用しているので、AppleScript(AppleScript Editor経由)とAutomatorも調べてください。これらの両方をシェルスクリプトと組み合わせて、非常にうまく統合されたスクリプトソリューションを実現できます。他のOSXアプリケーション(Webブラウザなど)の制御を検討している場合、これらは不可欠です。コマンドラインでopen
を使用してさまざまなブラウザでURLを開くことができますが、データを取得します。ロードされたタブからAutomatorまたはAppleScriptが必要です。
また、Ruby
、python
などの他のスクリプト言語もMacにプリインストールされており、簡単なヘルパーユーティリティを簡単に作成するために使用できます。これらは、bash
および通常のUNIXユーティリティに代わるものです。それはあなたがやりたいことの性質に依存します。
少数のファイルをディスク内で移動し、それらを圧縮してSSH経由で転送する場合は、bash
がおそらく最良の選択です。 realプログラミングロジック(多くのオブジェクトまたは数値を含むもの)ができたらすぐに、他のスクリプト言語を調べる必要があります。
(OS Xおよびbash中心の)ブックマークのリストを OS Xターミナルチュートリアル-スーパーユーザー に投稿しました。
スクリプト言語を学ぶための最良の方法の1つは、既存のスクリプトを変更することです。次のようなものを見てください:
自由にダウンロードできるコード例を含む数冊の本:
あなたにとっては、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/
また、いくつかのプロセスを自動化するための基本的なシェルスクリプトを学ぶ必要があります。