2010-12-18 81 views
8

我最近升級到新的Android SDK,並且發現了一些非常非常麻煩的事情。看起來在shell中使用命令歷史是不可能的。你注意到了嗎? Android外殼對我來說似乎很糟糕,但至少在最後一個SDK中,我有命令歷史記錄。現在,似乎按下向上/向下箭頭,導致一些代碼寫在提示符上(類似^ [[A,^ [[B等...)。我試着讀一點,但我發現很少有人問這個答案。任何想法爲什麼會發生這種情況以及如何解決這個問題如何在Linux下使用向上/向下鍵啓用Android adb shell歷史記錄?

+0

幸運的是,在Android 7中(以及可能更早)並非如此。 – 2017-10-31 10:57:59

回答

0

如果按Ctrl - p仍然給您以前的歷史記錄條目,那麼它可能是箭頭鍵綁定成了某種原因。試試這個:

bind '"\e[A": previous-history' 
bind '"\e[B": next-history' 

如果使鍵的作用的箭頭,你可以把它持續加入這兩行/etc/inputrc~/.inputrc

"\e[A": previous-history 
"\e[B": next-history 
+1

最後我用它的Android外殼沒有使用readline,但後來我不記得它提供任何形式的命令行版本,包括歷史箭頭。 – Gilles 2010-12-18 15:49:43

+0

@Gilles:我自己也沒有用過它,但我只是根據OP的說法做出回答。 – 2010-12-18 16:46:08

+1

Ctrl-P給我的歷史,但不是在Android的外殼。但是,我必須在哪裏嘗試綁定命令?在Linux shell中?我在那裏試了一下,這使得箭頭無法在歷史中移動。如果我嘗試在Android shell中,命令綁定似乎不存在。任何想法? – 2010-12-19 12:03:46

3

您可以運行裏面rlwrap外殼:

rlwrap adb shell 

我更喜歡自己在Emacs shell緩衝區中運行它,如果您對Emacs沒有過敏,我建議您使用它。 Emacs對於運行adb logcat也很好:你會得到一個可搜索的歷史記錄,並且消息會隨着它們更新而更新,並且你可以很容易地將有趣的圖案放入顏色中(M-x highlight-regexp和朋友)。

+0

我試過了你給我的命令,但我看不到有任何改變。外殼完全相同。也許我做錯了什麼?謝謝! – 2010-12-19 12:06:09

+0

@Luca:我使用adb和Gingerbread SDK下的模擬器獲得基本的命令行版本,而'rlwrap'則是readline版本。我似乎記得'rlwrap'不能用於以前的SDK版本,但我不記得哪個版本。 – Gilles 2010-12-21 21:04:30

+0

我不明白...我只是再試一次,但我真的看不到變化。 – 2010-12-25 11:08:59

0

如果你在談論真實設備(而不是仿真器),你應該嘗試一些非官方的固件,如Cyanogenmod - 它包括更好的二進制工具,比如更多功能的shell,一套常規的UNIX工具,ssh服務器等。

如果你正在談論仿真器,你可以從固件中提取這些二進制文件,並按原樣(使用存儲卡映像)將其推入仿真器。

+0

我正在談論一個真實的設備,這個問題與固件無關。它在我升級到同一設備上的最後一個SDK 2.3時開始。 – 2010-12-19 00:39:48

+0

無論如何,我只是檢查,它也發生在模擬器上。 – 2010-12-19 12:01:10

+0

好吧,我明白了。那麼至少你可以嘗試使用ssh進行連接(即你的設備上的dropbear ssh服務器和你的開發盒中的ssh客戶端)作爲解決方法。 – GreyCat 2010-12-19 19:29:29