內容簡介
前言
測試命令
編寫 Shell
總結
1. 前言
作為一個程序員,隨著年齡的增長,眼睛已經不像年輕時候那麼耐用了。之前 20 幾歲時還可以每天自學很多小時,凌晨 1 點睡,早上6 點起來。
請見 程序員在簡書 | 關於我的法蘭西 。
可以參看我之前寫的幾篇文章:
程序員如何保持健康
程序員如何長壽 | 從CSDN大牛博主猝死想到的
程序員在法國 | "投資"健康,半年減13公斤
比如我們的眼睛,一天盯著電腦一般會超過 10 個小時(上班 7 小時 + 回家數小時)。
而且,作為程序員,久坐對腰部,頸部,等等都有損害。
因此,我迫切需要用一個類似 番茄鍾 的東西來幫我定時。每隔一段時間,提醒我離開電腦,站起來走一走,倒杯水,閉目養神。
我在公司裡所用的操作系統是 Linux 發行版 Ubuntu,我就想能不能不安裝番茄鍾軟件 (網上一搜不少。有些是在線的,比如 https://tomato-timer.com/ ,還有一些是瀏覽器插件),而自己用Shell 腳本來實現一個簡易的番茄鍾。
這樣我把這個 Shell 的路徑添加到 Path 環境變量中,就可以當成命令來執行了,很方便。
2. 測試命令
既然要實現多少時間做什麼,我們不禁想到之前在我寫的那課 Linux探索之旅 | 第三部分第五課:延時執行,唯慢不破 中的 at 命令,可以用於延時執行任務。
那麼用 at 命令實現延時之後,做什麼好呢?為了不影響其他同事,我們不能放一段音樂或視頻。
因此,最好是顯示一張圖片,而且是全屏顯示,這樣便於提醒自己:時間到了,該休息一下了。
保存為 protect_eyes.jpg(名字隨便取),然後把它放在隨便那個目錄裡,比如我暫時放在家目錄中。
要顯示圖片,我們可以用 feh 這個圖片查看軟件。
所以我們可以來測試以下命令:
echo 'env DISPLAY=:0 feh -F ~/protect_eyes.jpg' | at now+1 minutes
解釋一下以上的命令:
echo :用於把單引號擴起來的命令作為要執行的指令傳遞給 at 命令。
at now+1 minutes :表示在當前時間之後 1 分鐘執行。
env DISPLAY=:0 :feh 命令需要指定 DISPLAY 環境變量,在 Linux / Unix 類操作系統上,DISPLAY 變量用來設置將圖形顯示到何處。
feh -F ~/protect_eyes.jpg :用 feh 來顯示 ~/protect_eyes.jpg 這張圖片。-F 參數表示「全屏顯示」圖片。
所以上面的命令表示:「在當前時間的 1 分鐘之後,用 feh 來全屏顯示 protect_eyes.jpg 這張圖片」。
我們按下回車鍵,執行這句命令,1 分鐘之後,圖片被全屏顯示了。
3. 編寫 Shell
既然命令行得通,我們就編寫一個 Shell 腳本,把命令加進去即可。
關於 Shell,可以參看我寫的 Linux探索之旅 | 第五部分第二課:一入Shell深似海,酷炫外殼惹人愛 。
vim tomato_clock
然後在裡面寫入以下代碼 :
#!/bin/bashecho 'env DISPLAY=:0 feh -F ~/protect_eyes.jpg' | at now+30 minutes
保存退出。我這裡設置了 30 分鐘,你可以隨便設置延遲時間。
接著,給腳本加上可執行權限:
chmod +x tomato_clock
再把這個腳本移動到我家目錄的 bin 目錄中,這個 bin 目錄是我自己創建的,裡面包含了我自定義的一些腳本,而 bin 目錄的路徑已經在 Path 環境變量中了:
mv tomato_clock ~/bin
之後,你就可以在隨便那個目錄中輸入
tomato_clock
來啟動一個番茄鍾了。
一個番茄鍾到點之後,你可以再啟動一個。
4. 總結
如果要堅持做程序員,那麼請好好對待自己的身體。
at 命令可以方便地執行延時任務。但 at 命令只能執行某個(或某幾個)命令一次。如果你想讓任務定時執行,那麼你可以使用 crontab 命令,如 Linux探索之旅 | 第三部分第五課:延時執行,唯慢不破 所述。
你可以優化這個程序,比如加入取消延時任務的參數;或者擴展其他功能,做一個更完美的番茄鍾軟件。
我是[謝恩銘](http://www.jianshu.com/u/44339a8a9afa),在巴黎奮鬥的軟件工程師。
[我的簡介](http://www.jianshu.com/p/e1c5835fee7d)
[我的經歷](http://www.jianshu.com/p/86c2cfe3b390)
熱愛生活,喜歡游泳,略懂烹飪。
人生格言:「向著標杆直跑」
閱讀更多 程序員聯盟 的文章