2012-04-24 47 views
4

這個問題聽起來很奇怪,但我會解釋上下文並希望它能證明它的正確性。我在Linux上嘗試使用一些製造不良的shell。從另一個shell提供命令行shell

我必須使用fdbfcsh,它們是Adobe的用於Flash的命令行調試器和編譯器外殼。這不是特別相關 - 只有它們是shell,即您運行fdb,它會提示您輸入(fdb)並輸入命令。很酷。

但是。假設你想重新執行你的最後一個命令,所以你在鍵盤上按[Arrow-Up],就像你在Bash,Python Shell,GDB shell等中做的那樣。它不起作用。我沒有看到提示符處的最後一條命令,而是看到了(fdb) ^[[A(請注意(fdb)是提示符)。按下[Arrow-Left]鍵退回幾個字符並修復你輸入的命令 - 同樣的故事。

這看起來像Adobe沒有很好地發揮它的炮彈。有沒有辦法打開一個簡單的bash shell(或其他東西),它將繼續將我的命令提供給一個開放的fdb shell,並保持爲守護進程?我希望通過這種方式,我可以得到Bash用於處理命令的整潔可用性功能,但通過fdb可以執行它們。

注:我發現this wrapper這使fcsh和進程化持有它的pid文件,我想。這很酷。我還沒有使用它,但考慮到它。不過,我的問題是:有沒有辦法將命令從一個shell傳遞到另一個?

+1

評論「Adobe沒有很好地發明它」沒有得到充分證實。我從來沒有使用過這些炮彈,也對它們一無所知,所以它們可能很糟糕,但肯定不是基於缺乏對命令歷史的內建支持。我會爭辯說,一個支持自己的歷史的shell是糟糕的,因爲它是rlwrap之類的一個更好的功能。模塊化很好。整合是不好的。 – 2012-04-24 10:59:27

+0

請注意,我幾乎挑剔。我很高興我有這些炮彈。最重要的是,如果您查看這些命令,'fdb'幾乎就像GDB。一大優點。儘管如此,當它沒有這種歷史支持時,shell仍然非常缺乏。 GDB擁有它,Python擁有它,GHCi擁有它,並且我不會在'rlwrap'中運行它們。我不知道他們是否與'rlwrap'庫綁定,或者他們是否爲我運行它,或者他們自己實現它(集成還是模塊化?)。但是他們擁有它,這對我來說很重要,而'fdb'和'fcsh'沒有它。貝殼很好,但缺乏這個。因此我的抱怨。 – CamilB 2012-04-24 11:14:34

+0

我沒有說「糟糕」。沒辦法:) – CamilB 2012-04-24 11:15:29

回答

8

Bash使用GNU readline庫,它只能用於開源程序(具有適當的許可證)。但你可以使用rlwrap。它在大多數Linux發行版中。例如,您可以使用它作爲rlwrap fdb

+0

這看起來很棒。將盡快檢查。 – CamilB 2012-04-24 06:58:08

+0

是的!就是這樣。點上,非常感謝! – CamilB 2012-04-24 07:06:25