エロファボポタク

ナウなヤングなのでブログ書く。内容はノージャンル

シェルスクリプトの使い方

前の記事読んでもスクリプトってなにそれみたいな人向け(超超初心者向け)の記事です。僕も初心者です。スクリプトの意味を聞かれても僕にもわかりませんが、使い方は少しわかりますのでお教えします。

まずはスクリプトを書きましょう。

何らかの何かのテキストエディタで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は上手くいってるようで、もう一度スクリプトを実行すると関西弁で受け入れてくれる。
もちろん一発で成功するときもある。


そのうちスリープ解除で自動で実行してくれるようにしたいけど、エラーも分からんしまだ無理やね。

vimを使い始めました(.vimrc試行錯誤編)

今までemacsをデフォルトでチマチマ触るくらいしかしてなかったので、
そろそろテキストエディタについて本気で考えようと思って色々見てみた。

続きを読む