3 回答

TA貢獻1817條經驗 獲得超14個贊
這是一個非常駭人聽聞的解決方案,但在某些時候似乎可以正常工作。在測試過程中,我注意到當^C在命令行上使用時,有時效果不佳,盡管我做了一些調整以使其表現得更好。
此hack僅是一種交互模式hack,我非常有信心不會將其推薦給任何人。后臺命令可能導致比正常情況更少的定義行為。其他答案是通過編程獲得結果的更好方法。
話雖如此,這是“解決方案”:
PROMPT_COMMAND='LAST="`cat /tmp/x`"; exec >/dev/tty; exec > >(tee /tmp/x)'
設置此bash環境變量并根據需要發出命令。 $LAST通常將具有您要查找的輸出:
startide seth> fortune
Courtship to marriage, as a very witty prologue to a very dull play.
-- William Congreve
startide seth> echo "$LAST"
Courtship to marriage, as a very witty prologue to a very dull play.
-- William Congreve

TA貢獻1831條經驗 獲得超9個贊
我不知道會自動執行此操作的任何變量。除了復制粘貼結果外,還可以執行其他操作,例如,重新運行
vim $(!!)
!!歷史擴展在哪里,意思是“先前的命令”。
如果您希望文件名中包含空格或其他字符,這可能會阻止正確的參數解析,請對結果加引號(vim "$(!!)")。不加引號的情況將允許一次打開多個文件,只要它們不包含空格或其他shell解析標記即可。

TA貢獻1966條經驗 獲得超4個贊
Bash是一種丑陋的語言。是的,您可以將輸出分配給變量
MY_VAR="$(find -name foo.txt)"
echo "$MY_VAR"
但最好在使用變量時小心正確地引用它!
最好直接對文件進行操作,例如使用find的-execdir(請參閱手冊)。
find -name foo.txt -execdir vim '{}' ';'
要么
find -name foo.txt -execdir rename 's/\.txt$/.xml/' '{}' ';'
- 3 回答
- 0 關注
- 1433 瀏覽
添加回答
舉報