1. 程式人生 > >McFly:利用神經網路為 Bash 提供歷史命令搜尋功能

McFly:利用神經網路為 Bash 提供歷史命令搜尋功能

假如你在命令列模式下渡過了很長時間,那麼你必定使用過或者聽說過 BASH 的 反向搜尋 功能,在 Bash 中執行反向搜尋功能的快捷鍵是 Ctrl+r。通過使用這個特性,我們可以找到我們執行過的命令而無需再次輸入它們。當然,你可以使用上下鍵來搜尋你的 bash 命令記錄,但使用 Ctrl+r 快捷鍵可以讓這個搜尋過程更簡單快速。今天我找尋到了 Bash 歷史命令搜尋特性 Ctrl+r 的一個替代品,它就是 McFly。McFly 是一個使用 Rust 程式語言寫就的簡潔工具,自帶一個智慧的搜尋引擎,用來替換預設的 Ctrl+r 這個 Bash 歷史命令搜尋功能。 McFly 提供的命令建議都是通過一個小巧的 神經網路

來實時排序給出的。

McFly 重新綁定了 Ctrl+r 快捷鍵,可以從你的 Bash 歷史命令中找到所有最近執行過的命令。它通過追溯下面的資訊來增強你的 shell 歷史命令搜尋特性:

  • 命令結束狀態
  • 當你執行命令時的時間戳
  • 以及你執行命令的執行目錄

它將所有追溯的資訊儲存在一個 SQLite 資料庫中。由於它追溯了命令的歷史結束狀態,所以你可以很輕易地忽略掉失敗的命令。聽起來很酷,對吧?

在給出一個命令建議時,它將考慮如下因素:

  • 你在哪個目錄執行的這個命令,將來你很有可能在相同的目錄重複這個命令
  • 在你執行這個命令之前,執行過什麼命令
  • 你執行這個命令有多頻繁
  • 你最後執行該命令的時間
  • 你是否在 McFly 中選擇過這個命令
  • 以及這個命令的歷史結束狀態。因為你很有可能不會去執行失敗過的命令,對吧?

McFly 維護著你的預設 Bash 歷史檔案,所以你可以隨時停止使用它。McFly 也並不只服務於 BASH, 它也可以擴充套件到其他 shell 程式。

安裝 McFly

在 Linux 中,McFly 可以使用 Linuxbrew 來安裝。如若你還沒有安裝過 Linuxbrew,那麼你可以參考下面的這個連結。(LCTT 譯註:從其 GitHub 主頁瞭解到也可以下載其二進位制來使用。)

一旦安裝好了 Linuxbrew,執行下面的命令來安裝 McFly:

  1. $ brew tap cantino/mcfly https://github.com/cantino/mcfly
  2. $ brew install mcfly

在安裝完成後,你將看到下面的輸出:

  1. ==>Installing mcfly from cantino/mcfly
  2. ==>Downloading https://github.com/cantino/mcfly/releases/download/v0.2.5/mcfly-v0
  3. ==>Downloadingfrom https://github-production-release-asset-2e65be.s3.amazonaws.c
  4. ######################################################################## 100.0%
  5. ==> ONE MORE STEP!Edit~/.bashrc and add the following:
  6. if[-f $(brew --prefix)/opt/mcfly/mcfly.bash];then
  7. . $(brew --prefix)/opt/mcfly/mcfly.bash
  8. fi
  9. /home/linuxbrew/.linuxbrew/Cellar/mcfly/v0.2.5:4 files,3.5MB, built in33 seconds

正如你上面看到的那樣,在使用 McFly 之前我們需要再做一些配置。

將下面幾行新增到你的 ~/.bashrc 檔案中:

  1. if[-f $(brew --prefix)/opt/mcfly/mcfly.bash];then
  2. . $(brew --prefix)/opt/mcfly/mcfly.bash
  3. fi

最後,再執行下面的命令來讓更改生效。

  1. $ source ~/.bashrc

當你第一次執行上面的這個命令時,你的 BASH 歷史將會被匯入 McFly 的資料庫。依據你的 bash 歷史檔案的大小,這個過程將花費一些時間。一旦匯入完成,你講看到下面的提示資訊。

  1. McFly:ImportingBash history for the first time.This may take a minute or two...done.

現在你就可以使用 McFly 了。

使用方法

要在你的命令歷史中執行搜尋,只需要鍵入 mcfly search 再加上命令名的一部分,最後敲擊回車鍵即可。Mcfly 將會基於你剛才鍵入的搜尋查詢語句給出命令建議。

  1. $ mcfly search <part-of-the-command>

例如我鍵入了下面的命令:

  1. $ mcfly search mk

如你所見,我已經使用過 mkdir 這個命令兩次。假如你想從這些命令建議中執行其中之一,只需使用上下鍵來選擇它,然後敲擊回車鍵來執行它就可以了。假如你想編輯其中一個命令,則需要先選擇它,然後敲 TAB 鍵將這個命令放置到終端中,最後在執行它之前更改它就行了。要從歷史中刪除已經選擇的命令,按 F2 即可。

或者,輸入下面的命令來開啟歷史搜尋,然後輸入任意一個命令或者命令的一部分來從你的歷史命令中檢視它提供的建議。

  1. $ mcfly search

在你輸入的同時, McFly 將會展示命令的提示。

下面是一個介紹 McFly 的簡短演示視訊:

你還可以使用下面的命令來檢視幫助:

  1. $ mcfly --help

移除 McFly

不喜歡 McFly,沒問題!可以使用下面的命令來移除它:

  1. $ brew uninstall mcfly
  2. $ brew untap cantino/mcfly

最後,移除先前新增到 ~/.bashrc 檔案中的幾行命令。

好了,這些就是所有了,更多精彩內容敬請期待,請儲存關注!

乾杯!


via: https://www.ostechnix.com/mcfly-a-replacement-to-ctrlr-bash-history-search-feature/

作者:SK 選題:lujun9972 譯者:FSSlc 校對:wxy

本文由 LCTT 原創編譯,Linux中國 榮譽推出