有沒有辦法修改即將執行的命令? 我想將輸出重定向到一個文件,並在終端上打印。 我發現ls > file.txt | cat
完成了這項工作,因此我想將> file.txt | cat
添加到即將執行的任何命令中。
有沒有更好的方式重定向到文件並打印到終端?我正在嘗試製作記錄器。zsh preexec命令修改
6
A
回答
0
有幾種方法可以做到這一點,1我最喜歡的是這一塊,我發現這裏http://git.grml.org/?p=grml-etc-core.git;a=blob_plain;f=etc/zsh/zshrc;hb=HEAD
abk=(
'...' '../..'
'....' '../../..'
'BG' '& exit'
'C' '| wc -l'
'G' '|& grep '${grep_options:+"${grep_options[*]}"}
'H' '| head'
'Hl' ' --help |& less -r' #d (Display help in pager)
'L' '| less'
'LL' '|& less -r'
'M' '| most'
'N' '&>/dev/null' #d (No Output)
'R' '| tr A-z N-za-m' #d (ROT13)
'SL' '| sort | less'
'S' '| sort -u'
'T' '| tail'
'V' '|& vim -'
'co' './configure && make && sudo make install'
'fc' '> file.txt | cat'
)
zleiab() {
emulate -L zsh
setopt extendedglob
local MATCH
if ((NOABBREVIATION > 0)) ; then
LBUFFER="${LBUFFER},."
return 0
fi
matched_chars='[.-|_a-zA-Z0-9]#'
LBUFFER=${LBUFFER%%(#m)[.-|_a-zA-Z0-9]#}
LBUFFER+=${abk[$MATCH]:-$MATCH}
}
zle -N zleiab && bindkey ",." zleiab
還要注意,我說'fc' '> file.txt | cat'
到列表abk
這樣做的什麼在命令後輸入fc
,然後點擊。(逗號和句號),並且zsh將替換爲fc
for > file.txt | cat
5
您可以更改執行某行以更改將執行的命令時執行的操作。這可以通過定義一個函數來完成,然後你可以將它綁定到回車鍵。
讓我們先定義一個函數,它可以添加'> file.txt |貓'結束任何命令:
function log_and_accept {
BUFFER="$BUFFER > file.txt | cat"
zle accept-line
}
下一部分是實際上用你的新函數替換默認的回車鍵行爲。我們正在替換的默認行爲是accept-line函數,如果我們看一下zle documentation,您會看到accept-line綁定到^ J和^ M。
這個函數綁定到那些你首先需要把它變成一個小部件的信件:
zle -N log_and_accept_widget log_and_accept
然後你可以綁定它,取代了舊的行爲:
bindkey '^J' log_and_accept_widget
bindkey '^M' log_and_accept_widget
現在你會爲每一個你所做的命令擴展該命令。每個CD,LS,VIM等等等等,因此我建議您定義一對夫婦更多的功能,實際上把這個和關閉:
function turn_on_logging {
bindkey '^J' log_and_accept_widget
bindkey '^M' log_and_accept_widget
}
function turn_off_logging {
bindkey '^J' accept-line
bindkey '^M' accept-line
}
zle -N turn_on_logging_widget turn_on_logging
zle -N turn_off_logging_widget turn_off_logging
bindkey '^P' turn_on_logging_widget
bindkey '^O' turn_off_logging_widget
我想你應該小心與此有關。經過一些測試,我很快就厭惡了它。
相關問題
- 1. 修改zsh命令以轉發錯誤
- 2. 命令行修改命令
- 3. ZSH「命令」擴展?
- 4. Zsh命令替換
- 5. zsh:命令未找到:mvim
- 6. zsh gsed命令未找到
- 7. zsh:找不到命令:ls
- 8. zsh bindkey命令列表
- 9. 命令不是zsh的
- 10. zsh:找不到命令:express
- 11. zsh命令找不到pip
- 12. zsh:找不到命令:tmuxinator
- 13. Zsh:命令未找到:webpack
- 14. zsh:找不到命令:mysql
- 15. 如何修改cat命令
- 16. 從命令行修改XML
- 17. 命令行修改tnsnames.ora
- 18. 修改導軌新命令
- 19. 使用鍵盤命令在zsh中隱藏命令
- 20. ZSH:如何在命令行中運行Vim-style替換命令?
- 21. 無法在zsh中運行任何命令:「找不到命令」
- 22. 使用命令輸出爲zsh生成自動完成命令
- 23. zsh將命令添加到新行
- 24. 未找到zsh命令問題
- 25. zsh:找不到命令:rabbitmq-server
- 26. zsh:找不到命令:apt-get
- 27. 在zsh中恢復中斷的命令
- 28. 的zsh:用當命令開始
- 29. zsh:1:命令未找到:耙
- 30. 每個命令後zsh新行提示
tee是此處使用的命令,> file |貓很混亂 –