LoginSignup
2
2

More than 5 years have passed since last update.

記事にするほどではないけど便利な自作ShellScriptまとめ

Last updated at Posted at 2018-09-22

よく使う便利なコマンドはまとめて全部しまっちゃおうねぇ。ホームディレクトリにscriptフォルダを作り、そこからsourceコマンドでまとめてあるscriptを呼び出してつかっています。暇な時に簡単な解説つけて更新します。

↓↓↓ここからが内容↓↓↓

ローカルレポジトリと同じ構成の今いるディレクトリを反映し、ファイルを更新できるShellScript

pwd<< をつかって今いるパスを抜き出し、sed によってパスの前半部分を消去し、gitのパスを引くことで今いるディレクトリのファイルを見つけcp を使って上書きします。END が崩れているのは仕様です。バックアップをとりつつ更新もらくらくです。

update.sh

main(){
  func(){
    echo "copy $i ? y/n"
    read w
    if [ "$w" == "y" ]; then
      y=$(pwd)
      z=$(sed 's/\/home\/aki\/program//g' <<END
$y
END
)
      cp $i ~/github/portfolio$z/
      echo "$i copy"
    elif [ "$w" == "n" ]; then
      echo "$i didn't"
    else
      echo "error"
      func
    fi
  }
  x=$(ls)
  for i in $x
  do
    func
  done
}

echo "script start"
main
echo "script end"

ディレクトリ内のファイルを消去するかしないか選択し、連続的に消去できるShellScript

ls で取得したディレクトリ内の値をIO処理させずそのまま変数に代入する方法を見つけたので作ってみました。簡単なスクリプトですがGUIでのあの煩わしさがなくて幸せになれます。

プログラムはgitのレポジトリに置いてあります。
rmCycle.sh
https://github.com/mamepon2580/portfolio/tree/master/ShellScript/rmCycle

rmCycle.sh

main(){
  x=$(ls)
  for i in $x
  do
    echo "remove file $i ? y/n"
    read y
    if [ "$y" == "y" ];then
      rm -r $i
      echo "$i remove"
    elif [ "$y" == "n" ]; then
      echo "$i didn't"
    else
      echo "error"
    fi
  done
  ls
}

echo "start script"
main
echo "end script"

今いる位置を確認しながらディレクトリ内を、縦横無尽に駆け巡るShellScript

ディレクトリ名を覚えられない頭の弱い子で、ls cd をいつも交互に繰り返しているので、いっそのと一つにまとめちゃいました。ついでに番号で移動できるようにしたのと、再帰を使って連続的に処理できるようにしています。

プログラムはgitのレポジトリに置いてあります。
lscd.sh
https://github.com/mamepon2580/portfolio/tree/master/ShellScript/lscd

lscd.sh

##lscd.sh
main() {
  x=$(ls)
  y=$(sed 's/ /\n/g' <<EOF
$x
EOF
)
  cat -n <<EOF
$y
EOF
  y=($y)
  echo "please diectry name or .. or q or number"
  read z
  if [ "$z" == "q" ] ; then
    echo "quit"
  elif [ "$z" == ".." ] ; then
    cd ..
    echo "change directry"
    echo "${PWD##*/}"
    main
  else
    w=$(expr $z - 1)
    cd ${y[$w]}
    echo "change directry"
    echo "${PWD##*/}"
    main
  fi
}

echo "start lscd script"
main
echo "end lscd script"

gitのリポジトリにpull、pushするだけの簡単なShellScript

サルでも覚えられると巷でウワサされるgitコマンドを忘れ、Qiitaの記事を開いてそのまま入力することに疲れてたんだ…。簡単なpull、pushのコマンドをまとめたshellscriptです。

プログラムはgitのレポジトリに置いてあります。
pull.sh
https://github.com/mamepon2580/portfolio/tree/master/shellscript/pull
push.sh
https://github.com/mamepon2580/portfolio/tree/master/shellscript/push

pull.sh

  • pull.sh はそのまま一緒にリモートリポジトリ送りにされるのが嫌なので、ローカルリポジトリのすぐ上のディレクトリに保存しておきます。pullScript 中身はコマンドを固めただけです。
pullScript(){
 cd portfolio
 git pull origin master
 cd ..
}

echo "start pull script"
pullScript
echo "end pull script"

push.sh

  • push.shpull.shと同様に、ローカルリポジトリのすぐ上のディレクトリに保存しておきます。read で変数 x を入力として受け付けgit commit -m 引数としてコミットコメントを渡します。また変数 y を定義しその値によって分岐させます。※注意if文の条件は[スペース 条件式 スペース]にしないとうまくいきません←ここで二時間位悩んだ。
pushScript(){
 cd portfolio
 git add .
 echo "all file in staging"
 echo "please comment"
 read x y
 git commit -m $x -m $y
 echo "all file in local repository"
 echo "please :m is master , :b is brunch"
 read z
 if [ "$z" = ":m" ] ; then
  git push origin master
 elif [ "$z" = ":b" ] ; then
  echo "please brunch name"
  read w
  git push origin $w:$w
 else
  echo "error"
fi
 cd ..
}

echo "start push script"
pushScript
echo "end push script"
2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2