2017-01-22 8 views
0

bashコマンドの出力の現在の行を読みたい。 私はこれをcmd | tail -1で得ることができると知っていますが、これを進捗メーターのような別個のコマンド(tint2実行可能ファイル)として実行したいと思います。例えばbashコマンドの出力の最後の行を読む

は、私はそれが画像をダウンロードするようDownloaded x out of y出力のpythonプログラムを持っている、と私はシェル変数として出力を取得したいです。

または:

は、たぶん私は pacman -Syyを実行していると私はこれが可能である

extra 420.6 KiB 139K/s 00:09 [#####-----------------] 24%

したいですか?

編集:端末で何かが実行されています。以前の端末でコマンドの最後の出力を出力するコマンドが必要です。多分、pidを入力してください。

+0

を変更したい場合があります何をしたいあなたは、変数にあなたのコマンドの出力を割り当てることができている: 'VAR = $(CMD |尾-1) ' – codeforester

+0

@codeforester別のコマンドを実行したい – Robert

+1

再実行したくない場合は、[' pv'](http://man7.org/linux/man-pages/man1/pv.1.html)があります。 - 車輪をなくす。 –

答えて

2

あなたはターミナルといくつかのログファイルに物事を書くためにteeを使用することができます。ティーを/ tmp | mypython(& または (mypython> /tmp/robert.out):
はあなたのpythonのプログラムがこの

function mypython { 
    for i in 10 30 40 50 80 90 120 150 160 180 190 200; do 
     ((progress = (100 * i + 50)/200)) 
     printf "extra xx Kb, total %-3d of 200 (%d %%)\n" $i ${progress} 
     sleep 1 
    done 
} 

のように見えますが、tmpファイルに出力をリダイレクトするか、teeことができると言うことができますあなただけ見たい場合は、あなたが 尾-1

/tmp/robert.outとの最後の行を取得することができます別ウィンドウで/robert.out)&

進行状況を確認するには、前の行を上書きするような行が必要な場合があります。

mypython | while read -r line; do 
    printf "Progress of mypython: %s\r" "${line}" 
done 

これはあなたがあなたのPythonプログラム

printf "...\r" ... 
関連する問題