Linux中國

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

假如你在命令行模式下渡過了很長時間,那麼你必定使用過或者聽說過 BASH 的 反向搜索 功能,在 Bash 中執行反向搜索功能的快捷鍵是 Ctrl+r。通過使用這個特性,我們可以找到我們執行過的命令而無需再次輸入它們。當然,你可以使用上下鍵來搜索你的 bash 命令記錄,但使用 Ctrl+r 快捷鍵可以讓這個搜索過程更簡單快速。今天我找尋到了 Bash 歷史命令搜索特性 Ctrl+r 的一個替代品,它就是 McFlyMcFly 是一個使用 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:

$ brew tap cantino/mcfly https://github.com/cantino/mcfly

$ brew install mcfly

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

==> Installing mcfly from cantino/mcfly
==> Downloading https://github.com/cantino/mcfly/releases/download/v0.2.5/mcfly-v0
==> Downloading from https://github-production-release-asset-2e65be.s3.amazonaws.c
######################################################################## 100.0%
==> ONE MORE STEP! Edit ~/.bashrc and add the following:

if [ -f $(brew --prefix)/opt/mcfly/mcfly.bash ]; then
. $(brew --prefix)/opt/mcfly/mcfly.bash
fi
/home/linuxbrew/.linuxbrew/Cellar/mcfly/v0.2.5: 4 files, 3.5MB, built in 33 seconds

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

將下面幾行添加到你的 ~/.bashrc 文件中:

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

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

$ source ~/.bashrc

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

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

現在你就可以使用 McFly 了。

使用方法

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

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

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

$ mcfly search mk

下面展示的是我 Ubuntu 機子上的示例輸出:

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

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

$ mcfly search

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

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

你還可以使用下面的命令來查看幫助:

$ mcfly --help

移除 McFly

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

$ brew uninstall mcfly

$ 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中國 榮譽推出


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的電子郵箱地址不會被公開。 必填項已用 * 標註

    此站點使用Akismet來減少垃圾評論。了解我們如何處理您的評論數據

    More in:Linux中國