2018/12/15 : 使用中のhostsパターンを確認できるようなコードを追記
作った理由
Macでhostsを変更するたびに、vimで変更させるのだるい...って思ったので、コマンド作りました。
GitHub
コード
var=$1
#check
if [ -z $var ]; then
exit
else
case "$var" in
#your host key
"xxx" ) : ;;
"chk" )
if [ -d $HOME/hosts/.chk/ ]; then
basename $HOME/hosts/.chk/*
exit
else
:
fi
;;
* ) exit ;;
esac
fi
mm=`date +'%Y%m%d'`
cd $HOME
if [ -d "hosts" ]; then
:
else
#Initial activation
#mkdir
mkdir hosts
cd hosts
mkdir backup .chk "your directory"
find . -name "hosts*" -type d -exec cp /etc/hosts {} \;
echo "hosts update..."
exit
fi
#backup
cp -f /etc/hosts $HOME/hosts/backup/hosts_bk_$mm
#check
if [ -d $HOME/hosts/.chk/ ]; then
rm $HOME/hosts/.chk/*
fi
touch $HOME/hosts/.chk/$var
#main system
#change_hosts
case "$var" in
"xxx" ) cp $HOME/hosts/"your directory"/"xxx" $HOME/hosts/"xxx"/hosts && sudo cp -f $HOME/hosts/"your directory"/hosts /etc/hosts && rm $HOME/hosts/"your directory"/hosts ;;
#Add as you like
esac
exit
#処理の流れと使い方
コマンドの使用方法
change_hosts {key}
keyとは切り替えるための文字列になります。
下記の箇所でkey($var
)を実行時にチェックしています。
正しくない場合は、処理を終了させています。
chk
が入力された場合は、ディレクトリの存在チェックを行い、.chkにあるファイル名を表示させる。
#check
if [ -z $var ]; then
exit
else
case "$var" in
#your host key
"xxx" ) : ;;
#hosts check!
"chk" )
if [ -d $HOME/hosts/.chk/ ]; then
basename $HOME/hosts/.chk/*
exit
else
:
fi
;;
* ) exit ;;
esac
fi
該当のkeyの場合は、下記の通り処理をします。
ここでは、$HOME
直下にhosts
ディレクトリが存在するかチェックします。
このコマンドを最初に実行した場合は、else
の処理に入り、hosts
ディレクトリ及びディレクトリに現在のhostsをコピーし、処理は終了します。
※ディレクトリ生成・コピー後に処理を中断させる理由としては、hostsは人によって設定するものが違うため、各々で修正することをかねてです。(不親切かもしれませんが...)
cd $HOME
if [ -d "hosts" ]; then
:
else
#Initial activation
#mkdir
mkdir hosts
cd hosts
#ここは任意のディレクトリを追加指定ください。
mkdir backup .chk "your directory"
find . -name "hosts*" -type d -exec cp /etc/hosts {} \;
echo "hosts update..."
exit
fi
上記で、ディレクトリ生成・hostsのコピー・修正などが完了した後、実行すると下記が実行されます。
実行内容は、backup
ディレクトリにbackupされます。
$varに一致した内容のhostsを/etc/hosts
に上書きを行います。
.chk
ディレクトリはchkeck用のファイルを格納します。
下記の、#checkはディレクトリ存在チェックを行った後、.chkの中を削除します。
削除が完了したら、この時の引数でtouch $HOME/hosts/.chk/$var
します。
touch
でできたファイルが、現在のhostsを確認するためのファイルになります。
#backup
cp -f /etc/hosts $HOME/hosts/backup/hosts_bk_$mm
#check
if [ -d $HOME/hosts/.chk/ ]; then
rm $HOME/hosts/.chk/*
fi
touch $HOME/hosts/.chk/$var
#main system
#change_hosts
case "$var" in
"xxx" ) cp $HOME/hosts/"your directory"/"xxx" $HOME/hosts/"xxx"/hosts && sudo cp -f $HOME/hosts/"your directory"/hosts /etc/hosts && rm $HOME/hosts/"your directory"/hosts ;;
#Add as you like
esac
exit
最後に
GitHubで提供はしていますが、hostsは人によって違うものなので同じhostsは組織とかでなければ存在しないかと思っています。(いじらない人にとっては一緒ですが)
なので、このコードは基本的にはいじらないと機能しませんので、お手数ですが使用したい方は修正して使用してあげてください。