共計(jì) 1567 個(gè)字符,預(yù)計(jì)需要花費(fèi) 4 分鐘才能閱讀完成。
自動(dòng)寫代碼機(jī)器人,免費(fèi)開通
這篇文章給大家分享的是有關(guān) linux 中如何使用 entr 命令的內(nèi)容。丸趣 TV 小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨丸趣 TV 小編過來看看吧。
entr 是一個(gè)命令行工具,當(dāng)每次更改一組指定文件中的任何一個(gè)時(shí),都能運(yùn)行一個(gè)任意命令。你在標(biāo)準(zhǔn)輸入給它傳遞要監(jiān)控的文件列表,如下所示:
git ls-files | entr bash my-build-script.sh
或者
find . -name *.rs | entr cargo test
或者任何你希望的。
快速反饋很棒
就像世界上的每個(gè)程序員一樣,我發(fā)現(xiàn)每次更改代碼時(shí)都必須手動(dòng)重新運(yùn)行構(gòu)建 / 測(cè)試非常煩人。
許多工具(例如 hugo 和 flask)都有一個(gè)內(nèi)置的系統(tǒng),可以在更改文件時(shí)自動(dòng)重建,這很棒!
但是通常我會(huì)自己編寫一些自定義的構(gòu)建過程(例如 bash build.sh),而 entr 讓我有了一種神奇的構(gòu)建經(jīng)驗(yàn),我只用一行 bash 就能得到即時(shí)反饋,知道我的改變是否修復(fù)了那個(gè)奇怪的 bug。萬歲!
重啟服務(wù)器(entr -r)
但是如果你正在運(yùn)行服務(wù)器,并且每次都需要重新啟動(dòng)服務(wù)器怎么辦?如果你傳遞 -r,那么 entr 會(huì)幫你的
git ls-files | entr -r python my-server.py
清除屏幕(entr -c)
另一個(gè)簡潔的標(biāo)志是 -c,它讓你可以在重新運(yùn)行命令之前清除屏幕,以免被前面構(gòu)建的輸出分散注意力。
與 git ls-files 一起使用
通常,我要跟蹤的文件集和我在 git 中的文件列表大致相同,因此將 git ls-files 傳遞給 entr 是很自然的事情。
我現(xiàn)在有一個(gè)項(xiàng)目,有時(shí)候我剛創(chuàng)建的文件還沒有在 git 里。那么如果你想包含未被跟蹤的文件怎么辦呢?這些 git 命令行參數(shù)就可以做到(我是從一個(gè)讀者的郵件中得到的,謝謝你!):
git ls-files -cdmo --exclude-standard | entr your-build-script
有人給我發(fā)了郵件,說他們做了一個(gè) git-entr 命令,可以執(zhí)行:
git ls-files -cdmo --exclude-standard | entr -d $@
我覺得這真是一個(gè)很棒的主意。
每次添加新文件時(shí)重啟:entr -d
git ls-files 的另一個(gè)問題是有時(shí)候我添加一個(gè)新文件,當(dāng)然它還沒有在 git 中。entr 為此提供了一個(gè)很好的功能。如果你傳遞 -d,那么如果你在 entr 跟蹤的任何目錄中添加新文件,它就會(huì)退出。
我將它與一個(gè) while 循環(huán)配合使用,它將重啟 entr 來包括新文件,如下所示:
while truedo{ git ls-files; git ls-files . --exclude-standard --others; } | entr -d your-build-scriotdone
entr 在 Linux 上的工作方式:inotify
在 Linux 中,entr 使用 inotify(用于跟蹤文件更改這樣的文件系統(tǒng)事件的系統(tǒng))工作。如果用 strace 跟蹤它,那么你會(huì)看到每個(gè)監(jiān)控文件的 inotify_add_watch 系統(tǒng)調(diào)用,如下所示:
inotify_add_watch(3, static/stylesheets/screen.css , IN_ATTRIB|IN_CLOSE_WRITE|IN_CREATE|IN_DELETE_SELF|IN_MOVE_SELF) = 1152
感謝各位的閱讀!關(guān)于“l(fā)inux 中如何使用 entr 命令”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí),如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!
向 AI 問一下細(xì)節(jié)
丸趣 TV 網(wǎng) – 提供最優(yōu)質(zhì)的資源集合!