【问题标题】:Unix Bash script to embolden/underline/italicize specific textUnix Bash 脚本加粗/下划线/斜体特定文本
【发布时间】:2011-05-23 19:02:03
【问题描述】:

我一直在网上搜寻可以处理基本文本样式(粗体/下划线/斜体)的 Unix Bash 脚本示例,但找不到任何东西?这样的事情可以做吗?

例如:

  1. 加粗/下划线/斜体所有以“:”结尾的行?
  2. (关闭)加粗/下划线/斜体所有以“:”结尾的行?

我想通过 Automator 将其设置为服务;所以使用/bin/bash 并对“选定的文本”进行操作(当然是在与富文本兼容的文件中)。

【问题讨论】:

    标签: bash unix coding-style richtext automator


    【解决方案1】:

    基本上,你想用样式代码声明一些变量——像这样:

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

    然后您可以使用变量调用这些以在输出中使用,如下所示:

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

    就自动将其应用于以特定字符开头的所有行而言,您最好只使用如上所示的变量。除了使用这种方法更容易之外,它也更清洁、更实用。例如,使用此方法时,您可以对给定输出字符串中的任意数量的单词进行不同的样式设置,以强调特定单词,而不是整个句子(当然,除非这是您的目标)。

    有关更多信息,您应该查看 http://tldp.org/HOWTO/Bash-Prompt-HOWTO/x405.html 和/或 ma​​n tput

    【讨论】:

    • 另外,需要注意的是,虽然 tput sgr0 确实删除了所有样式,但它并不总是按预期执行,因此最好使用“退出”代码相关到您正在使用的样式(即使用 ${underline} 开始下划线区域,然后调用 ${nounderline} 结束样式使用)。
    • 干杯,克里斯。我是 Unix Bash 的新手,只熟悉“单线”方法,所以请原谅我的无知,但是您提供的代码(带有变量等)可以在 Automator bin/bash 中使用吗?我也不明白“echo”、“$”的用法……我只见过PHP中使用的echo。
    • 您能否举一个sgr0 未按预期执行的示例?
    • bolded= `tput bold` 在定义时,它提到变量是“粗体”,但在 echo(见下文)中它被写成“粗体”,因此它不执行所需的操作。您可以通过使两者相似来纠正它。 echo "${bold}bold${normal} 文本突出!"
    • @DennisWilliamson:sgr0 将完全删除所有样式,而不仅仅是最后使用的样式。因此,例如,如果您尝试在整个字符串下划线,而在开头通过执行 ${underline}${bold}this${normal} is important${nounderline} 将单个单词加粗,${normal} 也会在该定义之后删除下划线。如果您不熟悉 sgr0,这可能会令人困惑,因此会出现意外行为。样式可以嵌套,因此执行此处示例的正确方法是${underline}${bold}this${normal}${underline} whole line is important${nounderline}
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-25
    • 1970-01-01
    • 2020-07-26
    • 1970-01-01
    • 2018-11-06
    • 1970-01-01
    相关资源
    最近更新 更多