2017-04-08 10 views
0

変更可能なファイルから読み込んだlinuxコマンドを実装し、 をターミナルで1秒ごとに動的に表示したい。どのように動的にLinuxの端末で結果を表示するには? 「トップ」コマンドのような?ありがとう!Linux端末で結果を動的に表示する方法は? like 'top'コマンド

男(Linuxのオンラインマンがman7.orgサイト上にある)で説明したようにあなたが watchツールを使用することができます
+1

そのを。 'watch'コマンドを探します。 – Arash

+0

ありがとうございました@Arash、 'watch'は私を助けることができます。しかし、私は「トップ」と「ウォッチ」がどのように動作するのかを知りたいのです。つまり、ターミナルで出力をフラッシュする方法です。ソースコードを見るべきかもしれません。 – zhangwbnn

答えて

0

:たとえばhttp://man7.org/linux/man-pages/man1/watch.1.html

watch runs command repeatedly, displaying its output and errors (the 
    first screenfull). This allows you to watch the program output 
    change over time. By default, command is run every 2 seconds and 
    watch will run until interrupted. 

watch -n 1 tail -n 23 file 

これは(コマンドtail -n 23 fileを実行しますファイルfileの最後の25行を1秒ごとに表示します(オプション-n 1watch)。 watchはコマンドを実行して出力を表示し、秒間スリープした後、端末(ANSI)コマンドシーケンスで画面を消去します。そこwatchのいくつかの実装があり、最も簡単なのはbusyboxパッケージである:https://git.busybox.net/busybox/tree/procps/watch.c?h=1_17_stable

while (1) { 
    /* home; clear to the end of screen */ 
    printf("\033[H""\033[J"); 
... 
    fflush_all(); 
... 
    system(cmd); 
    sleep(period); 
} 

(とfflush_allがfflush(stdout)justカスタムbusyboxの変異体である)画面をクリアする\033[H\033[Jシーケンスがあります。 Linuxドキュメントのコードはconsole_codes (4) manページ:http://man7.org/linux/man-pages/man4/console_codes.4.htmlです。そして\033はESCで、ESC [はCSIで、ECMA-48 CSI sequencesセクションでは、CSI HとCSI Jコマンドについて説明します。すでに実装されて

ECMA-48 CSI sequences 

    CSI (or ESC [) is followed by a sequence of parameters .. An empty or 
    absent parameter is taken to be 0. The sequence of parameters may be 
    preceded by a single question mark. 

    H CUP  Move cursor to the indicated row, column (origin at 1,1). 
    J ED  Erase display (default: from cursor to end of display). 
関連する問題