Bir dosyaya live-f1 çıktısı nasıl yazılır


10

Terminali açtım ve her saniye değişen terminalde canlı metin görüntüleyen live-f1'i çalıştırdım. Bu program çalışırken sadece "Enter" tuşu kullanılabilir (bu programdan çıkar). Böylece konsola başka bir şey yazamazsınız.

Terminal içeriğini her saniye gibi bir dosyaya yazmak istiyorum.

Nasıl yapabilirim?

2. konsolu açıp komut kullanarak?

Setterm -dump komutu ile çalışamıyor.

Yanıtlar:


8

live-f1topveya gibi terminal kontrol karakterlerini (ncurses) kullanarak ekranı yeni verilerle yeniden çizer mtr. Bu nedenle, bir dosyaya veya terminal olmayan bir aygıta yeniden yönlendirirken tüm bu gereksiz dosyaları görüyorsunuz.

Ne yazık ki, live-f1istatistik ve benzeri veriler için verileri kaydetmek ve daha sonra çıkarmak için uygun çıktı alma seçeneği sunmuyor. Çıkışı daha sonra tekrar oynatmak için yine de kaydetmek istiyorsanız, kullanabilirsiniz script.

Bu, live-f1'i kaydeder ve iki dosya, yazı tipi ve zamanlama dosyası oluşturur.

script -c live-f1 -t 2> timingfile

Bu çıktıyı tekrar oynatır

scriptreplay timingfile

7

Çıktıyı sizin için yararlı olabilecek bir dosyaya çekmek için kullandığım birkaç yol var.

script

Bu bir alt kabuk oluşturur ve tüm çıktıları içine koyar. Öyleyse script, sonra ne istersen, exitalt kabuğunu bitirmek ve çıktın "typescript" adlı bir dosyada olacak

tee

Bir borunun tamamını başka bir yere yansıtabilirsiniz. Böylece teestandart çıktınızı bir dosyaya kapatabilirsiniz:

$ mycommand | tee myoutput

Standart hatayı da yakalamanız gerekiyorsa, yönlendirin:

$ mycommand 2>&1 | tee myoutput

6

Programı böyle çalıştırmaya ne dersiniz:

program > /path/to/file

Bu çıktısını yönlendirir programiçin /path/to/fileanında.

Çıktının terminalinizde olmasını ve bir dosyaya kaydedilmesini istiyorsanız. Çıkış Bash'ı çıktıyı yeniden yönlendirmenin ve hala stdout'a gitmenin bir yolu var mı?


Hızlı cevap için teşekkürler. Bu neredeyse işe yarıyor, sadece dosya içeriği biraz karışık. HTML biçiminde olmalıdır, ancak dosyayı açtığımda bazı garip semboller var, ekran görüntüsüne bakın: upload.ee/image/1223166/ss_01.png . Programın adı live-f1.
Gustav

Komik görünüyor. Programın yalnızca HTML verdiğinden emin misiniz? Animasyon falan var mı?
phunehehe

Bu yalnızca standart çıktıyı yeniden yönlendirir. Standart hata da gerekli mi?
Faheem Mitha

2
@Gustav Orada da sıkışmış ANSI kodları var. Uygulamanız bir tür ilerleme sayacı (Bu neye benzediğini) çıkarır veya çıktısını renklendirir veya benzeri. Bunu kapatmanın bir yolu varsa, temiz çıktıyı yakalamak için kullanmanız gerekir. Uygulamanız HTML çıktısı almıyor, bu nedenle HTML'yi yakalamak için çıktıyı çevirmek için başka bir uygulamaya ihtiyacınız olacak.
Matthew Scharley

Neden HTML olarak söylüyorum, çünkü bir yıl önce çalıştım, ancak çalışma ortamına sahip olduğum diski yeniden biçimlendirdim. Amacım live-f1 feed'den Formula 1 sürücülerinin pozisyonlarını bir dosyaya almak. Geçen yıl 1. terminalde live-f1 programını çalıştırarak, sonra 2. terminali çalıştırarak ve 1. terminal ekranını yakalayan ve bir dosyaya kaydeden bir komut kullanarak çalıştım (geçen yılın dosyasından kopyala: upload.ee/download/1223347 /0b6545ce227661452c8/html.log ). Komut şöyle bir şeydi: tty "1. terminal işaretçisi" "dosya adı" "aralığı"
Gustav

3

Günlük işlevselliği ile birlikte GNU ekranını kullanabilirsiniz . Komutun, çıktının diske ne sıklıkta akıtılacağını denetlemenize izin verdiğini de unutmayın . Ekran Kullanım Kılavuzundan:logfile flush secs

- Komut: logfile flush secs

Günlük dosyalarının alacağı adı tanımlar. Varsayılan 'ekran günlüğüdür.% N'. İkinci form, günlük dosyası arabelleğini dosya sistemine temizlemeden önce ekranın bekleyeceği saniye sayısını değiştirir. Varsayılan değer 10 saniyedir.


Ben bakacağım.
Gustav
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.