小编And*_*ohn的帖子

bash选项卡完成没有变量扩展?

假设我在这里定义了这些变量bashrc:

i='cgi-bin/internal';  
e='cgi-bin/external';  
f='cgi-bin/foo';  
b='cgi-bin/bar';  
ad='cgi-bin/admin';  
#etc...
Run Code Online (Sandbox Code Playgroud)

当我在命令行上使用变量时vim $i/edit_TAB,它将扩展变量并且命令行上的输入变为vim /www/productX/subdomain_x/cgi-bin/internal/edit_(相应于我所在的任何站点)然后我TABTAB获得可能的完成.

没关系,功能不是问题.只是每次看到完整路径而不仅仅是变量的值会变得烦人.

有没有办法不在命令行上扩展bash变量而不影响功能?
是这样做的bash完成吗?

期望的结果$i不会扩展到它的价值(视觉上)或$i扩展到相对路径而不是完整路径.

variables bash expansion bash-completion

13
推荐指数
1
解决办法
2110
查看次数

bash tee去除颜色

我目前正在使用以下内容来捕获发送到终端的所有内容并将其放入日志文件中

exec 4<&1 5<&2 1>&2>&>(tee -a $LOG_FILE)
Run Code Online (Sandbox Code Playgroud)

但是,我不希望颜色转义码/杂乱进入日志文件.所以我有类似的东西,sorta工作

exec 4<&1 5<&2 1>&2>&>(
    while read -u 0; do
        #to terminal
        echo "$REPLY"
        #to log file (color removed)
        echo "$REPLY" | sed -r 's/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g' >> $LOG_FILE
    done
    unset REPLY #tidy
)
Run Code Online (Sandbox Code Playgroud)

除了read等待回车,这对于脚本的某些部分是不理想的(例如echo -n "..."printf没有\n).


Jonathan Leffler回答的后续行动:

给出示例脚本test.sh:

#!/bin/bash

LOG_FILE="./test.log"
echo -n >$LOG_FILE

exec 4<&1 5<&2 1>&2>&>(tee -a >(sed -r 's/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g' > $LOG_FILE))


##### ##### #####
# Main

echo "starting execution"
printf "\n\n" …
Run Code Online (Sandbox Code Playgroud)

bash logging exec tee

9
推荐指数
1
解决办法
1万
查看次数

自定义Vim HTML语法

我有一个脚本,它读取HTML文件并用~%foo%~Perl设置的值替换出现的内容.像这样的东西:

<span class="~%classname%~">~%hi_mom%~</span>
Run Code Online (Sandbox Code Playgroud)

会在浏览器中产生这样的东西:

<span class="classyclass">Hello World</span>
Run Code Online (Sandbox Code Playgroud)

是的,所以我想使用Vim语法高亮来区分~%foo%~HTML中的出现.默认情况下,HTML语法突出显示将生成HTML元素的属性值Magenta,我希望该~%foo%~部分是DarkMagenta.我在正确的轨道上,因为如果我注释掉tokenQuoted线(或标记线),我会得到所需的结果,但是两个匹配和突出显示未注释,令牌突出显示会覆盖tokenQuoted突出显示.

syntax match token       containedin=ALLBUT,htmlString,htmlValue '\~%[^%]\+%\~'
syntax match tokenQuoted containedin=htmlString,htmlValue        '\~%[^%]\+%\~'
" tokenQuoted assumes htmlString/htmlValue (:highlight String) is Magenta
highlight token          term=none ctermfg=White       guifg=White
highlight tokenQuoted    term=none ctermfg=DarkMagenta guifg=DarkMagenta
Run Code Online (Sandbox Code Playgroud)

我正在使用的文件是在默认html.vim通过 autocmd *.html ~/.vim/syntax/html.vimin 来源后获取的.vimrc.

html vim syntax-highlighting vim-syntax-highlighting

7
推荐指数
1
解决办法
690
查看次数