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?
\lsyerine basitçe kullanın lsve tüm diğer adları atlar.
cat, bir dosyaya veya adlandırılmış bir boruya) da işe yarayabilir. Ayrıca, ps auxyeterince geniş olmayan ekranlardan sıkça etkilenen komutlardan tam (kesilmemiş) çıktı alırsınız .
lsBir takma isim olmakls --colors=ttyve işaret etmek gibi şeyleri ve bunun gibi şeyleri düşünüyorumgrep --color. Örneğin/bin/lsyerine kullanırsanız, kaçış dizilerinden kaçınabilirsinizls.