到目前爲止,我一直只使用在.bashrc
文件中定義的別名和函數,但現在我需要知道如何配置一個函數以在每個命令之前/之後運行。我怎樣才能實現它?配置一個動作在每個用戶輸入上執行
1
A
回答
2
有一個環境變量PROMPT_COMMAND
,見the manual
PROMPT_COMMAND
如果置位,該值被解釋爲命令到 每個主提示符(
$PS1
)的打印之前執行。
對於一個微不足道的情況下,設置它像一個別名:
PROMPT_COMMAND='echo "Something"'
對於更復雜的東西,你可以把它調用一個函數:
prompt_command() {
# If username has underscore, shorten to 'a_b'; else just use first letter
un="${USER:0:1}"
if [[ $USER == *?_?* ]]; then
local suff="${USER##*_}"
un+=_"${suff:0:1}"
fi
}
PROMPT_COMMAND=prompt_command
我用這個修改用戶名在我的提示中,所以在我的.bashrc
其他地方有類似
export PS1="[email protected]\h \$"
因此,典型的[email protected] $
提示,但用戶名動態縮短,如PROMPT_COMMAND
函數中所述。
0
這是一個PS4
這樣做的伎倆。假設你希望每個命令之前運行date
命令則可以設置PS4
爲:
PS4='$(date)\n'
然後就能夠追查到啓動每個命令之前打印日期:
set -x
然後,你可以看到日期出現之前執行每個命令:
$> set -x
$> tty
Fri May 27 09:57:42 EDT 2016
tty
/dev/ttys004
$> uname
Fri May 27 09:57:48 EDT 2016
uname
Darwin
如果你想關閉這個功能只用關閉跟蹤:
set -x
相關問題
- 1. 如何爲每個輸入行執行一個事務?
- 2. 執行多個用戶輸入bash
- 3. 如何在文本輸入到EditText時執行一個動作
- 4. 在整個執行時間檢查stdin上的用戶輸入
- 5. 在每個活動上創建一個線性視圖來執行動作
- 6. Javascript:在用戶完成滾動後執行一個動作
- 7. 配置單元返回每個用戶的動作列表
- 8. 每行輸入和輸出一個字
- 9. 爲每個用戶插入一行mysql
- 10. 用戶輸入來執行操作
- 11. 在BorderLayout的每一行上輸入一個JLabel
- 12. 用戶在運行時動態輸入多個輸入
- 13. 在用戶確認註冊後立即執行一個動作
- 14. 執行用戶輸入另一個腳本的Bash腳本
- 15. 當用戶輸入一個空行
- 16. 如何在線程中每秒執行一個動作?
- 17. SCANF在輸入每個數字,直到用戶輸入0
- 18. 如何在x和y位置進入另一個位置時執行動作?
- 19. 配置knotify在KDE上執行一個自定義命令
- 20. 如何爲每個用戶配置msmtprc
- 21. 每個用戶的尋呼配置
- 22. 使用一個參數執行存儲過程作爲輸入
- 23. 在睡覺時執行一個動作
- 24. Maven - 配置一個始終運行的post執行作業
- 25. 爲每個用戶配置輸出緩存mvc
- 26. 在Oracle中爲每個查詢執行插入一個序列
- 27. Spark如何在一個工作節點上執行一個地圖動作?
- 28. 停止Python程序,直到用戶執行一個動作
- 29. 批處理腳本在每個用戶配置文件上運行
- 30. 作爲另一個用戶執行一個腳本
PS1用於命令之前,PROMPT_COMMAND用於之後 – 123