Eğer bir eklerseniz | sed -n lo kadar tailkomuta, muhtemelen böyle bir şey göreceksiniz olmayan yazdırılabilir karakterleri göstermek için:
N\bNA\bAM\bME\bE
Yani, her karakter XBackspace olarak yazılır X. Modern terminallerde, karakter kendi üzerine yazılır (Backspace aka BS aka \baka ^Himleci bir sütun sola hareket ettiren karakterdir) fark olmadan. Ancak eski tele-daktilolarda, bu, karakterin iki kat daha fazla mürekkep aldığı için kalın görünmesine neden olur.
Yine de, more/ lessdo gibi çağrı cihazları bu biçimi kalın anlamına gelir, bu yüzden roffkalın metin çıktısı almak için hala budur .
Bazı insan uygulamaları roff, bu sekansların kullanılmayacağı (veya uygulamada olduğu gibi ( ortam değişkeni ayarlanmadığı sürece) dahili olarak col -b -p -xbunları şeritlemeye çağıracak şekilde) çağıracak ve çıktıyı algıladıklarında bir çağrı cihazını çağırmayacaktır. bir terminale gitmiyor (bu yüzden orada çalışır), ama seninki değil.man-dbMAN_KEEP_FORMATTINGman bash | grep NAME
Bu col -bdizileri kaldırmak için kullanabilirsiniz ( alt çizgi için başka türler de vardır ( _BS X)).
GNU kullanarak sistemler için roff(GNU veya FreeBSD gibi), o diziler sağlayarak ilk etapta kullanılan önleyebilirsiniz -c -b -useçenekleri geçirilir grottysağlayarak örneğin -P-cbugeçirilir seçenekleri groff.
Örneğin, groffiçeren bir sarmalayıcı komut dosyası oluşturarak :
#! /bin/sh -
exec /usr/bin/groff -P-cbu "$@"
/ Usr / bin / groff'un önüne koyduğunuz $PATH.
MacOS 'ile man(ayrıca GNU kullanarak roff) aşağıdakilerle bir tane oluşturabilirsiniz man-no-overstrike.conf:
NROFF /usr/bin/groff -mandoc -Tutf8 -P-cbu
Ve şu şekilde arayın man:
man -C man-no-overstrike.conf bash | grep NAME
Yine de GNU ile roff, GROFF_SGRortam değişkenini ayarlarsanız (veya GROFF_NO_SGRvarsayılanı derleme zamanında nasıl ayarlandığına bağlı olarak değişkeni ayarlamazsanız), o zaman grotty( -cseçeneği geçmediği sürece ) bunun yerine ANSI SGR terminal kaçış dizilerini kullanır karakter özellikleri için bu BS hileleri. seçeneği lessile çağrıldığında onları anlamak -R.
FreeBSD adam aramaları grottyile -copsiyona soran sürece renkler MANCOLOR değişkeni (bu durumda ayarlayarak -cgeçmedi grottyve grottyANSI SGR çıkış sırasını orada kullanmanın varsayılan geri döner).
MANCOLOR=1 man bash | grep NAME
orada çalışacak.
Debian'da, GROFF_SGR varsayılan değildir. Yaparsan:
GROFF_SGR=1 man bash | grep NAME
Bununla birlikte, man's stdout bir terminal olmadığı için, bir GROFF_NO_SGRdeğişkeni de geçirmesi kendi başına alır grotty(Sanırım hala olsa bile, SGR sekanslarının nasıl şeritleneceğini bilmediği col -bpxiçin BS sekanslarını colşeritlemek için kullanılabilir. bunu yapar MAN_KEEP_FORMATTING) GROFF_SGR. Bunun yerine şunları yapabilirsiniz:
GROFF_SGR=1 MANPAGER='grep NAME' man bash
(bir terminalde) SGR kaçış sekanslarına sahiptir.
O zaman, bu NAME'lerin bazılarının terminalde kalın olarak (ve bir less -Rçağrı cihazında) göründüğünü fark edeceksiniz . Çıkışı sed -n l( MANPAGER='sed -n /NAME/l') öğesine beslerseniz, şöyle bir şey görürsünüz:
\033[1mNAME\033[0m$
\e[1mANSI uyumlu terminallerde kalın yazı tipini etkinleştirme \e[0msırası ve tüm SGR niteliklerini varsayılana döndürme sırası nerede .
Bu metinde grep NAME, metnin içerdiği gibi çalışır NAME, ancak metnin yalnızca bölümlerinin kalın / altı çizili olduğu yerlerde arama yaparken sorun yaşayabilirsiniz ...