Meşgul Linux sürümü çalıştıran gömülü bir cihazla etkileşime giren bir yazılım yazıyorum. Temel olarak, sadece cihaza komutlar gönderiyorum ve komutların çıktısını ayrıştırıyorum. Komutlar doğrudan linux kabuğuna veya cihazda çalışan şirket içi CLI uygulamasının komut satırına uygulanır.
Çıktı terminal kontrol kaçış dizileri ile biberli dışında dışında her şey iyi çalışıyor . Teraterm veya macun gibi terminal uygulamalarında, bu kaçış dizileri, hoş bir kullanıcı arayüzü için kırmızı renk hataları ve diğer hoş özellikler gibi yararlı şeyler yapar.
Sorun şu ki, programlı olarak komutları kullanarak çıktıyı çözümlemeli ve çıktıdaki "(esc) [2k" gibi şeyleri açıklamalıyım.
Örneğin, bir komut gönderdiğim tipik bir gönderme / alma etkileşimi, "my-cmd" şöyle olacaktı ...
[send] my-cmd
[receive] my-cmd <esc>[2Kprompt> my-cmd
output of the command
prompt>
Gerçekten yapmak istediğim şey, bu kaçış dizilerini kapatmak. Bu bir oturumun başında komut kabuğunda yapılabilecek bir şey mi? Yoksa çıktıyı filtrelemekten başka bunun yolu yok mu?
\ls
yerine basitçe kullanın ls
ve tüm diğer adları atlar.
cat
, bir dosyaya veya adlandırılmış bir boruya) da işe yarayabilir. Ayrıca, ps aux
yeterince geniş olmayan ekranlardan sıkça etkilenen komutlardan tam (kesilmemiş) çıktı alırsınız .
ls
Bir takma isim olmakls --colors=tty
ve işaret etmek gibi şeyleri ve bunun gibi şeyleri düşünüyorumgrep --color
. Örneğin/bin/ls
yerine kullanırsanız, kaçış dizilerinden kaçınabilirsinizls
.