シェルスクリプトの使い方
前の記事読んでもスクリプトってなにそれみたいな人向け(超超初心者向け)の記事です。僕も初心者です。スクリプトの意味を聞かれても僕にもわかりませんが、使い方は少しわかりますのでお教えします。
まずはスクリプトを書きましょう。
何らかの何かのテキストエディタでHello.shというもの(名前は何でもいいです)を作成し、以下の文字を打ち込んで(コピペしてみて)ください。
#!/bin/sh echo "Hello,world!"
これを保存して、端末(macならターミナル.app)からそのHello.shのある場所まで行って(「cd」コマンドを用いる)、
「chmod +x Hello.sh」と打ってEnter。
「./Hello.sh」とコマンドで打ってみましょう。
すると、
Hello,world!
と出ます。出ない場合はちゃんとコピペできてないか、場所が違います。
では解説します。
まずシェルスクリプトとは、簡単にいうと(簡単にしかいえない)ターミナルコマンドをあらかじめ書いてまとめておくと、それをまとめて実行してくれるヤツです。
今回の例では「echo」コマンドを実行してくれました。
Hello.shの中身の解説ですが、
1行目はもう固定です。どんなスクリプトでもこれ書いてください。(よく知らないけど...)
そして「echo "Hello,world!"」は「echo コマンド」でググると分かるのですが、引数に与えられた文字列を表示するコマンドです。
ここでは""に囲まれた「Hello,world!」という文字を表示するということです。
そしてあとはこのスクリプトを保存して実行すればokなんですが、そのままだと実行権がないと言われてしまうので、このファイルに実行権を与える「chmod +x Hello.sh」をまずターミナルで実行して準備完了。
あとは「./Hello.sh」というコマンドでパスを今いる場所にしてHello.shを実行する。
これでHello.shの中に記述されたechoを実行してくれたというわけですね。
応用例としては、
もちろんターミナルコマンドならなんでもいいので、前記事
kokuyokugetter.hatenablog.com
みたいに色々できるわけです。(この記事のはうまくいってないけど)
これで色々作って快適にコマンド一つで作業をこなすぜ〜
って時にわざわざそのファイルの場所に行って「./hoge.sh」って打つわけにもいかないので、
自分のホームディレクトリの下に「bin」というディレクトリを作ってそこにPATHを通してそこでスクリプトを作っていきましょう。
なんか難しいことを行ってるようですが、本気で調べれば3分もかからずにできると思うので頑張ってください。
そもそもどんなスクリプトを書くべきなのかは僕も知りません。『超捗るコマンド!!!「rm -rf /」!!!!!ぽまいら急げ!!!!』とかあったらデマなので絶対にやらないようにしてください。以上、適当に3つ作って試してるだけのクソ初心者でした。
Janetter.app(Mac)のスリープ後のクラッシュを直すスクリプト
を、作りたかった......
#!/bin/sh set -eu #↑2行おまじないです(よく知らんけどシェルですってことと安全策らしい) pid=$(ps aux | grep [/]Applications/Janetter.app/Contents/MacOS/Janetter | awk '{print $2}') #Janetterのプロセスidを抜き出してpidという変数にぶち込んでやるぜ〜 if [ -z "$pid" ]; then #pidに何も入らなかったら echo "Janetter起動してへんやん、起動したるわ" #って文字がでる else kill $pid #pidにぶち込まれてたらJanetter終わったな fi open -a /Applications/Janetter.app/Contents/MacOS/Janetter #Janetter開きます
なんかうまくいかずに
"LSOpenURLsWithRole() failed for the application /Applications/Janetter.app/Contents/MacOS/Janetter with error -600."
って怒られるのでどうにかして偉い人!
一応Janetter.appを開くとエラー出るらしいからちゃんとContents以下まで掘ってるのにな。
killは上手くいってるようで、もう一度スクリプトを実行すると関西弁で受け入れてくれる。
もちろん一発で成功するときもある。
そのうちスリープ解除で自動で実行してくれるようにしたいけど、エラーも分からんしまだ無理やね。