12行のbashスクリプトで集中力を取り戻す方法

[PR]記事内のアフィリエイトリンクから収入を得る場合があります
  • URLをコピーしました!

Pexels photo 1804035

コンピューターで作業を行っている際、誘惑が多く集中を維持できないと悩んでいる方は多いかもしれません。

本日紹介するブログ記事「Reclaim your focus with ~12 lines of bash」は、その問題を解決する、わずか12行のbashスクリプトを紹介しています。

紹介されているのはhostsファイルを書き換えて特定のサイトをブロックするテクニックで、ColdTurkeyLeechBlock NGFreedomSelf Controlといった専用ツールと同じ機能をシンプルなスクリプトで実現しています。

以下の手順をまず実行します。

  • 既存の/etc/hostsファイルをバックアップする。
  • バックアップを/etc/hosts-checkingにリネームする。
  • /etc/hosts-doingにそのコピーを作成し、邪魔なWebサイトをすべて追加する(GmailやHackerNews、Spotifyなど自分が頻繁にアクセスするサイト)
  • 以下のchecking関数を~/.bashrcに追加する。
  • オプション: 毎回パスワードを入力するのをさけるため/etc/sudoersyusername ALL= (root)NOPASSWDを追加する。

次に~/.bashrc以下の内容を追加します。

function checking () {
    set -x
    set -o errexit
    export DURATION="${1:-1m}"
    echo "Starting a Checking session lasting ${DURATION}"
    sudo ln -sf /etc/hosts-checking /etc/hosts && resolvectl flush-caches
    echo "Distracting websites and comms unblocked!"
    sleep $DURATION
    notify-send "Checking session complete! Close your tabs."
    sleep 1m
    sudo ln -sf /etc/hosts-doing /etc/hosts && resolvectl flush-caches
    echo "Done"
    systemctl suspend
}

この後checking 15mchecking 1hrと実行すると、その間だけネットワークに通常アクセスできる状態となり(hosts-checkingが有効な状態)、それ以外は邪魔なものがブロックされた状態(hosts-doingが有効な状態)となります。

なお、hosts-doingの記載例は次のようになります。邪魔なサイトにIPアドレス: 127.0.0.1を割り当てることで、使えなくするわけです。

127.0.0.1       news.ycombinator.com lobste.rs  
127.0.0.1       plausible.io googleanalytics.com goatcounter.com umami.is usefathom.com artists.spotify.com  
127.0.0.1       commafeed.com feedly.com inoreader.com
127.0.0.1       reddit.com facebook.com x.com instagram.com bsky.social threads.net craigslist.org
127.0.0.1       gmail.com slack.com discord.com

なお、今回紹介したスクリプトはnotify-sendなどLinuxに特有のコマンドを使用しています。macOS用に書き換える方法や、集中力を高める方法に関する議論がHacker Newsで行われています。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次