我首先要说的是,我认为这个问题比听起来听起来要简单得多。
我需要做的是:检查PATH环境变量中的文件夹。可能在开始时或之后。我只需要验证该文件夹在那里。
我的问题的例子-让我们使用/opt/gnome
。
场景1:文件夹不在PATH的开头
# echo "$PATH"
/sbin:/usr/sbin:/opt/gnome:/var/opt/gnome
# echo "$PATH" | grep ":/opt/gnome"
/sbin:/usr/sbin:/opt/gnome:/var/opt/gnome
请注意,grep必须足够具体,以使其不会被捕获/var/opt/gnome
。因此冒号。
场景2:文件夹位于PATH的开头。
# echo "$PATH"
/opt/gnome:/sbin:/usr/sbin:/var/opt/gnome
# echo "$PATH" | grep "^/opt/gnome"
/opt/gnome:/sbin:/usr/sbin:/var/opt/gnome
这是我的问题-我需要使用此文件夹搜索冒号或行首。我想做的是以下两个括号表达式之一:
# echo $PATH | grep "[^:]/opt/gnome"
# echo $PATH | grep "[:^]/opt/gnome"
但是[^
并[:
有自己的含义。因此,以上两个命令不起作用。
有没有一种方法可以在一个命令中针对这两种情况进行grep?
grep '^\(any number of other matches:*:\)*my match\(:.*\)*$'
/opt/gnome:
或拼写/opt/gnome$
,您将找到/opt/gnome-foo
或/opt/gnome/bar
。