Có cách nào để sửa đổi lệnh sắp thực hiện không? Tôi muốn chuyển hướng đầu ra đến một tệp, cũng như in nó trên thiết bị đầu cuối. Tôi thấy rằng ls > file.txt | cat
thực hiện công việc, vì vậy tôi muốn thêm rằng > file.txt | cat
vào bất kỳ lệnh nào sắp thực thi.
Có cách nào tốt hơn để chuyển hướng đến tệp và in tới thiết bị đầu cuối không? Tôi đang cố gắng để làm một logger.zsh preexec sửa đổi lệnh
Trả lời
Có một số cách để làm điều đó, 1 Tôi thích nhất là khối này tôi tìm thấy ở đây 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
Cũng cần chú ý rằng tôi đã thêm 'fc' '> file.txt | cat'
vào danh sách abk
Điều này không trong rằng bạn nhập fc
sau lệnh và sau đó bạn nhấn ,. (dấu phẩy và dấu chấm) trong kế tiếp nhanh và zsh sẽ thay thế fc
cho > file.txt | cat
Bạn có thể thay đổi hành động được thực hiện khi bạn thực hiện một dòng để thay đổi lệnh sẽ được thực thi. Điều này có thể được thực hiện bằng cách xác định một hàm mà bạn sau đó liên kết với khóa nhập.
Cho phép đầu tiên xác định hàm có thể thêm '> file.txt | cat 'kết thúc với bất kỳ lệnh nào:
function log_and_accept {
BUFFER="$BUFFER > file.txt | cat"
zle accept-line
}
Phần tiếp theo là thay thế hành vi nhập mặc định bằng chức năng mới của bạn. Hành vi mặc định mà chúng ta đang thay thế là hàm accept-line, và nếu chúng ta xem xét zle documentation, bạn sẽ thấy rằng dòng chấp nhận được liên kết với^J và^M.
Để ràng buộc chức năng này để những chữ cái đầu tiên bạn cần phải biến nó thành một widget:
zle -N log_and_accept_widget log_and_accept
Sau đó, bạn có thể gắn nó, thay thế các hành vi cũ:
bindkey '^J' log_and_accept_widget
bindkey '^M' log_and_accept_widget
Bây giờ bạn sẽ có mở rộng lệnh đó cho mỗi lệnh duy nhất bạn làm. Mọi cd, ls, vim, v.v. Vì vậy, tôi khuyên bạn nên xác định thêm một vài chức năng thực sự bật và tắt:
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
Tôi nghĩ bạn nên cẩn thận với điều này. Sau khi kiểm tra nó một chút, tôi nhanh chóng không thích nó.
- 1. Lệnh ngày với zsh
- 2. Dòng lệnh sửa đổi tnsnames.ora
- 3. Danh sách các lệnh liên kết zsh
- 4. thay thế chuỗi trong dòng lệnh zsh
- 5. Nhận xét trong dòng lệnh Zsh
- 6. zsh thay đổi màu nhập dấu nhắc
- 7. Lệnh sửa đổi Subversion hiện tại
- 8. zsh tab hoàn thành messes lên dòng lệnh định dạng
- 9. Zsh muốn AutoCorrect một lệnh, với _ trước khi nó
- 10. Chuyển sang zsh ngắt đường ray trong dòng lệnh
- 11. tại sao zsh globbing không hoạt động với lệnh find?
- 12. Đề nghị gói Zsh
- 13. cách sửa đổi exe.config từ tập lệnh Innosetup
- 14. Tập lệnh Perl có thể tự sửa đổi không?
- 15. Làm thế nào để chỉnh sửa biến đường dẫn trong ZSH
- 16. zsh: truy cập đối số dòng lệnh cuối cùng được đưa ra cho tập lệnh
- 17. Thay đổi kiểu nhắc của phiên bản virtualenv bằng zsh
- 18. autocompletion tuỳ chỉnh cho zsh
- 19. watchpaths Sửa đổi
- 20. ZSH tự động hoàn thành các ốc vít lên tên lệnh
- 21. Ruby sửa đổi project.pbxproj
- 22. zsh: Mở rộng một cuộc tranh luận trước đó trong dòng lệnh hiện tại
- 23. zsh hoàn tab lỗi trên ubuntu
- 24. ZSH iterm2 tăng số dòng lịch sử
- 25. ZSH Bindkey Reverse Lookup
- 26. zsh in IntelliJ
- 27. zsh hoàn chênh lệch
- 28. plugins oh-my-zsh không hoạt động
- 29. SVN - xóa bản sửa đổi hoặc sửa đổi cũ hơn
- 30. Tháo mã tự sửa đổi
tee là lệnh để sử dụng tại đây,> tệp | mèo khá là khó hiểu –