我想以某种方式从搜索文件时找到的搜索结果中创建到终端中文件的链接。同样,您可以单击终端中的超链接,但在这种情况下,它将是一个文件,而不是URL。这个是可能的吗?
下面是我正在工作的命令。
grep -rnw "$2" -e "$1"..。这是我在日志中搜索"filezilla“时的截图。

我想要能够点击紫色文本,这是确切的文件位置,就像我打开一个超链接在终端内。
我在下面尝试了这个命令,但是所有这些操作都是自动打开与首选程序一起找到的每个搜索结果,在这个例子中,程序是mousepad。
grep -rnw "$2" -e "$1" | xargs mousepad发布于 2019-01-31 12:11:33
最近的终端仿真器确实在一定程度上处理超链接。如果它“知道”使用哪个程序来打开文档,那么您只需要在终端窗口中将文件名回显给stdout,前面就有正确的协议。因为我们处理的是本地文件,所以这意味着更改
/path/to/file/this.doc至
file:///path/to/file/this.doc就像一个超链接,但没有域名。如果您的shell知道如何打开文件类型,那么它将这样做。
for i in $(ls); do echo "file://$(pwd)/$i"; donectrl+click
编辑
让@tripleee从评论中获得卓越的进步并融入到答案中.
printf "file://$(pwd)/%s\n" *<#>END编辑
这将不适用于文件名中有空格的文件,因为$(ls)的扩展会产生一个由空格分隔的文件名列表。文件名中的空格<#>将使shell认为它实际上是由空格分隔的两个文件名。
my file.pdf变成了
my
file.pdf如果你在你的文件名中有空格,那么试试这个,直到你找到一个更优雅的解决方案,因为我刚刚在等待下一个问题时黑了它.;-)
for f in $(find . -type f -maxdepth 1 -iname "*" | sed 's/ /%20/g'); do echo "file://$(pwd)/${f#*/}"; done只需按照正常方式使用find来返回所需的文件。
https://unix.stackexchange.com/questions/497903
复制相似问题