簡體   English   中英

如何使Bash自動將每個命令的輸出傳遞給tee等?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM