Bash

Bash 腳本 ctrl+c 錯誤

  • November 23, 2016

我有日誌文件系統,可以用目前時間重命名最新的日誌文件,我必須設置一個 less 命令來輕鬆檢查日誌文件。我可以用 q 退出較少的命令,但我必須遵循最新的傳入行,所以在按下 shift+fq 後不起作用,我需要用 ctrl+c 退出。

當我按 ctrl+c 主螢幕並且程序被終止但終端螢幕出現您可以在下面看到的錯誤時

終端錯誤

find /data/tomcat/logs/out.* -type f -printf '%T@ %p\n' | sort -n | tail -1 | cut -f2- -d" " |xargs less

我可以通過重置清除錯誤,但這樣使用它很荒謬。當我在網際網路上搜尋時,大多數人將其解釋為 ctrl+c 會殺死主命令,但腳本不會響應 SIGINT。嘗試了很多,但無法成功殺死這個簡單的腳本。

並且也無法製作別名,因為一些參數給出了錯誤,但是當我在終端上執行這個命令時它工作得很好。

我知道使用 logger rotate 來重命名舊文件並保持最新文件具有相同的名稱會更容易,但它不會發生。

當您在少跑時按 shift-F 時,它會使您進入跟隨模式。按 Ctrl-C 退出此模式,然後您可以按 Q 退出。

當您中斷命令時,聽起來終端回顯被禁用。如果你執行,也會發生同樣的事情stty -echo。要重置您的終端,您可以鍵入stty sane. 您將不得不盲目地輸入它,因為您將無法看到您正在輸入的內容,但它應該可以工作。

如果您無法從提供的命令行創建別名,請嘗試將其放入文件中並使其可執行,然後確保該腳本文件在您的路徑中,或者創建一個別名來執行它。您可能還想在執行的腳本中添加第二行,stty sane以確保在 less 命令退出時啟用終端回顯。像這樣的東西應該​​工作:

#!/bin/bash
find /data/tomcat/logs/out.* -type f -printf '%T@ %p\n' | sort -n | tail -1 | cut -f2- -d" " |xargs less
stty sane

引用自:https://serverfault.com/questions/816628