為什麼我使用 Linux 開發

2022-01-12 10:58:25 字數 2303 閱讀 8843

當我對 linux 的印象似乎還停留在黑乎乎的命令列介面上的時候,我身邊的一些朋友告訴我或者建議我使用 linux 時,我會一臉驚訝的問他,那個怎麼用(來開發或者日常使用)?

首先說說我每天打交道最多的 shell 吧,我給自己設定的預設 shell 是 fish。你還可以搭配 fzf 這個軟體,實現高階的命令補全功能。

git 也是日常開發中使用頻率最高的軟體之一,tig 則是 git 的乙個命令列介面,不僅可以展示圖形化提交記錄,還能對提交資訊進行全文搜尋,除此之外,這也是我找到的第二個能夠快速開啟超大 git 倉庫的 git ui,另乙個是 windows 專屬的 git extensions。

docker 可以讓我部署應用變得更加容易,而 lazydocker 則可以讓我用一種「懶人」的方式來管理本機的 docker。

lazy docker —— 簡單易用的 docker 管理面板.

windows 桌面上有乙個叫做「我的電腦」的圖示,但是這並不意味著我真的能完全掌控我的這台電腦。我沒法隨意的修改系統的字型,我沒法在命令列中顯示 emoji(9102 年,微軟終於緩解了這個問題),我沒法設定系統的預設快捷鍵,我沒法根據自己的喜好做很多的事情,在一些不是 pc 的裝置上,我甚至沒法關掉開機的「duang!!!」。不,這不是我的電腦。

讓我持續的使用 linux 作為日常主力作業系統的原因非常簡單,因為跟他一起工作非常的舒適。

編寫**的工具無非就兩種:ide 與編輯器。我最常用的 ide 是 jetbrains rider,它一站式解決了我前端、後端以及資料庫開發的問題。如果只是用來編寫簡單的文字,我首選的是 neovim,搭配 spacevim,顏值效率兩不誤。除此之外,vscode 也是我會用到的編輯器之一,但是我不怎麼用它來寫前端**,只有在需要編寫 powershell 指令碼以及 fake 指令碼的時候我才會用到它。

yakuake 是乙個全域性下拉式終端模擬器,可以做到隨叫隨到,所以我專門用它來執行一些與工作無關的命令,例如在網上學習到了新的 shell 黑魔法,只需要按下ctrl+alt+space下拉終端就可以在自己的電腦上嘗試執行了。

雖然我的主力系統是 linux,但是我仍然能夠享受到 office 全家桶的便利。onedrive + office online 基本可以處理工作中會遇到的絕大多數的 office 檔案了。而 onedrive 雲儲存也可以通過使用 rclone 的方式掛載到我的電腦上,在使用體驗上與本地硬碟並沒有太大的差別。

原先使用 windows 的時候,可以用 iis 來守護開發時要用的 aspnetcore 程序,現在切換到了 linux,我選擇了使用 pm2 + nginx docker 作為替代品,相較於 iis,這種執行後台程序的方式更加輕量,不會涉及到許可權的問題,而且出了問題也容易排查。

對於資料庫這樣的軟體,我並沒有選擇用安裝軟體包的方式來執行它們,docker 更適合這類程序,通過乙個 docker-compose 就可以讓我實現一鍵啟動開發環境的效果。

而像 aria2 以及 rclone 這樣的軟體,因為它們在執行的時候需要訪問我的檔案系統,所以就不適合使用 docker 來執行(docker 會汙染檔案許可權)。這個時候使用者級的 systemd 就非常好用了,使用者登入時啟動、失敗自動重試、網路連線後啟動,這些需要都可以用 systemd 來實現。

因為有 freedesktop 的存在,所以我可以非常容易的利用桌面環境提供的功能。

open命令可以用來在終端使用關聯的應用程式開啟乙個檔案;xclip則可以用來操作剪下板中的內容;notify-send則可以用來建立通知訊息。這些工具可以幫助我打破終端與桌面環境的次元壁,例如在完成乙個長時間任務後傳送乙個系統通知提醒我,非常的便利。除了這些命令列程式外,一些有圖形化介面的軟體也可以利用 freedesktop 帶來的 api 來開發酷炫的功能。例如,如果你使用 fcitx 的話,按下ctrl+;,就可以檢視剪下板的歷史記錄,kde 自帶的 clipboard 掛件也有類似的功能,而且更加強大。

libinput-gestures 也是一款非常實用的軟體,它可以用來自定義觸控板手勢,支援的手勢種類多,而且可以用來觸發任意的命令,是自定義系統行為不可或缺的軟體。

這篇文章受啟發於 為什麼建議大家使用 linux 開發,我與這篇文章的作者的觀點不太一樣,我並不會建議其他人隨隨便便就把開發環境切換到 linux,因為當乙個人對 windows 以及 macos 感到非常不滿的時候,他自然就會選擇使用 linux —— talk is cheap, show me your dot files

我為什麼使用PowerShell

在windows作業系統上,之前我通常用cmd執行命令列操作,比如在cmd使用ipconfig命令檢視本機ip,但是我現在則經常使用powershell。怎麼開啟powershell,以win10為例 ctrl q 開啟cortana搜尋 輸入powershell x86代表32位作業系統,像我的機...

我為什麼使用JWT

前段時間做資料平台的鑑權,想了很多種方案,但最後還是選擇了jwt來進行身份驗證與許可權控制。期間考慮過傳統的user passwd session id,也考慮了隨機生成token,後端再來維護一套許可權控制邏輯,甚至打算使用類似kebos這種來實現安全通訊,但對於資料平台這種業務,感覺許可權控制這...

我為什麼使用gmail?

據說有一項調查顯示,一般來說都是精英或者有精英意識的人們才會用gmail。當然,對於google 的使用也是如此。好吧,我承認,我不是精英,而且也想成為精英。但是我必須說明,這不是我使用gmail的原因。在很久很久以前,那時候的gmail還沒有開放註冊,還需要邀請的時候,我從豆瓣的乙個朋友那裡得到了...