Linux'ta terminal kontrol kaçış dizilerini nasıl devre dışı bırakabilirim?


5

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?


1
Muhtemelen daha iyi bir yol var, ancak bunu komut başına yapmanız mümkün olabilir. Gönderdiğiniz komutlar neler? lsBir takma isim olmak ls --colors=ttyve işaret etmek gibi şeyleri ve bunun gibi şeyleri düşünüyorum grep --color. Örneğin /bin/lsyerine kullanırsanız, kaçış dizilerinden kaçınabilirsiniz ls.
terdon

1
@ terdon daha basit bir yol var. \lsyerine basitçe kullanın lsve tüm diğer adları atlar.
mnmnc

@mnmnc nice, bunu bilmiyordum, teşekkürler!
terdon

1
Bunu sadece yarım saat önce öğrendim ama bu bir alıntı yapma şekli. Alıntılanan bir komut adı BASH'ın diğer tüm adları görmezden gelmesine neden olur. Her şey ile çalışmalıdır takma adları tüm komutlar ancak bir seçenek belirtmeden renk çıktı sahip Çoğu durumda rumuzlarıdırlar. Daha fazla bilgi için buraya bir göz atın .
terdon

1
Çıktıyı yeniden yönlendirmek (örneğin 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 .
Daniel Beck

Yanıtlar:


3

Çoğu (tümü değilse), bir * nix komutunun, özellikle bir seçeneği olan kullanıcı için ricada bulunmaksızın renkli çıktılar yazdırdığı durumlarda, takma adları içerir. Aslında, birçok Linux dağıtımı , dünyadaki renkleri belirten lsve grepbelirten bir takma ad içerir /etc/bash.bashrc.

Bunlar benim Linux Mint Debian Edition’dan:

$ grep alias /etc/bash.bashrc
    alias ls='ls --color=auto'
    alias grep='grep --colour=auto'

Bu nedenle, eğer programınız bu komutları BASH üzerinden çağırıyorsa, siz ls --color=autoyerine koşuyorsunuz ls.

BASH'daki takma adları (belki de diğer mermilerde, ancak denemedim) atlayarak aşağıdaki yöntemlerle ( buradan alınabilir ):

  1. Komutun tam adı: /bin/ls

  2. komut değiştirme: $(which ls)

  3. yerleşik komut: command ls

  4. çift ​​tırnak işareti: "ls"

  5. tek tırnak işareti: 'ls'

  6. ters eğik çizgi karakteri: \ls

Yazılımınızda bu yöntemlerden birini kullanıyorsanız kaçış dizileri hakkında endişelenmenize gerek yoktur.


0

redhat ya da akraba iseniz, fedora ya da centos gibi,
değiştirmeye bakabilirsiniz.

/etc/sysconfig/init

şöyle bir şey söyleyen satırları arayın:

 # anything else => new style bootup without ANSI colors or positioning

 BOOTUP=color

ve dediği gibi, değişkeni "renk" dışında bir şeye çevirin

bu, service, ifup, ifdown, vb. gibi bazı sistem komut satırı yardımcı programlarının davranışını etkiler.

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.