2010-12-10 23 views
20

Przeszukałem internet, próbując znaleźć przykłady skryptu Unix Bash, który radzi sobie z podstawową stylizacją tekstu (pogrubienie/podkreślenie/kursywa), ale nie mogę znaleźć niczego? Czy można coś takiego zrobić?Skrypt uniksowy Bash do zawiększenia/podkreślenia/zaznaczenia kursywą konkretnego tekstu

Na przykład:

  1. ośmielić/Podkreślenie/Kursywa wszystkie linie kończące się ":"?
  2. (Wyłącz) Embolden/Underline/Kursywa we wszystkich wierszach kończących się na ":"?

Chcę skonfigurować jako usługę za pośrednictwem Automatora; więc używając /bin/bash i akcji na "zaznaczony tekst" (oczywiście w pliku zgodnym z plikiem RTF).

Odpowiedz

20

Zasadniczo, chcesz zrobić zadeklarować kilka zmiennych z kodem stylizacji - coś takiego:

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

wtedy można nazwać je do stosowania w produkcji przy użyciu zmiennych, na przykład:

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

Jeśli chodzi o automatyzację, która ma zastosowanie do wszystkich linii zaczynających się od określonego znaku, lepiej jest użyć zmiennych pokazanych powyżej. Poza tym używanie tej metody jest po prostu łatwiejsze, jest także czystsze i bardziej użyteczne. Na przykład, podczas korzystania z tej metody można dowolnie stylować dowolną liczbę słów w danym ciągu wyjściowym, aby podkreślić konkretne słowo, a nie całe zdanie (chyba że to jest twój cel).

Aby uzyskać więcej informacji, należy sprawdzić http://tldp.org/HOWTO/Bash-Prompt-HOWTO/x405.html i/lub człowieka tput

+0

Ponadto, należy zauważyć, że chociaż ** tput sgr0 ** usuwa wszystkich stylizacji, to nie zawsze działają zgodnie z oczekiwaniami , więc najlepiej jest użyć kodu "exit" związanego z używanym stylem (np. za pomocą $ {underline}, aby rozpocząć obszar podkreślania, a następnie wywołanie $ {nounderline}, aby zakończyć używanie stylu). –

+0

Pozdrawiam, Chris. Jestem nowicjuszem w Uniksie Bash i tylko dobrze znam podejście "jednego liniowca", więc wybacz mi moją ignorancję, ale czy kod podany przez ciebie (wraz ze zmiennymi itp.) Może być użyty w koszu/bash Automatora? Nie rozumiem też użycia "echo", "$" ... Widziałem tylko echo używane w PHP. –

+0

Czy możesz pokazać przykład 'sgr0' nie działa zgodnie z oczekiwaniami? –