-1

我有一个文件夹,node_modules其中链接到另一个项目(使用npm link my-plugin)。让我们称之为my-plugin

当我运行时,ls node_modules我会得到一个列表,其中包含my-plugin当然包含的所有文件夹。该my-plugin文件夹具有不同的颜色(请注意它已链接)。

在此处输入图像描述

现在,我有很多文件夹,node_modules我只想获取某个文件夹,所以我使用grep. 像这样的东西:

ls node_modules | grep my-plugin

问题是grep绘制表达式,所以我错过了my-plugin.

在此处输入图像描述

问题是有时我使用链接运行我的应用程序,有时使用原始插件运行我的应用程序,所以我需要知道它现在是否链接。

我希望这很清楚。如果没有,请告诉我。

4

1 回答 1

1

的输出的颜色lsLS_COLORS环境变量确定,通常.bashrc通过评估 的输出dircolors -b或使用自定义文件来设置,如dircolors -b "$HOME/.dircolors". 我的包含,例如,

# Symbolic link
LINK 35

它将链接呈现为紫色。

另一方面,Grep 将其输出着色为由GREP_COLORS环境变量确定的。它是一串冒号分隔的功能;我的 grep 默认是

ms=01;31:mc=01;31:sl=:cx=:fn=35:ln=32:bn=32:se=36

重要的部分是ms=01;31:它设置

用于匹配选定行中的非空文本的 SGR 子字符串。

其中“SGR”是“选择图形再现”;01;31将 grep 匹配的模式设置为默认背景上的粗体红色。

因此,无论LS_COLORS您的链接目录设置为什么,grep 都将始终使用自己的颜色进行匹配,因为它无法知道它正在查看的文本是什么意思。

一种解决方法可能是过滤类型find

find node-modules -type l -name 'my-plugin'

只有当它们是链接时才会返回匹配项。

于 2018-03-13T17:08:10.837 回答