[英]How can I make Bash automatically pipe the output of every command to something like tee?
我在$PROMPT_COMMAND
使用了一些魔術來自動將我運行的每個命令保存到數據庫中:
PROMPT_COMMAND='save_command "$(history 1)"'
其中save_command
是更復雜的功能。 保存每個命令的輸出的head
/ tail
也很好,但是我想不出一種合理的方法,除了手動在我鍵入的所有內容之前添加某種shell函數(而且使用復雜的管道或布爾表達式會更加痛苦)。 基本上,我只希望將/dev/tty
中所有內容的前10行和后10行保存到變量(甚至是文件)中-有什么辦法可以做到這一點?
script(1)可能會讓您入門。 它不會讓您僅記錄前10行,而是可以對其輸出進行一些后處理。
bash | tee /dev/tty ./bashout
這樣可以將所有標准輸出保存到bashout。
bash | tee /dev/tty | tail > ./bashout
每個命令的stdout的尾部都會寫入bashout。
bash | tee /dev/tty | sed -e :a -e '10p;$q;N;11,$D;ba' > ./bashout
每個命令的stdout的前10行和后10行都會寫入bashout。
這些命令不會保存命令,但是如果您修改save_command以將命令打印到stdout,它將進入該命令。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.