2010-12-10 15 views
20

Temel metin stilini (kalın/alt çizgi/italik) işleyebilen Unix Bash komut dosyası örneklerini bulmaya çalışırken web'de trol çiziyorum, ancak hiçbir şey bulamadınız mı? Böyle bir şey yapmak mümkün mü? ÖrneğinBelirli bir metni embolden/underline/italicize için Unix Bash komut dosyası

:

  1. cesaret/Altı/biten tüm satırları italik ":"?
  2. (Kapat) Embolden/Underline/":" ile biten tüm satırları italikleştirin mi?

Bunu Automator aracılığıyla bir Hizmet olarak kurmak istiyorum; /bin/bash kullanarak ve "seçili metin" (elbette zengin metin uyumlu bir dosyada) üzerinde işlem yapmak.

cevap

20

Temel olarak, şekillendirme koduyla bazı değişkenleri bildirmek yapmak istiyorum - böyle bir şey:

underline=`tput smul` 
nounderline=`tput rmul` 
bold=`tput bold` 
normal=`tput sgr0` 

o zaman bu gibi değişkenleri kullanarak çıktınıza kullanmak üzere bu çağırabilirsiniz:

echo "${bold}bold${normal} text stands out!" 
echo "${underline}underlined${nounderline} text does, too." 

Belirli bir karakterle başlayan tüm satırlara uygulanacak şekilde otomatikleştirmek için, yukarıda gösterildiği gibi değişkenleri kullanmanız daha iyi olur. Bu yöntemi kullanmanın yanı sıra, daha kolay, aynı zamanda daha temiz ve daha kullanışlı. Örneğin, bu yöntemi kullanırken belirli bir kelimeyi belirli bir kelimeyi vurgulamak için belirli bir dizgede herhangi bir sayıda kelimeyi farklı bir şekilde vurgulama yeteneğine sahip olursunuz (tabii ki bu sizin hedefiniz değilse).

fazla bilgi için http://tldp.org/HOWTO/Bash-Prompt-HOWTO/x405.html ve/veya adamı Ayrıca

+0

tput'un kontrol etmelidir, bu unutulmamalıdır ki her ne kadar ** tput sgr0 ** beklendiği gibi her zaman yapmaz, TÜM stil kaldırmak yapar Bu nedenle, kullanmakta olduğunuz stil ile ilgili "çıkış" kodunu kullanmanız önerilir (yani, alt çizgiyi başlatmak için $ {underline} kullanarak, sonra stil kullanımını sona erdirmek için $ {nounderline} çağrısı). –

+0

Şerefe, Chris. Unix Bash için yeni ve sadece "one-liner" yaklaşımına aşina olduğum için, cehaletimi affedersiniz, ama sağladığınız kod (değişkenler ile vs.) Automator bin/bash'da kullanılabilir mi? Ayrıca "echo", "$" kullanımını anlamıyorum ... Sadece PHP'de kullanılan ekoyu gördüm. –

+0

'sgr0' örneğinin beklendiği gibi performans gösteremediğini gösterir misiniz? –

İlgili konular