V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
bugsnail
V2EX  ›  程序员

osx/linux 切换 hosts 的脚本

  •  
  •   bugsnail · 2015-09-03 23:15:25 +08:00 · 3077 次点击
    这是一个创建于 3165 天前的主题,其中的信息可能已经有所发展或是发生改变。

    在 osx/linux 开发有时候要随时切换 hosts ,不想用软件,就自己写了个顺手的 shell 脚本,分享大家的同时,也请指教!

    地址: https://github.com/leo-yi/hostsChangeShell

    18 条回复    2015-09-04 17:49:38 +08:00
    skydiver
        1
    skydiver  
       2015-09-04 00:00:11 +08:00
    打码失败。。。
    zhuangzhuang1988
        2
    zhuangzhuang1988  
       2015-09-04 00:01:49 +08:00   ❤️ 1
    http://oldj.github.io/SwitchHosts/ 这个挺不错的, GUI 的开源, python+wxPython 写的.
    xmoon
        3
    xmoon  
       2015-09-04 00:14:27 +08:00
    神奇打码
    bdbai
        4
    bdbai  
       2015-09-04 00:41:05 +08:00 via iPhone
    大数字杀毒 啧啧
    cxbig
        5
    cxbig  
       2015-09-04 03:12:32 +08:00   ❤️ 1
    好复杂。。。只是切换的话一条 sed 不就解决了,封装成 alias 或 function ,关闭或打开无非就是加减一个#的事。
    ilotuo
        6
    ilotuo  
       2015-09-04 03:22:21 +08:00 via Android
    /go/分享创造 节点
    话说这么简单功能真的需要这么多恶臭和判断么…
    cheneyeah
        7
    cheneyeah  
       2015-09-04 09:43:38 +08:00 via iPhone   ❤️ 1
    author 打错了...
    cattyhouse
        8
    cattyhouse  
       2015-09-04 10:02:59 +08:00   ❤️ 1
    感觉 LZ 只写了一半。。。而且判断超级简单的说,你这么切换了之后。。。想要还原的话怎么办,还要手动 cp 回去。。。 拉了屎却不擦屁股。

    num=1
    if [ $num -eq 1 ];then

    这是一句废话。
    直接 echo 不就行了?


    其实非常简单的事情。。。
    先备份原来的 hosts
    cp /etc/hosts /etc/hosts.orig
    再创建一个自定义的 hosts.my ,内容:
    cat /etc/hosts.orig > /etc/hosts.my
    cat >> /etc/hosts.my << EOF
    xxxx google.com
    xxxx facebook.com
    xxxx xxxx
    EOF

    然后再弄两个 alias

    alias hosts.orig="ln -sf /etc/hosts.orig /etc/hosts"
    alias hosts.my="in -sf /etc/hosts.my /etc/hosts"

    是不是拉屎了也擦屁股了?
    cattyhouse
        9
    cattyhouse  
       2015-09-04 10:10:45 +08:00
    继续吐槽

    echo 127.0.0.1 localhost > /etc/hosts 2>&1

    不能这么 echo 的。。。 至少也要" " 用这个括号扩起来吧?用 echo 多行,可以这么干

    echo "127.0.0.1 localhost
    xxxx google.com
    ...
    ...
    ...
    ...
    xxxx facebook.com" > /etc/hosts

    或者最好:

    cat > /etc/hosts << EOF
    127.0.0.1 localhost
    xxxx google.com
    ...
    ...
    ...
    ...

    xxxx facebook.com
    EOF
    ksc010
        10
    ksc010  
       2015-09-04 10:54:15 +08:00 via iPhone
    bugsnail
        11
    bugsnail  
    OP
       2015-09-04 12:11:35 +08:00
    @cattyhouse 随便看了一下 shell 的语法,多谢指教了~
    bugsnail
        12
    bugsnail  
    OP
       2015-09-04 12:12:16 +08:00
    @cheneyeah 绝对有代码洁癖!不过很提倡
    bugsnail
        13
    bugsnail  
    OP
       2015-09-04 12:15:26 +08:00
    @cxbig 这个思路不错,不过我目前这个自己够用了(其实是 shell 编程不会 orz...)
    bugsnail
        14
    bugsnail  
    OP
       2015-09-04 12:16:13 +08:00
    @zhuangzhuang1988 就是不想用软件,太麻烦了...
    不过还是谢谢~
    bugsnail
        15
    bugsnail  
    OP
       2015-09-04 12:21:09 +08:00
    @cattyhouse 切换回之前的,多 cp 一个这样的 shell ,多一个别名,是一样的,当然可以设置 N 个....
    pheyer
        16
    pheyer  
       2015-09-04 13:29:01 +08:00
    好像 OSX 下的 Alfred 也有相应的 WorkFlow ,更方便一些
    cattyhouse
        17
    cattyhouse  
       2015-09-04 13:30:44 +08:00 via iPhone
    @bugsnail 这玩意不需要 shell ,只需要用 ln 就可以了,也就是 link 。
    omph
        18
    omph  
       2015-09-04 17:49:38 +08:00
    缩进有问题,差评!
    最好能 5 行搞定
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2449 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 08:31 · PVG 16:31 · LAX 01:31 · JFK 04:31
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.